Здравствуйте. Elastix 2.4.0 1. Asterisk 1.8.20.
Два транка: sipnet.ru и городской sip Ростелекома.
Две сетевые карты
eth0 - локальная сеть (ip:192.168.0.10/24 gw:192.168.0.1).
eth1 - сеть Ростелекома (172.16.x.50/24 gw:172.16.x.1)
, сервер sip 10.yyy.xxx.100.
Маршрут по умолчанию прописал 192.168.0.1, а так же статический маршрут в файле route-eth1 "route add -net 10.yyy.xxx.0/24 gw 172.16.x.1"
в sip_general_custom добавил
externip=yy.xx.cc.ff
localnet=192.168.0.0/255.255.255.0
nat=yes
canreinvite=no
sip show registry показывает транк РТ registered. Входящие вызовы на транк РТ приходят, но голос идет только в сторону asteriska, обратно тишина. Исходящие не идут. Итог пакеты со стороны РТ знают куда идти, а со стороны астрериска не знают.
Аппаратный sip телефон к сети РТ подключал - входящие/исходящие вызовы работают. Голос идет в обе стороны.
Секаса мана нясяльнике.... Кароч смотреть дебаг и анализировать дампы, а что не так тыкать носом поддержку. Единого рецепта нет - Ростелегом свои ху*нявеи в разных регионах настраивает по разному и кривизна везде разная, но суровая. Опробовано на куче клиентов из разных регионов.
Параметр nat выставьте в "no". Видимо не все понимают работу этого параметра. Укажите externaddr = <ваш внешний IP> На роутере пробросьте UDP порты для RTP. Диапазон пробрасываемых портов можно узнать в конфиге rtp.conf. Можете вовсе в DMZ астериск поставить но не секюрно совсем.
Написали полную ерунду..: в сеть 172.xxx.xxx.xxx и так NAT нет, поскольку ТС последовал совету meral и прописал ее в localnet - там отдельная сетевуха и никакого роутика НЕТ, а глобально nat=no не позволит работать с sipnet (через GW 192.168.0.1/nat). Кроме всего прочего, видны и пробелы понимания работы с транком при регистрации - НЕ НУЖНО только ради этого порты пробрасывать никакие.. Нужно просто делать всё правильно, отключить SIP ALG, прописать верно localnet/externip, directmedia=no. Сколько уже можно об этом?
Zavr2008 ( 2015-11-20 05:19:18 +0400 )редактироватьДля всех кто сюда забредет совет - если воткнули в астер вторую сетевуху в серую сетку прова - НЕ ДОВЕРЯЙТЕ ЕЙ!!! Обязательно защиту, оттуда получить попадос на Сомали - шансов много.
Zavr2008 ( 2015-11-20 05:23:30 +0400 )редактироватьдобавил externip=yy.xx.cc.ff
Asterisk 1.8.20.
Нужно прописывать externhost=, поскольку параметр externip= в 1.8 уже больше не поддерживается.
Также советую у САМОГО пира поставить directmedia=no, поскольку canreinvite тоже почил в бозе да еще и ставить глобально вредно.
что "Аппаратный sip телефон к сети РТ подключал - входящие/исходящие вызовы работают. Голос идет в обе стороны." - это хорошо. Только нужно было - софтфон и в параллель wireshark. Берем и дальше сравниваем заголовки у INVITE. Это я к тому, что "исходящие не идут".
Zavr2008 ( 2014-01-20 19:42:44 +0400 )редактироватьм. а откуда вы взяли эту странную инфу вообще. специально проверил в исходнике if (!strcasecmp(v->name, "externaddr") || !strcasecmp(v->name, "externip")) {
meral ( 2014-01-22 01:49:35 +0400 )редактироватьпроверил также в астериск 11. ничего не поменялося, тот же кусок кода присутвует. короче, не уверены - не пишите.
meral ( 2014-01-22 01:51:43 +0400 )редактироватьточно КАК? я вам выше вон скопировал кусок кода из 1.8. где вы вообще эту инфу нашли то? исходник посмотриет чтоли.
meral ( 2014-01-22 13:29:38 +0400 )редактироватьДля этого нужно быть программистом уважаемый, и не смотреть только в одно место кода.
Zavr2008 ( 2014-01-31 14:04:53 +0400 )редактироватьну да. а я не программист. короче, почему в заблуждение народ вводите? астериск во всех версиях старше 1.8 externip парсит и понимает.
meral ( 2014-01-31 16:30:23 +0400 )редактироватьпосотрите вот это
http://asterisk-support.ru/question/38386/kak-poniat-chto-proiskhodit-na-asteriske/
валидные опции для нат сейчас вот такие.
; nat = no ; Do no special NAT handling other than RFC3581
; nat = force_rport ; Pretend there was an rport parameter even if there wasn't
; nat = comedia ; Send media to the port Asterisk received it from regardless
; ; of where the SDP says to send it.
; nat = auto_force_rport ; Set the force_rport option if Asterisk detects NAT (default)
; nat = auto_comedia ; Set the comedia option if Asterisk detects NAT
; The nat settings can be combined. For example, to set both force_rport and comedia
; one would set nat=force_rport,comedia.
соответвенно попробуйте другие варианты. также попроюуйте пробросить rtp порты.
кстати вам надо еще похоже сеть ростелекома в localnet добавить. ибо иначе астериск выдаст туда адрес yy.xx.cc.ff
meral ( 2014-01-22 02:00:22 +0400 )редактироватьЗадан: 2014-01-20 17:03:33 +0400
Просмотрен: 2,621 раз
Обновлен: Nov 19 '15
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
неужели это так трудно отформатировать свой вопрос?
zzuz ( 2014-01-20 20:50:00 +0400 )редактировать