Решение проблем при размещении Cisco 7942G за NAT’ом

Весьма проблематично заставить работать телефон Cisco 7942 или Cisco 7962, если он находится за NAT-ом. Телефон не может выполнить регистрацию, а без этого не получится ни звонить, ни принимать звонки.

Проблема вызвана некоторыми особенностями в реализации SIP-стека на телефонах, которые интеграторы телефонии на Asterisk называют багами, а сами Cisco-разработчики называют фичей. Речь идет о инициирующих SIP-портах, которые начинаются с 49000.

При подключении из-за NAT, сервер Asterisk считает пир nat=yes устройством, из-за чего использует симметричный SIP/RTP и шлет ответы ровно на тот порт, с которого пришло соединение. Но на деле сама Cisco 7942 ждет ответа не на порту отправления, а на порту 5060, а точнее, на порту, указанном в <voipControlPort>. Из-за различия портов связь установить не удается, а сама Cisco 7942 упорно отвечает сообщениями типа ICMP Port Unreachable.

Решение проблемы:

1. (Опционально) Указать в теге <voipControlPort> порт, отличный от 5060. Например, 5091. Это связано с тем. что в дальнейшем мы этот порт будем пробрасывать на роутере.

2. Закрепить Cisco 7942 на статическом IP-адресе, либо присвоить статическую аренду на DHCP-сервере.

3. Прописать секцию
<natEnabled>false</natEnabled>
<natAddress></natAddress>

4. На сервере Asterisk в настройках экстеншена прописать опцию nat=no

5. На роутере, который пускает телефон в Интернет, прописать статический проброс UDP порта, который у вас указан в <voipControlPort> на внутренний IP телефона Cisco 7942G. Как правило, эта секция в веб-интерфейсе роутера называется «Virtual Server» или «NAT 1:1».

6. Перезагрузить телефон нажатием Settings-> **#**.
Убедиться, что телефон работает. Если чуда не случилось, то поможет разобраться в проблеме tcpdump. Возможно, будет иметь смысл игра с опиями nat=no и nat=never

* — Надо заметить, что IP может быть и динамическим. В этом случае нужно будет настроить роутер так, чтобы он обновлял динамическую DNS-запись, например, на сервисе DynDNS. Тогда в это поле вписывается FQDN-запись вида <natAddress>somename.dyndns.org</natAddress>. При этом нужно учитывать, что телефон резолвит это имя в IP всего один раз, при старте телефона. Если внешний IP изменится, телефон об этом не узнает, из-за чего будут наблюдаться проблемы односторонней слышимости или отсутствия регистрации.

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *