VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Asterisk за NAT

Проблемы Asterisk без вэб-оболочек и их решения

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

svd
Сообщения: 169
Зарегистрирован: 19 июл 2011, 08:13
Откуда: Красноярск
Контактная информация:

Asterisk за NAT

Сообщение svd »

Дня доброго.

Имею следующее:

Шлюз (2 интерфейса)
1 - внешний 95.xxx.xxx.xxx
2 - внутренний 192.168.45.1

Asterisk (1 интерфейс) Elastix
1 - 192.168.45.4 (gateway 192.168.45.1)

Провайдер (SIP)
84.22.xxx.xxx (аутентификация по номеру + ip)

Создаю SIP-транк

host=dynamic
username=3030
type=peer
nat=yes
disallow=all
allow=alaw&ulaw
qualify=yes

регистрация
3030@84.22.xxx.xxx

Регистрации нет.

Включаю дебаг, получаю следующее

Код: Выделить всё

REGISTER 12 headers, 0 lines
Reliably Transmitting (no NAT) to 84.22.xxx.xxx:5060:
REGISTER sip:84.22.xxx.xxx SIP/2.0
Via: SIP/2.0/UDP 192.168.45.4:5060;branch=z9hG4bK72053a78;rport
From: <sip:3030@84.22.xxx.xxx>;tag=as7f9bcfd8
To: <sip:3030@84.22.xxx.xxx>
Call-ID: 269c607b57f66d3756fd329446401b7a@127.0.0.1
CSeq: 102 REGISTER
User-Agent: Asterisk PBX
Max-Forwards: 70
Expires: 120
Contact: <sip:s@192.168.45.4>
Event: registration
Content-Length: 0


---
elastix*CLI>
<--- SIP read from 84.22.xxx.xxx:5060 --->
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 192.168.45.4:5060;branch=z9hG4bK72053a78;rport;received=95.130.xxx.xxx
From: <sip:3030@84.22.xxx.xxx>;tag=as7f9bcfd8
To: <sip:3030@84.22.xxx.xxx>
Date: Tue, 19 Jul 2011 04:35:00 GMT
Call-ID: 269c607b57f66d3756fd329446401b7a@127.0.0.1
Server: Cisco-SIPGateway/IOS-12.x
CSeq: 102 REGISTER
Content-Length: 0


<------------->
--- (9 headers 0 lines) ---
elastix*CLI>
<--- SIP read from 84.22.xxx.xxx:5060 --->
SIP/2.0 404 Not Found
Via: SIP/2.0/UDP 192.168.45.4:5060;branch=z9hG4bK72053a78;rport;received=95.130.xxx.xxx
From: <sip:3030@84.22.xxx.xxx>;tag=as7f9bcfd8
To: <sip:3030@84.22.xxx.xxx>;tag=F2521BB8-D5A
Date: Tue, 19 Jul 2011 04:35:00 GMT
Call-ID: 269c607b57f66d3756fd329446401b7a@127.0.0.1
Server: Cisco-SIPGateway/IOS-12.x
CSeq: 102 REGISTER
Content-Length: 0


<------------->
--- (9 headers 0 lines) ---
Really destroying SIP dialog '269c607b57f66d3756fd329446401b7a@127.0.0.1' Method: REGISTER
Пишу в поддержку, получаю ответ:
серверу не нравится что в заголовке значится локальный ip (Via: SIP/2.0/UDP 192.168.45.4:5060)

Начинаю рыть в сторону доп опций типа
externip

Формирую следующее

Код: Выделить всё

host=dynamic
username=3019
type=peer
nat=yes
disallow=all
allow=alaw&ulaw
qualify=yes
externip=95.130.xxx.xxx
Читаю дальше, параметр externip можно указывать только в секции [general] в sip.conf

Смотрю свой SIP.conf

Код: Выделить всё

;--------------------------------------------------------------------------------;
; Do NOT edit this file as it is auto-generated by FreePBX. All modifications to ;
; this file must be done via the web gui. There are alternative files to make    ;
; custom modifications, details at: http://freepbx.org/configuration_files       ;
;--------------------------------------------------------------------------------;
;

[general]
; These files will all be included in the [general] context
;
#include sip_general_additional.conf

;sip_general_custom.conf is the proper file location for placing any sip general 
;options that you might need set. For example: enable and force the sip jitterbuffer. 
;If these settings are desired they should be set the sip_general_custom.conf file.
;
; jbenable=yes
; jbforce=yes
;
;It is also the proper place to add the lines needed for sip nat'ing when going
;through a firewall.  For nat'ing you'd need to add the following lines: 
; nat=yes , externip= , localhost= , and optionally fromdomain= .
;
#include sip_general_custom.conf

;sip_nat.conf is here for legacy support reasons and for those that upgrade 
;from previous versions.  If you have this file with lines in it please make
;sure they are not duplicated in sip_general_custom.conf, if so remove them 
;from sip_nat.conf as sip_general_custom.conf will have precedence.
#include sip_nat.conf

;sip_registrations_custom.conf is for any customizations you might need to do to
;the automatically generated registrations that FreePBX makes.
;
#include sip_registrations_custom.conf
#include sip_registrations.conf

; These files should all be expected to come after the [general] context
;
#include sip_custom.conf
#include sip_additional.conf

;sip_custom_post.conf If you have extra parameters that are needed for a 
;extension to work to for example, those go here.  So you have extension 
;1000 defined in your system you start by creating a line [1000](+) in this 
;file.  Then on the next line add the extra parameter that is needed.  
;When the sip.conf is loaded it will append your additions to the end of 
;that extension. 
;
#include sip_custom_post.conf
прочитав написанный в нём комментарий добавляю свою строку в файл sip_general_custom.conf

Код: Выделить всё

externip=95.130.xxx.xxx
Далее

на всякий случай
restart now
sip set debug ip 84.22.xxx.xxx
sip reload

результат тот же самый. (провайдеровский сервак не воспринимает мою регистрацию)

пробовал перебирать всё вышеописанное в различных комбинациях, результат один - 404

Чувствую не хватает в моих познаниях какой то небольшой но очень важной информации.
Подскажите куда рыть.
Glukinho
Сообщения: 661
Зарегистрирован: 07 янв 2011, 20:05

Re: Asterisk за NAT

Сообщение Glukinho »

localnet= в [general] в sip.conf
svd
Сообщения: 169
Зарегистрирован: 19 июл 2011, 08:13
Откуда: Красноярск
Контактная информация:

Re: Asterisk за NAT

Сообщение svd »

добавил localnet

результат

Код: Выделить всё

REGISTER 12 headers, 0 lines
Reliably Transmitting (no NAT) to 84.22.140.60:5060:
REGISTER sip:84.22.140.60 SIP/2.0
Via: SIP/2.0/UDP 95.130.134.118:5060;branch=z9hG4bK3da0ffe5;rport
From: <sip:3019@84.22.140.60>;tag=as2f3e3212
To: <sip:3019@84.22.140.60>
Call-ID: 1eb853ff181ab06a7321f0832e07bec2@127.0.0.1
CSeq: 102 REGISTER
User-Agent: Asterisk PBX
Max-Forwards: 70
Expires: 120
Contact: <sip:s@95.130.134.118>
Event: registration
Content-Length: 0


---
elastix*CLI>
<--- SIP read from 84.22.140.60:5060 --->
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 95.130.134.118:5060;branch=z9hG4bK3da0ffe5;rport
From: <sip:3019@84.22.140.60>;tag=as2f3e3212
To: <sip:3019@84.22.140.60>
Date: Tue, 19 Jul 2011 05:12:10 GMT
Call-ID: 1eb853ff181ab06a7321f0832e07bec2@127.0.0.1
Server: Cisco-SIPGateway/IOS-12.x
CSeq: 102 REGISTER
Content-Length: 0


<------------->
--- (9 headers 0 lines) ---
elastix*CLI>
<--- SIP read from 84.22.140.60:5060 --->
SIP/2.0 200 OK
Via: SIP/2.0/UDP 95.130.134.118:5060;branch=z9hG4bK3da0ffe5;rport
From: <sip:3019@84.22.140.60>;tag=as2f3e3212
To: <sip:3019@84.22.140.60>;tag=F274255C-373
Date: Tue, 19 Jul 2011 05:12:10 GMT
Call-ID: 1eb853ff181ab06a7321f0832e07bec2@127.0.0.1
Server: Cisco-SIPGateway/IOS-12.x
CSeq: 102 REGISTER
Contact: <sip:3019@95.130.134.118:5060>;expires=120
Expires:  120
Content-Length: 0


<------------->
--- (11 headers 0 lines) ---
Scheduling destruction of SIP dialog '1eb853ff181ab06a7321f0832e07bec2@127.0.0.1' in 32000 ms (Method: REGISTER)
Really destroying SIP dialog '1eb853ff181ab06a7321f0832e07bec2@127.0.0.1' Method: REGISTER
svd
Сообщения: 169
Зарегистрирован: 19 июл 2011, 08:13
Откуда: Красноярск
Контактная информация:

Re: Asterisk за NAT

Сообщение svd »

Glukinho писал(а):localnet= в [general] в sip.conf
в общем то чего хотел добиться, добился
правда звонки ещё не ходят, буду дальше рыть
Спасибо Glukinho
Glukinho
Сообщения: 661
Зарегистрирован: 07 янв 2011, 20:05

Re: Asterisk за NAT

Сообщение Glukinho »

Регистрация прошла.
Звонки не ходят потому, что ваш * ожидает, что провайдер зарегистрируется на нем, вследствие вот этой директивы в описании пира: host=dynamic
Чую, вам нужно написать host=ip-адрес_шлюза_провайдера
Ну и что-нибудь типа insecure=invite,port
svd
Сообщения: 169
Зарегистрирован: 19 июл 2011, 08:13
Откуда: Красноярск
Контактная информация:

Re: Asterisk за NAT

Сообщение svd »

Истина всё ближе.

Ещё один вопрос:
Как задать астериску диапазон используемых медиа портов, так скать чтобы точно знать какие из них прокинуть внутрь? Вот.

На данный момент прокинут порт TCP 5060
svd
Сообщения: 169
Зарегистрирован: 19 июл 2011, 08:13
Откуда: Красноярск
Контактная информация:

Re: Asterisk за NAT

Сообщение svd »

tcpdump показал сразу косяк. Нужен не TCP а UDP
svd
Сообщения: 169
Зарегистрирован: 19 июл 2011, 08:13
Откуда: Красноярск
Контактная информация:

Re: Asterisk за NAT

Сообщение svd »

Итого:
1. есть регистрация
2. звонок походу прилетает как анонимный (но прилетает)
3. исходящие ещё не заработали.
ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

Re: Asterisk за NAT

Сообщение ded »

Конечно будет прилетать как анонимный, если Вы сами его таким делаете - insecure=invite,port
svd писал(а):Как задать астериску диапазон используемых медиа портов, так скать чтобы точно знать какие из них прокинуть внутрь?
Смотрим в /etc/rtp.conf
Учимся писать вопросы в окошечке Гугла, ибо все ответы уже есть там.
svd
Сообщения: 169
Зарегистрирован: 19 июл 2011, 08:13
Откуда: Красноярск
Контактная информация:

Re: Asterisk за NAT

Сообщение svd »

с подачи ded перебрал все варианты insecure (port, port invite, invite) ни как не повлияло.
но тут заметил в логах слово context и вспомнил, что в транке я его не прописал.

Код: Выделить всё

host=84.22.xxx.xxx
username=3030
type=peer
nat=yes
disallow=all
allow=alaw&ulaw
qualify=yes
insecure=port,invite
[b]context=from-trunk[/b]
с контекстом звонок начал влетать туда куда нужно.
в общем, буду пытаться осознать смысл параметра insecure http://asterisk.ru/knowledgebase/Asterisk+sip+insecure, но в моём случае дело было не в нём.
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH