MangoWiki - Наши знания для Вашего удобства

Connecting through a router with NAT

Материал из MangoWiki
Перейти к: навигация, поиск

Подключение через маршрутизатор с NAT

SIP-телефон или SIP-адаптер часто приходится подключать к Интернет через маршрутизатор с функцией NAT. В качестве маршрутизатора может выступать либо DSL-модем либо отдельное устройство.


Нет острой необходимости делать «исправление» NAT на стороне абонента, за него это сделает сервер MANGOSIP.RU. Важно, чтобы внутренний (приватный) адрес SIP-агента был назначен из правильного диапазона адресов согласно RFC 1918, при использовании других адресов «исправления» NAT на стороне mangosip.ru  не происходит и возникают различные проблемы, например, с односторонней слышимостью, входящими вызовами и проч.

«Правильные» внутренние адреса:

  • 10.0.0.0 - 10.255.255.255 (10/8 prefix)
  • 172.16.0.0 - 172.31.255.255 (172.16/12 prefix)
  • 192.168.0.0 - 192.168.255.255 (192.168/16 prefix)


При работе через NAT также можно использовать STUN-сервер, например mangosip.ru или другой доступный сервер. Некоторые программы и устройства умеют определять адрес STUN-сервера автоматически. Технология STUN позволяет SIP-устройству узнать свой внешний (публичный) IP-адрес а также определить, как именно работает механизм NAT между ним и Интернетом. Если тип используемого NAT'а "symmetric" - STUN не поможет.

Если маршрутизатор имеет встроенную поддержку протокола SIP (т.наз. SIP ALG), то в этом случае, как правило, включение STUN только мешает.

«Исправление» NAT на клиентской стороне за счёт использования SIP ALG в маршрутизаторе или путем использования STUN в SIP-программе или устройстве позволяет избежать проксирования трафика в MANGOSIP.RU что в ряде случаев может дать лучшее качество передачи голоса.


Обратите внимание:

  • SIP ALG в маршрутизаторах, как правило, работают некорректно, так называемую "поддержку SIP" следует, по возможности, отключать. Рекомендации для ZyXEL можно найти здесь, для TP-Link - здесь, для некоторых других маршрутизаторов - здесь. При невозможности отключить SIP ALG рекомендуется (по возможности) выбрать в настройках SIP-программы или устройства протокол UDP в качестве транспорта для SIP.
  • В зависимости от конкретной реализации STUN-клиента в программе/устройстве, от типа используемого NAT'а, от задержек в сети и прочих факторов включение STUN может привести к нежелательным последствиям. Рекомендуется с осторожностью подходить к использованию этой технологии.

Входящие вызовы

Делать на DSL-модеме или маршрутизаторе «проброс портов», «port forwarding» или «virtual server» для сигнализации и RTP-трафика в подавляющем большинстве случаев не требуется. Согласно принципу своей работы, любое NAT-устройство не пропускает новые входящие соединения извне. Для того, чтобы это не мешало входящему трафику SIP-сигнализации, необходимо чтобы SIP-устройство или программа периодически генерировали трафик из внутренней сети наружу. Обычно это обеспечивается путем регулярной (каждые 20-170 сек) отправки keepalive пакетов. «Проброс» порта сигнализации позволяет избежать отправки keepalive пакетов и может быть рекомендован только в том случае, если никаким другим способом не удалось добиться устойчивого прохождения входящих вызовов. При подключении через двойной NAT "проброс" портов лишь на одном из NAT-устройств не решает проблему.


Если входящие вызовы на SIP-устройство или программу не проходят вообще или проходят только в течение короткого промежутка времени (обычно < 3-5 минут) после включения или перезагрузки SIP-агента либо после исходящего вызова с него, то:

  • необходимо убедиться в том, что устройство (или программа) успешно регистрируется на сервере; статус регистрации следует проверять  в программе или устройстве,
  • необходимо включить механизм keepalive (на SIP-агенте)
  • либо уменьшить интервал keepalive, если механизм keepalive уже был включён ранее
  • если устройство не имеет функции keepalive, то можно попробовать уменьшить интервал перерегистрации (Register Expire) до значения, чуть меньшего чем то время, в течение которого вызовы проходят; не устанавливайте интервал перерегистрации менее 60 секунд!
  • либо настроить «port forwarding» (на маршрутизаторе) для того порта, который фактически используется клиентской стороной для сигнализации SIP
  • необходимо убедиться, что входящим соединениям не мешает встроенный в маршрутизатор firewall.


По умолчанию, как правило, на клиентской стороне для сигнализации SIP используется порт 5060/UDP, однако программные и аппаратные устройства SIP-телефонии позволяют менять это значение или же выбирать этот порт динамически.