Страница 1 из 4
Настройка nat для работы rtp
Добавлено: 19 авг 2013, 21:23
r.usaev
Схема у меня:
Asterisk как SIP сервер на публичном адресе, клиент из-за NAT подключается к Asterisk
Проблема заключаться в том что на некоторых операторов звонки (обмен rtp) работаю нормально на остальных, звонок проходит, голоса нет в оба направления.
Некоторые операторы входящие нормально исходящие нет. Настройки одинаковые.
С случае отсутствия голоса Wireshark говорит что RTP пакеты идут в 1 направлении.
161 18.430804000 192.168.100.75 XXX.XXX.XXX.XXX RTP 214 PT=ITU-T G.711 PCMA, SSRC=0x6952, Seq=29409, Time=74086
162 18.470923000 192.168.100.75 XXX.XXX.XXX.XXX RTP 214 PT=ITU-T G.711 PCMA, SSRC=0x6952, Seq=29411, Time=74406
163 18.490850000 192.168.100.75 XXX.XXX.XXX.XXX RTP 214 PT=ITU-T G.711 PCMA, SSRC=0x6952, Seq=29412, Time=74566
Параметры на номера:
canreinvite=no
nat=yes
qualify=yes
Re: Настройка nat для работы rtp
Добавлено: 19 авг 2013, 21:40
Zavr2008
В sip.conf не забываем прописать localnet и externhost/externip.
В Dial помогут опции tT.
Да: если уж торчит наружу sip- не забывайте permit/deny.. Эт всегда стоит напомнить.
Re: Настройка nat для работы rtp
Добавлено: 19 авг 2013, 22:48
ded
Zavr2008, читаем
r.usaev писал(а):Схема у меня:
Asterisk как SIP сервер на публичном адресе, клиент из-за NAT подключается к Asterisk
Какой нахрен externhost/externip? Вы думаете, прежде чем написать?
r.usaev,
rВы только что зарегистрировались с типичной проблемой, изучайте:
Re: Настройка nat для работы rtp
Добавлено: 19 авг 2013, 23:36
Zavr2008
ded, зря ехидничаеш - помогало. Астеру четко нужно прописать что у него и как, особенно если вдруг окажется что в компе несколько сетевух и ТС об этом забыл написать..
Re: Настройка nat для работы rtp
Добавлено: 20 авг 2013, 00:25
ded
Zavr2008 писал(а): Астеру четко нужно прописать что у него и как, ..
Нет, не нужно чётко прописать, а Вам - нужно.
Напишу ещё раз:
Код: Выделить всё
Asterisk как SIP сервер на публичном адресе
Вы считаете, что надо использовать externip/externhost? Потому что иногда помогало?
Процитирую первоисточник - файл sip.conf:
Код: Выделить всё
;----------------------------------------- NAT SUPPORT ------------------------
;
; WARNING: SIP operation behind a NAT is tricky and you really need
; to read and understand well the following section.
;
; When Asterisk is behind a NAT device, the "local" address (and port) that
; a socket is bound to has different values when seen from the inside or
; from the outside of the NATted network. Unfortunately this address must
; be communicated to the outside (e.g. in SIP and SDP messages), and in
; order to determine the correct value Asterisk needs to know:
;
; + whether it is talking to someone "inside" or "outside" of the NATted network.
; This is configured by assigning the "localnet" parameter with a list
; of network addresses that are considered "inside" of the NATted network.
; IF LOCALNET IS NOT SET, THE EXTERNAL ADDRESS WILL NOT BE SET CORRECTLY.
; Multiple entries are allowed, e.g. a reasonable set is the following:
;
; localnet=192.168.0.0/255.255.0.0 ; RFC 1918 addresses
; localnet=10.0.0.0/255.0.0.0 ; Also RFC1918
; localnet=172.16.0.0/12 ; Another RFC1918 with CIDR notation
; localnet=169.254.0.0/255.255.0.0 ; Zero conf local network
;
; + the "externally visible" address and port number to be used when talking
; to a host outside the NAT. This information is derived by one of the
; following (mutually exclusive) config file parameters:
;
; a. "externaddr = hostname[:port]" specifies a static address[:port] to
; be used in SIP and SDP messages.
; The hostname is looked up only once, when [re]loading sip.conf .
; If a port number is not present, use the port specified in the "udpbindaddr"
; (which is not guaranteed to work correctly, because a NAT box might remap the
; port number as well as the address).
; This approach can be useful if you have a NAT device where you can
; configure the mapping statically. Examples:
;
; externaddr = 12.34.56.78 ; use this address.
; externaddr = 12.34.56.78:9900 ; use this address and port.
; externaddr = mynat.my.org:12600 ; Public address of my nat box.
; externtcpport = 9900 ; The externally mapped tcp port, when Asterisk is behind a static NAT or PAT.
; ; externtcpport will default to the externaddr or externhost port if either one is set.
; externtlsport = 12600 ; The externally mapped tls port, when Asterisk is behind a static NAT or PAT.
; ; externtlsport port will default to the RFC designated port of 5061.
;
; b. "externhost = hostname[:port]" is similar to "externaddr" except
; that the hostname is looked up every "externrefresh" seconds
; (default 10s). This can be useful when your NAT device lets you choose
; the port mapping, but the IP address is dynamic.
; Beware, you might suffer from service disruption when the name server
; resolution fails. Examples:
;
; externhost=foo.dyndns.net ; refreshed periodically
; externrefresh=180 ; change the refresh interval
;
; Note that at the moment all these mechanism work only for the SIP socket.
; The IP address discovered with externaddr/externhost is reused for
; media sessions as well, but the port numbers are not remapped so you
; may still experience problems.
When Asterisk is behind a NAT device, the "local" address (and port)..........
Авторизоавнный перевод: Если Астериск за НАТ устройством, локальный адрес (и порт).............
И ЭТО НЕ ТОТ СЛУЧАЙ. А иногда и кроличьей лапкой постучать по серверу помогало, нет?
externaddr и externhost используются только в этом случае. Я готов доказать, что на сервере с двумя интерфейсами - eth0 & eth1, публичным и внутренним ИП адресом, никаких externaddr и externhost также указыввать не нужно.
Re: Настройка nat для работы rtp
Добавлено: 20 авг 2013, 06:53
Zavr2008
ded, может в последних версиях и пофиксили. Автоопределение пучило. По крайней мере в 1.6
Точнее работало - временами.
Я привык всегда все указывать ручками и это еще подводило;)
Re: Настройка nat для работы rtp
Добавлено: 20 авг 2013, 06:59
Vlad1983
при nat=never вроде с 1.4 уже было нормально с несколькими интерфейсами
Re: Настройка nat для работы rtp
Добавлено: 20 авг 2013, 08:43
r.usaev
Схема говорит, смотри настройки route nat firewall
Тема изначально так и называлась!
При этом повторюсь, не со всех провайдеров нет голоса, в большинстве случаев работает нормально, но есть федеральные провайдеры от которых его нет с различных аппаратов.
rtp debug (на сервере)
Показывает обмен пакетами между оператором и внешним ip (номера за натом)
Ошибка возникает между
Сервером Asterisk и Softphone
При этом пробывал из различных сетей, под разными машрутизаторами (на базе Linux, Asus WL-500G, Mikrotik) ничего не поменялось.
Из всего что я вычитал возможные проблемы (все что я делал не помогло):
1. Размер MTU, деление пакетов и не возможности его собрать # ставил значение compactheaders=yes
2.
http://www.voip-info.org/wiki/view/Aste ... zation.txt # менял время
3. Пареметр qualify # ставил от 3000 до 6000 (по умолчанию 2000)
4. Параметр nat # ставил route, never
Есть еще предположения? я в растерянности.
Ходил в гости знакомому админу поднимал Asterisk по то же схеме у него все работает правда у него маршрутизатор D-Link DSR-500N
Re: Настройка nat для работы rtp
Добавлено: 20 авг 2013, 08:56
Vlad1983
снимать дамп трафика с RTP на стороне сервера и проблемного клиента одновременно.
Re: Настройка nat для работы rtp
Добавлено: 20 авг 2013, 10:03
ded
r.usaev писал(а):Схема говорит, смотри настройки route nat firewall
Тема изначально так и называлась!
При этом повторюсь, не со всех провайдеров нет голоса, в большинстве случаев работает нормально, но есть федеральные провайдеры от которых его нет с различных аппаратов.
Проблемный звонок идёт
федеральный провайдер ---- sip nonat--- Астериск ---- sip nonat ---- Router w/NAT ---- extension (Softphone)
Если rtp debug (на сервере) gоказывает обмен пакетами между оператором и внешним ip (Router w/NAT), то на пире не хватает параметра
canreinvite=no
или на этом же пире есть ненужный параметр
nat=yes
или он игнорируется.