Asterisk может выступать как SIP клиент и как SIP сервер. Как клиент подключение настраивается указанием type=peer (или type=friend) в секции описания пира в sip.conf. Опционально можно использовать строку register=> для указания динамической регистрации на стороннем сервере. Asterisk в качестве SIP сервера может подключать к себе клиентов (SIP софт- или хард- ИП телефоны) указанием для каждого username, secret (и опять же type=peer или type=friend) в секции клиента файла sip.conf.

Сценарии SIP подключений Asterisk в сетях с использованием Network Address Translation (NAT) можно обобщить в следующих девяти сценариях:

  1. Asterisk как SIP клиент за NAT, подключается к SIP прокси серверу на публичном ИП адресе
  2. Asterisk как SIP клиент за NAT, подключается к SIP прокси серверу на внутреннем ИП адресе
  3. Asterisk как SIP сервер за NAT, клиент на публичном ИП адресе подключается к Asterisk
  4. Asterisk как SIP сервер за NAT, клиент снаружи подключается к Asterisk из-за другого NAT
  5. Asterisk как SIP сервер за NAT, клиент изнутри подключается к Asterisk
  6. Asterisk как SIP клиент на публичном адресе, подключается к SIP прокси серверу на публичном ИП адресе
  7. Asterisk как SIP клиент на публичном адресе, подключается к SIP прокси серверу за NAT
  8. Asterisk как SIP сервер на публичном адресе, клиент на публичном ИП адресе подключается к Asterisk
  9. Asterisk как SIP сервер на публичном адресе, клиент из-за NAT подключается к Asterisk

Каждый из возможных сценариев может заработать, но это зависит от клиента, типа NAT, типа сервера и множества других факторов. SIP как peer-to-peer протокол упрощает соединения через NAT и делает возможными подключения клиентов изнутри, за NAT - к серверу на публичном ИП адресе и не допускает подключений клиентов с публичных ИП адресов к серверу, расположенному за NAT.

  • #1 работает для прокси-серверов, поддерживающих NAT, таких как SIP Express router (OpenSER, Kamailio) в качестве внешнего сервера. (Точно работает с sipnet.ru например).
  • #2 работает всегда, так как между ними нет NAT.
  • #3 работает с пробросом портов и неоторыми манипуляциями с заголовками SIP пакетов**.
  • #4 работает с пробросом портов. STUN на стороне клиента и тонкие настройки портов RTP, инструкция прилагается >>
  • #5 работает всегда, так как между ними нет NAT.
  • #6 работает всегда, так как между ними нет NAT.
  • #7 проблемно, если нет проброса портов, возможно настроить так же как сценарий №3
  • #8 работает всегда, так как между ними нет NAT.
  • #9 решается в большинстве случаев с помощью nat=yes и qualify=xxx в sip.conf для клиента. Некоторые клиенты (X-lite) упрощают подключение с помощью встроенных функций STUN и посылки UDP пакетов keep-alive. Опция qualify же напротив, посылает пакеты keep-alive со стороны Asterisk клиенту за NAT.