Добрый день!
Имеется 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
Сравнил с пакетами, что я отправлял раньше - абсолютно то же самое. Почему же сейчас номер регистрируется, а раньше нет? Возможно ли, что у провайдера просто откешировался адрес моего сервера и через время связи не будет?