IP-телефон за брандмауэром на FreeBSD - IPFilter - PullRequest
0 голосов
/ 18 ноября 2011

Я установил брандмауэр на FreeBSD 8.2 с использованием ipf + ipnat, а также SQUID 2.7 в качестве веб-прокси

Все пользователи могут получить доступ к Интернету нормально, но моя большая проблема - IP-телефоны, они пытаются получить доступ к sip-серверу в Интернете (услуга внешнего провайдера), они не могут установить соединение.

порты, используемые для службы sip: SIP: порт 5060-5070 UDP / TCP RTP (голосовой) трафик: порты 10000-20000 UDP

Это моя текущая конфигурация системы, что-то не так, но я не знаю, что

Интерфейсы: rl0 = LAN office 192.168.10.x bge0 = WAN интернет-соединение

rc.conf:

squid_enable="YES"
ipfilter_enable="YES"
ipfilter_rules="/etc/ipf.rules"
ipmon_enable="YES"
ipmon_flags="-Ds"
gateway_enable="YES"
ipnat_enable="YES"
ipnat_rules="/etc/ipnat.rules"

ipf.rules:

pass out quick on rl0 all
pass in quick on rl0 all

pass out quick on bge0 all
pass in quick on bge0 all

pass in quick on lo0 all
pass out quick on lo0 all

Я открыл весь трафик на оба интерфейса (временно), но не получил хорошего результата, все ip-телефоны еще не работают

ipnat.rules:

rdr rl0 0.0.0.0/0 port 80 -> 127.0.0.1 port 8080 tcp # transparent proxy
rdr bge0 0.0.0.0/0 port 22 -> 127.0.0.1 port 22 tcp # ssh server
map bge0 192.168.10.0/16 -> 0.0.0.0/32 proxy port ftp ftp/tcp
map bge0 192.168.10.0/16 -> 0.0.0.0/32 portmap tcp/udp auto
map bge0 192.168.10.0/16 -> 0.0.0.0/32

все ip-телефоны и компьютеры имеют статический ip, сервер freebsd в качестве шлюза и действительный DNS-сервер.

Ответы [ 2 ]

2 голосов
/ 21 ноября 2011

SIP-телефонам за NAT требуется STUN-сервер для работы.

(Либо используйте тот, что предоставлен вашим провайдером sip, либо попробуйте net / stund из коллекции портов)

Если у вас только один телефон, вы также можете попробовать переадресацию портов:

#SIP
#rdr pass on $ext_if proto tcp from any to $ext_addr port = 5060 -> \
    $IP_PHONE port 5060
#RTP
#rdr pass on $ext_if proto tcp from any to $ext_addr port = 5004 -> \
#        $IP_PHONE port 5004
#stun
#rdr pass on $ext_if proto tcp from any to $ext_addr port = 10000 -> \
 #        $IP_PHONE port 10000
1 голос
/ 08 марта 2012

Первым вариантом должен быть SIP Express Router или SER. Сайт будет отличным местом для начала.В противном случае (по какой-то причине вы не можете установить его), вам, вероятно, придется перейти на старое обучение.

Проблема, с которой вы, вероятно, сталкиваетесь, заключается в том, что входящие соединения с телефоном исходят извнесеть, поэтому нет порта "сохранен" для входящего трафика.Вы можете преодолеть некоторые из них, регулярно регистрируясь, или вы можете настроить свой брандмауэр и конфигурации NAT для передачи трафика от вашего провайдера на конкретный телефон, но это оставляет вас только с одним телефоном, устанавливающим соединение.Вам необходимо настроить своего вышестоящего провайдера так, чтобы он отправлял соединения каждого телефона через отдельный порт и связывал этот порт с определенным IP-адресом и портом.Например:

rdr rtk0 123.123.123.123/32 port 5061 -> 192.168.100.11 port 5061 udp
rdr rtk0 123.123.123.123/32 port 5062 -> 192.168.100.12 port 5062 udp
etc. 

, где 123.123.123.123 - адрес хоста SIP вашего провайдера.Настройте свои телефоны таким образом, чтобы они общались через порт 5060 + также с некоторым смещением.

Даже если это поможет вам с вашими подключениями, вы все равно можете столкнуться с проблемами RTP.STUN поможет в этом, но вам может понадобиться ограничить SIP-телефоны, чтобы их RTP-порты были уникальными (чтобы трафик с одного телефона внезапно не начал появляться на другом).Диапазоны портов для SIP и RTP смехотворно огромны - вы можете ограничить свои телефоны, скажем, до 10 на телефон и покрыть большую площадь без особых проблем.Это выглядело бы примерно так:

rdr rtk0 123.123.123.123/32 port 10000-10009 -> 192.168.100.11 port 10000 udp
rdr rtk0 123.123.123.123/32 port 10010-10019 -> 192.168.100.12 port 10010 udp

Установите диапазоны RTP вашего телефона на их уникальные диапазоны, и вы должны быть относительно хороши.

Обратите внимание, что использование адреса сервера SIP в RDRделает это гораздо менее рискованным, чем перенаправление общего 0.0.0.0/0 адреса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...