ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Софтфон за NAT, Asterisk в интернете, не работает.

Проблемы и их решения Asterisk как такового

Модераторы: april22, Zavr2008

Софтфон за NAT, Asterisk в интернете, не работает.

Сообщение aclz » 08 окт 2021, 19:54

Суть в двух словах:
Есть Астериск 18 (chan_pjsip), есть клиент за NAT'ом (PhonerLite) на TLS, в нем прописан STUN.
В Астериске из настроек, касающихся сабжа, стоит max_contacts=1, rewrite_contact='yes'.

Клиент регистрируется на Астериске. В фазе REGISTER клиент в поле Contact отдает серверу вместо своих локальных корректные внешние IP и порт маршрутизатора (получающиеся после прохождения им NAT и определенные STUN-сервером). Поэтому Астериск в своих ответах на REGISTER, успешно коммуницирует с клиентом через эти IP и порт (роутер пробрасывает с этого порта пакеты на рабочую станцию клиента на порт софтфона).

Но когда проходит входящий вызов от другого клиена, находящегося, скажем, в одной локалке с Астериском, то софтфон за NAT, после пришедшего INVITE отправляя на Астериск RINGING и все последующие сообщения, в поле Contact уже указывает не тот динамический порт на маршрутизаторе из первого шага, а свой локальный порт для входящих SIP-соединений (5061). IP при этом по прежнему шлется внешний, тут все ок.

Ну и понятно, что после этого Астериск начинает слать все SIP-сообщения на клиента за NAT'ом уже на этот порт, о котором маршрутизатор с NAT'ом знать ничего не знают, поэтому и дропает все эти пакеты, вплоть до BYE. Поэтому когда вызывающий абонент кладет трубку, софтфон за NAT это не видит (секунды разговора продолжают идти).

Хочу понять, это косяк Астериска, косяк софтфона, особенности реализации SIP, и каков минимальный набор костылей нужно городить, чтобы это обойти (при условии, что настройки роутера нам недоступны, типа поднятия UPnP NAT, проброса индивидуальных портов до каждого софтфона итп), или просто руки кривые.
И да, вопрос ни коим образом не касается RTP/SRTP и его настроек (голос ходит нормально), вопрос исключительно по обрыву сигнализации по направлении от Астера к клиенту с момента установки голосового соединения (от клиента на Астер пакеты продолжают ходить, поэтому, если трубку кладет вызываемый абонент за NAT, у вызывающего, который звонит из локалки Астериска, не преодолевая NAT, звонок успешно прекращается).
aclz
 
Сообщений: 14
Зарегистрирован: 03 апр 2014, 19:07

Re: Софтфон за NAT, Asterisk в интернете, не работает.

Сообщение Zavr2008 » 09 окт 2021, 20:06

Умиляют меня нигилисты от телефонии, ставят Asterisk 18 с PJSIP, конфигов и pjsip отладку не выкладывают, хотят лечение по фотографии)

А потом
Хочу понять, это косяк Астериска


FreePBX?
Российские шлюзы E1 Alvis-GW. Модернизация УПАТС с E1, Установка FreePBX, Системы антифрод "в разрыв" потоков E1 PRI / SS#7 ISUP.
Аватар пользователя
Zavr2008
 
Сообщений: 2162
Зарегистрирован: 27 янв 2011, 01:35

Re: Софтфон за NAT, Asterisk в интернете, не работает.

Сообщение aclz » 10 окт 2021, 02:47

Каких конфигов вам отвесить? У меня файлов конфигов как таковых почти нету (всё в realtime), астер собран из сырцов с pj-bundled (FreePBX и подобным тем более не увлекаюсь), значения параметров, влияющие на сабж я уже привел, поэтому вываливать портянки прям всего подряд не вижу смысла, а что-то конкретное - пожалуйста, скажите только чего.

Последний раз работал с NAT когда-то еще в эпоху chan_sip.so лет 7 назад, и там всё заводилось с полпинка, а с pjsip как-то всё и грустно, и в интернетах пусто (все мануалы под копирку про поставить rtp_symmetric=yes, force_rport=yes и вот это вот всё, и якобы будет работать). При этом, сами разрабы астера пишут, что астер с pjsip не реюзает уже существующие TLS-соединения с пирами, и при инвайтах может создавать новые. И каким образом при всём при этом должен хотя бы в теории работать траверс нат я ума не приложу.
Последний раз редактировалось aclz 10 окт 2021, 03:08, всего редактировалось 3 раз(а).
aclz
 
Сообщений: 14
Зарегистрирован: 03 апр 2014, 19:07

Re: Софтфон за NAT, Asterisk в интернете, не работает.

Сообщение aclz » 10 окт 2021, 02:58

Вот куски логов SIP, но в них вы не найдете особо ничего нового относительно первого поста.

Софтфон IP:port (TLS): 192.168.0.1:5061
PBX IP:port: 1.2.3.4:5061
Экстеншен софтфона: 90000
Исходящий локальный порт софтфона при установке TLS-сессии: 192.168.0.1:56789
Внешний ИП и порт софтфона после преодоления NAT: 100.100.100.100:60000

REGISTER от софтфона:

Код: выделить все
REGISTER sip:1.2.3.4 SIP/2.0
Via: SIP/2.0/TLS 100.100.100.100:60000;rport
Contact: <sip:90000@100.100.100.100:60000;transport=tls>

Видим, что софтфон успешно определил свои IP и порт через STUN (100.100.100.100:60000) и послал их серверу в поле Contact.
-------------------------------------------

Астер отвечает успехом регистрации:

Код: выделить все
SIP/2.0 200 OK
Via: SIP/2.0/TLS 100.100.100.100:60000;rport=60000
Contact: <sip:90000@100.100.100.100:60000;transport=tls>

Астер шлет ответ на 100.100.100.100:60000, что делает возможным преодоление NAT, роутер пересылает их на локальный ип и порт софтфона (192.168.0.1:56789)
-------------------------------------------

Спустя какое-то время на софтфон приходит входящий звонок:


Код: выделить все
INVITE sip:90000@100.100.100.100:60000;transport=tls SIP/2.0
Via: SIP/2.0/TLS 1.2.3.4:5061;rport;
Contact: <sip:asterisk@1.2.3.4:5061;transport=TLS>

Пока всё нормально, Астер опять шлет пакеты на 100.100.100.100:60000, используя установленное соединение, преодолевая тем самым NAT.
-------------------------------------------

Софтфон сигнализирует АТС, что звонит звонок:

Код: выделить все
SIP/2.0 180 Ringing
Via: SIP/2.0/TLS 1.2.3.4:5061;rport=5061;
Contact: <sip:90000@100.100.100.100:5061;transport=tls>

А вот тепер софтфон анонсирует АТС свой локальный порт (но внешний ИП): "100.100.100.100:5061".

Всё. Дальше Астер будет слать весь SIP на 100.100.100.100:5061, а роутер будет эти пакеты дропать, т.к. по этому порту нет активной TCP-сессии, соответственно роутер не знает куда их дальшефорвардить в локалку. SRTP на этот момент уже пошел на отдельном порту, поэтому голос мы слышим, но когда, например, удаленный абонент положит трубку, BYE мы не получим, и так и будем продолжать слушать тишину разговора.
aclz
 
Сообщений: 14
Зарегистрирован: 03 апр 2014, 19:07

Re: Софтфон за NAT, Asterisk в интернете, не работает.

Сообщение Zavr2008 » 10 окт 2021, 19:36

Каких конфигов вам отвесить?

После подобного помогать желание как-то отпало.
Так и есть, realtime, pjsip, asterisk 18 самосбор, tls, локальные адреса замалеваны - все намешано в кучу.
Понимать ничего не хочу, астериск же глючный..

А теперь к делу:
Просто делаете ОТДЕЛЬНЫЙ сетап, на том же freepbx distro или из пакетов на asterisk 16.
Без извратов всяких, без tls и прочего - МИНИМАЛЬНУЮ конфигурацию и пробуете повторить данную проблему.
Если проблема осталась - выкладываете нормальные конфиги pjsip и отладку (pjsip set logger host <ip>).
PJSIP хоть и позиционируется и пиарится сангомой как замена SIP, но иногда есть еще темные пятна.
Российские шлюзы E1 Alvis-GW. Модернизация УПАТС с E1, Установка FreePBX, Системы антифрод "в разрыв" потоков E1 PRI / SS#7 ISUP.
Аватар пользователя
Zavr2008
 
Сообщений: 2162
Зарегистрирован: 27 янв 2011, 01:35

Re: Софтфон за NAT, Asterisk в интернете, не работает.

Сообщение aclz » 10 окт 2021, 19:56

А теперь к делу:
Просто делаете ОТДЕЛЬНЫЙ сетап, на том же freepbx distro или из пакетов на asterisk 16.
Без извратов всяких, без tls и прочего - МИНИМАЛЬНУЮ конфигурацию и пробуете повторить данную проблему.

Скажите, у вас Астер на TLS и PJSIP работает с клиентами, находящимися за чистым NAT'ом (без извращений типа uPNP и пробросов портов)?
aclz
 
Сообщений: 14
Зарегистрирован: 03 апр 2014, 19:07

Re: Софтфон за NAT, Asterisk в интернете, не работает.

Сообщение Zavr2008 » 10 окт 2021, 21:40

Еще и лентяй)
Российские шлюзы E1 Alvis-GW. Модернизация УПАТС с E1, Установка FreePBX, Системы антифрод "в разрыв" потоков E1 PRI / SS#7 ISUP.
Аватар пользователя
Zavr2008
 
Сообщений: 2162
Зарегистрирован: 27 янв 2011, 01:35

Re: Софтфон за NAT, Asterisk в интернете, не работает.

Сообщение aclz » 10 окт 2021, 23:29

Дело в том, что вы, похоже, не поняли вопроса, вам нужны какие-то конфиги, зачем-то установка FreePBX и подобн. nonsence, когда мой вопрос сугубо теоретический, не связан с конфигами и моей инсталляцией вообще. Какое-то подобие управления сабжем я нашел лишь в api pjsip (взаимодействие с коим через конфиги астера недоступно, насколько я понимаю только правкой сырцов), в астере на уровне конфигов настроек, управляющих сабжем просто нет (во всяком случае, в ps_endpoints, ps_aors и конфиге транспортов я относящихся к сабжу настроек, кроме означенных выше, не нашел). Поэтому вместо лишней траты времени, хочется "спорить о вкусе устриц с теми, кто их ел".
aclz
 
Сообщений: 14
Зарегистрирован: 03 апр 2014, 19:07

Re: Софтфон за NAT, Asterisk в интернете, не работает.

Сообщение Zavr2008 » 11 окт 2021, 04:25

Наоборот, дилетанты вроде вас всегда ставят последний астер, собирают сами, еще и реалайм и потом пишут всякую чушь.
Ни у кого нет желание разбираться в анании что сами и развели.
Выполните мои рекомендации со стабильной проверенной сборкой и простыми конфигами (статическими) и можно будет продолжить .

спорить о вкусе устриц с теми, кто их ел

Ага, конечно ни я ни остальные ничего не понимаем в астере. И еще он - глючный.
Российские шлюзы E1 Alvis-GW. Модернизация УПАТС с E1, Установка FreePBX, Системы антифрод "в разрыв" потоков E1 PRI / SS#7 ISUP.
Аватар пользователя
Zavr2008
 
Сообщений: 2162
Зарегистрирован: 27 янв 2011, 01:35

Re: Софтфон за NAT, Asterisk в интернете, не работает.

Сообщение Zavr2008 » 11 окт 2021, 04:34

rewrite_contact — Определите, будут ли запросы SIP отправляться на исходный IP-адрес и порт вместо адреса, предоставленного конечной точкой.
direct_media — Определяет, может ли носитель передаваться напрямую между конечными точками.
Российские шлюзы E1 Alvis-GW. Модернизация УПАТС с E1, Установка FreePBX, Системы антифрод "в разрыв" потоков E1 PRI / SS#7 ISUP.
Аватар пользователя
Zavr2008
 
Сообщений: 2162
Зарегистрирован: 27 янв 2011, 01:35

След.

Вернуться в Конфигурация и настройка Asterisk

Кто сейчас на форуме

Сейчас этот форум просматривают: Google [Bot] и гости: 29

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH