Обходим проблему NAT в SIP при помощи SIPROXD
Рубрики: IP-телефония
11 Ноя 2015Принцип работы siproxd заключается в следующем:
Пакеты сигнализации приходящие от клиента или сервера анализируются, как на уровне ip заголовка, так и на уровне тела пакета. Siproxd способен вмешиваться в структуру SIP протокола для корректной трансляции между SIP-сервером или публичным клиентом и приватным клиентом. Аналогичным образом проксируется и RTP трафик. Siproxd ведет подробный лог в реальном времени по всем этапам соединения.
Установка, настройка и эксплуатация
На NAT-шлюзе устанавливаем программу siproxd. Для этого нам понадобится пакет исходников ядра, самого siproxd и библиотеки libosip2 (SIP-rfc3261)
Процедура установки:
tar -zvxf libosip2-2.2.0.tar.gz
cd libosip2-2.2.0 ./configure ; make; make install tar -zvxf siproxd-0.5.13.tar.gz cd siproxd-0.5.13 ./configure; make; make install |
Процедура настройки siproxd. Файл конфигурации /usr/local/etc/siproxd.conf
if_inbound = eth0
if_outbound = eth1 hosts_allow_reg = 192.168.0.0/24 sip_listen_port = 5060 daemonize = 1 silence_log = 1 log_calls = 1 user = siproxd registration_file = /var/lib/siproxd_registrations pid_file = /var/run/siproxd/siproxd.pid rtp_proxy_enable = 1 rtp_port_low = 10000 rtp_port_high = 30000 rtp_timeout = 300 default_expires = 600 debug_level = 0 debug_port = 0 |
Существует два варианта развития событий:
Первый вариант с использованием iptables, применив правило заворачивающее пакеты, предназначенные для SIP-сервера, на локальный порт siproxd.
iptables -t nat -A PREROUTING -m udp -p udp -i eth0 —dport 5060 -j REDIRECT
Второй, внести изменения в настройки конфигурации ip телефонов, указав в них дополнительно outbound proxy и outbound port
IP Address: 192.168.0.30
Subnet Mask: 255.255.255.0
Default Router: 192.168.0.1
SIP Server: ip.sip.server
Outbound Proxy: 192.168.0.1
Outbound Port: 5060
Схема с применением siproxd вполне работоспособна и прошла тестирование в следующей конфигурации:
- tel-1 и tel-2 регистрируются на SIP-сервере (без ошибок с высокой скоростью)
- tel-1 и tel-2 независимо друг от друга прослушивают голосовое меню на SIP-сервере (нормальное качество)
- tel-1 вызывает tel-2, тот в свою очередь отвечают и они обмениваются голосовым трафиком (нормальное качество)
- tel-x вызывает либо tel-1, либо tel-2, после ответа происходит обмен голосовым трафиком (нормальное качество)
tel-1 и tel-2 – программные клиенты
tel-x – аппаратный телефон
- Комментарии к записи Обходим проблему NAT в SIP при помощи SIPROXD отключены
Возможность комментирования закрыта модератором.