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) можно обобщить в следующих девяти сценариях:
Каждый из возможных сценариев может заработать, но это зависит от клиента, типа NAT, типа сервера и множества других факторов. SIP как peer-to-peer протокол упрощает соединения через NAT и делает возможными подключения клиентов изнутри, за NAT - к серверу на публичном ИП адресе и не допускает подключений клиентов с публичных ИП адресов к серверу, расположенному за NAT.
Сценарии SIP подключений Asterisk в сетях с использованием Network Address Translation (NAT) можно обобщить в следующих девяти сценариях:
- Asterisk как SIP клиент за NAT, подключается к SIP прокси серверу на публичном ИП адресе
- Asterisk как SIP клиент за NAT, подключается к SIP прокси серверу на внутреннем ИП адресе
- Asterisk как SIP сервер за NAT, клиент на публичном ИП адресе подключается к Asterisk
- Asterisk как SIP сервер за NAT, клиент снаружи подключается к Asterisk из-за другого NAT
- Asterisk как SIP сервер за NAT, клиент изнутри подключается к Asterisk
- Asterisk как SIP клиент на публичном адресе, подключается к SIP прокси серверу на публичном ИП адресе
- Asterisk как SIP клиент на публичном адресе, подключается к SIP прокси серверу за NAT
- Asterisk как SIP сервер на публичном адресе, клиент на публичном ИП адресе подключается к Asterisk
- 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.