Настроил простую конфигурацию, в локальной сети все работает без проблем. Теперь хочу настроить работу за NAT. Понимаю, что вопрос с бородой, в Интернете кучу ответов про directmedia=no и nat=force_rport,comedia перерыл, но пока мне это не помогло. Просто описываю, что я сделал и готовлюсь к пинкам. Просьба по голове не бить.
1) Asterisk13 на машине за роутером, на роутере NAT, роутер смотрит в Интернет, с dyndns.
2) на роутере пробросил порт sip и 10000-20000
3) в sip.conf задал:
externhost=<my_dyndns_name>:<my_port>
externrefresh=30
...
qualify=yes
directmedia=no
canreinvite=no
nat=force_rport,comedia
4) настроил echo-номер для тестов (локально он работает, опять же, без проблем)
Итак, сервер смотрит в интернет через NAT, абоненты - телефоны с CSipSimple. Проверяю, что на телефонах работает SIPNET, то есть сотовый оператор не блокирует.
Телефон сервер видит, на сервере регистрируется. Звоню на эхо-номер, звонок идет, но звука нет.
Смотрю:
Код: Выделить всё
CLI> sip show peers
Name/username Host Dyn Forcerport Comedia ACL Port Status Description
100/100 217.66.156.160 D Yes Yes 16705 OK (1767 ms)
101/101 (Unspecified) D Yes Yes 0 UNKNOWN
102 (Unspecified) D Yes Yes 0 UNKNOWN
Включил дебаг, вижу, что sip пакеты бегут, а rtp - нет, только несколько:
Sent Comfort Noise RTP packet to 217.66.156.160:9969 (type 02, seq 006061, ts 000000, len 000001)
Записал дамп трафика при звонке на эхо, вот так оно работает в локальной сети: А вот так через NAT: Invite вблизи: Серым закрашено имя моего сервера (порт 5947 вместо 5060, но это не влияет, в конфигах поправил везде). Зеленый - внешний адрес телефона (верный), красным - какой-то левый внутренний адрес оператора. Но по второй картинке видно, что RTP пакет с Comfort Noise (CN) идет куда надо - на 217.66.156.160. Правда, я его все равно не слышу, как и приветствия echo-номера.
На телефоне в CSipSimple включал STUN. Менял транспорт tcp/udp в настройках и там, и там. Роутер номера портов при пробросе не меняет. На всякий случай попробовал сделать "открытый сервер", то есть проброс не указанных, а всех портов на заданную машину. Ничего не поменялось.