Задать вопрос
@aleksey_k

Почему не регистрируется asterisk за NAT (Request sent)?

Добрый день!
Имеется asterisk 1.18.22 на Linux, находится внутри NAT. Пытаюсь настроить регистрацию у местного провайдера (находится снаружи NAT). На шлюзе проброшены порты 5060(для SIP-сигнализации) и 10000-20000 (для RTP).
Конфиг провайдера находится в asterisk realtime.

Строчка регистрации:
register -> xxxxxx:yyyyyy@provider_name/xxxxxx
localnet я прописал. externaddr - не задаю - т.к. возможно, у меня будет 2 провайдера.

в realtime:

host = ip_провайдера
nat = yes
type = friend
canreinvite = no
fromuser = xxxxxx (соответствует строке register)
fromdomain = ip_провайдера
secret = yyyyyy (соответствует строке register)
disallow = all
allow = alaw; ulaw; g729; gsm
username = xxxxxx
defaultuser = xxxxxx
insecure = port, invite


Внимание, теперь вопрос: после sip reload в asterisk я командой sip show registry получаю вывод "Request Sent"?. Снимаю дамп с сетевой карты - пакет уходит, но не приходит ответ от сервера.

После шаманств с параметром host, а именно с выставлением в него моего внешнего ip-адреса и получением в ответе No Authentication, вернул host обратно на IP провайдера. И внезапно номер зарегистрировался вот что asterisk шлет в пакете register:

REGISTER sip:ip_провайдера SIP/2.0
Via: SIP/2.0/UDP 192.168.1.11:5060;branch=z9hG4bK561c1ad1;rport
Max-Forwards: 70
From: <sip:xxxxxx@ip_провайдера>;tag=as3b954948
To: <sip:xxxxxx@ip_провайдера>
Call-ID: 058f67a01ae5ea450883e8287985edd9@ip_провайдера
CSeq: 102 REGISTER
User-Agent: Asterisk PBX 1.8.22.0
Expires: 120
Contact: <sip:xxxxx@192.168.1.11:5060>
Content-Length: 0


Сравнил с пакетами, что я отправлял раньше - абсолютно то же самое. Почему же сейчас номер регистрируется, а раньше нет? Возможно ли, что у провайдера просто откешировался адрес моего сервера и через время связи не будет?
  • Вопрос задан
  • 11869 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
Мы также держим свой сервер за NAT. И имели проблемы когда Asterisk не знал свой внешний IP, т.к. он в сигнальных полях указывал локальный IP, то сервер провайдера не разрешал регистрацию.

Поэтому в sip.conf:
externip= или externhost=
и соответственно обновлять при переключении провайдеров.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sip.conf
[general]
externaddr or externhost?
localnet?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы