ast и несколько сетей - проблема звука
как заставить * ставить в заголовках SIP Audio IP из своей сети
Сообщений: 18
|
ast и несколько сетей - проблема звука
Приветствую!
В одной инсталляции имеется офисная сеть 192.168.4.0/24, идущая через роутер в интернет. Есть другой канал со своим роутером,откуда приходит телефония (91.XX.....). Сервер с астериском смотрит обеими сетевыми в разные сети. Задача стоит в том, чтобы использовать телефоны внутри офиса, но телефонию отдавать только через астериск и второй канал. Появилась проблема непрохождения звука в одну сторону. Внутри офиса звонки ходят, голос есть, а вот дальше голос не идёт. sip debug показывает, что астериск в SIP INVITE указывает Audio IP из другой сети, которая недоступна без маршрута или шлюза. Указание canreinvite=no & nat=yes не помогают, игры с localnet,externip тоже. Каким образом заставить астериск работать в режиме медиа-прокси так, чтобы телефоны общались только с сервером, а астериск дальше с внешними провайдерами? Именно в инвайте ставить для каждой сети соответствующий IP, а не из другой.
|
Сообщений: 6521
|
Re: ast и несколько сетей - проблема звука
Из описания koffu: В одной инсталляции имеется офисная сеть 192.168.4.0/24, идущая через роутер в интернет. Есть другой канал со своим роутером,откуда приходит телефония (91.XX.....). Сервер с астериском смотрит обеими сетевыми в разные сети.
не складывается чёткая картинка топологии.
Изобразите поточней картинку. Не надо шифроваться как 91.XX.....
Изобразите вместо адресов сети 91.XX..... например 10.10.121.224.27 - чтобы на интерфейсах астериска и рутера стояла конкретика.
|
Сообщений: 18
|
Re: ast и несколько сетей - проблема звука
-- Executing [XXXXXXX@tel:1] NoOp("Console/dsp", "call from to XXXXXXX") in new stack
-- Executing [XXXXXXX@tel:2] Answer("Console/dsp", "") in new stack
<< Console call has been answered >>
-- Executing [XXXXXXX@tel:3] Wait("Console/dsp", "1") in new stack
-- Executing [XXXXXXX@tel:4] Queue("Console/dsp", "reception,t") in new stack
-- Started music on hold, class 'default', on Console/dsp
-- Executing [101@tel:1] NoOp("Local/101@tel-364f;2", "dial to gw") in new stack
-- Executing [101@tel:2] Dial("Local/101@tel-364f;2", "SIP/101,60,tT") in new stack
== Using SIP RTP CoS mark 5
== Using UDPTL CoS mark 5
Audio is at 91.XXX.XXX.XXX port 16466
Adding codec 0x8 (alaw) to SDP
Adding codec 0x4 (ulaw) to SDP
Adding non-codec 0x1 (telephone-event) to SDP
Reliably Transmitting (no NAT) to 192.168.4.XXX:5060:
INVITE sip:101@192.168.4.XXX:5060 SIP/2.0
Via: SIP/2.0/UDP 91.XXX.XXX.XXX:5060;branch=z9hG4bK73fe0d84;rport
Max-Forwards: 70
From: "asterisk" <sip:asterisk@91.XXX.XXX.XXX>;tag=as3c698a62
To: <sip:101@192.168.4.XXX:5060>
Contact: <sip:asterisk@91.XXX.XXX.XXX>
Call-ID: 557222474f47ce9064a7fbde12e1eb23@91.XXX.XXX.XXX
CSeq: 102 INVITE
User-Agent: Asterisk PBX 1.6.2.4
Date: Mon, 01 Mar 2010 02:32:59 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO
Supported: replaces, timer
Content-Type: application/sdp
Content-Length: 287
v=0
o=root 1780511781 1780511781 IN IP4 91.XXX.XXX.XXX
s=Asterisk PBX 1.6.2.4
c=IN IP4 91.XXX.XXX.XXX
t=0 0
m=audio 16466 RTP/AVP 8 0 101
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv
|
Сообщений: 18
|
Re: ast и несколько сетей - проблема звука
Топология выглядит так:
(internet - defaultrouter) <- IP_Phone <-> (asterisk) - (router - provider's ast)
т.е нужно, чтобы SIP и RTP уходили через сервер астериска, т.е IP Phone 192.168.0.100(default gw 192.168.0.1) общается по сипу с 192.168.0.10 без всяких шлюзов. А 192.168.0.10 проксирует медиа через себя на какой-нибудь 10.0.0.1.
|
Откуда: SPb
Сообщений: 1307
|
Re: ast и несколько сетей - проблема звука
не ужто sip proxy все равно не помогает , если выставить на софтфоне?
|
Сообщений: 6521
|
Re: ast и несколько сетей - проблема звука
1) Установите для IP_Phone default gateway - IP адрес asterisk а не (internet - defaultrouter). Можно даже вообще убрать.
2) Установите на (asterisk) роутинг
echo "1" > /proc/sys/net/ipv4/ip_forward
3) Ну и, как замечено выше - на IP_Phone адрес прокси 192.168.0.10 (т.е. астериска, хотя у вас там сеть 192.168.4.0/24?)
|
Сообщений: 18
|
Re: ast и несколько сетей - проблема звука
сетка 192.168.0 для примера, реальная 4я. Сервер с астериском на OpenVZ VPS, роутинг уже работает. Сейчас так и сделали, установили default gw адрес хост-ноды астериска и всё пошло работать, но это как временное решение. Режим прокси не помогает, астериск всёравно ставит этот заголовок и телефон не может передать медиа на него. У меня всегда работал nat & canreinvite, а сейчас не пойму что к чему. Если ставить или закоментировать вообще, "внешний адрес", проблема с голосом на строне телефона, если же поставить extip внутр адрес астериска - на строне транка. Или я чего-то недопонимаю, прокси в телефоне для чего нужен? RTP медиа вообще через него должна идти или нет?
|
Сообщений: 18
|
Re: ast и несколько сетей - проблема звука
Asterisk not SIP proxy
Asterisk is *not* a SIP proxy. A SIP proxy handles call control on behalf of other user agents (UA) and usually does not maintain state during a call and therefore is never the endpoint of a call.
The audio channels (RTP) may go directly from phone to phone or may go through Asterisk's media bridge.
Познавательная статья, запутался полностью. Так может или нет?! Гугление показало, что вроде как может, но как тогда заставить давать правильный заголовок. Можно-ли его записать вручную, типа как localnet, только для конкретного пира?
|
Сообщений: 6521
|
Re: ast и несколько сетей - проблема звука
koffu: Сейчас так и сделали, установили default gw адрес хост-ноды астериска и всё пошло работать, но это как временное решение.
Давайте так: если нужно, чтобы работало - оставляйте, и заканчивайте дискусии, ОК?
koffu: Или я чего-то недопонимаю, прокси в телефоне для чего нужен? RTP медиа вообще через него должна идти или нет?
Для ИП телефона достаточно указать единый адрес для регистрара и прокси - это астериск.
Каждый звонок из внутреннией сети ИП телефона наружу в мир и наоборот порождает два плеча разговора:
ИП провайдера -- Астeриск
и
Астериск -- ИП телефон.
Это видно командой
CLI>sip show channels
Фраза Asterisk is *not* a SIP proxy объясняет, что Астериск не является "прозрачным" прокси, который организовывает соединение между конечными абонентами
123@192.168.4.10 (IP phone) и 012345678@212.53.40.40 (sipnet.ru) не преобразовывая SIP заголовки.
То есть соединяя два плеча через себя
123@192.168.4.10 (IP phone) -- 123@192.168.4.1
и
123@91.10.11.12 -- 012345678@212.53.40.40 (sipnet.ru)
Астериск вынужден преобразовывать SIP заголовки. И этим отличается от софт-свичей 4-го класса - прокси (транзитных), будучи софт-свичем 5-го класса (B2B User Agent).
|
Сообщений: 18
|
Re: ast и несколько сетей - проблема звука
Я потому и создал топик, временное решение подразумевает ручную конфигурацию всех телефонов. Меня интересует вопрос, почему астериск указывает телефону, стоящему в одной сети, адрес из второй, если включен режим nat=yes? Почитав маны и ответы в этой ветке, получатся, используя режим прокси в телефоне, можно игнорировать этот заголовок и телефон будет отправлять весь RTP в прокси, что собственно и должно решить мою проблему, правильно?
|
|