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

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


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

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

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, что в ряде случаев может дать лучшее качество передачи голоса.

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

SIP ALG в маршрутизаторе может работать некорректно, может потребоваться отключить в нём поддержку протокола 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-телефонии позволяют менять это значение или же выбирать этот порт динамически.