Может быть кто-нибудь сталкивался и расскажет мне как побороть такую вот неприятную особенность:
Есть Asterisk установленный на машину с несколькими сетевыми картами. Причем, одной из карт присвоено ДВА адреса: 10.123.190.2 и 10.123.190.5
Допустим, поступает звонок с адреса 10.123.190.1, сигнализация при этом идет на 10.123.190.2. И все прекрасно работает, НО!
Астериск сообщает на 10.123.190.1 в полях Contact field и в SDP адрес 10.123.190.5.
Вот лог того, что получает девайс от Астериска:
| Код: |
| May 31 09:10:39 10.123.190.1 390: Received: May 31 09:10:39 10.123.190.1 391: UPDATE sip:402@10.123.190.1:5060 SIP/2.0#015 May 31 09:10:39 10.123.190.1 392: Via: SIP/2.0/UDP 10.123.190.5:5060;branch=z9hG4bK7a2be8e7;rport#015 May 31 09:10:39 10.123.190.1 393: Max-Forwards: 70#015 May 31 09:10:39 10.123.190.1 394: From: ;tag=as672f3075#015 May 31 09:10:39 10.123.190.1 395: To: ;tag=15339C-13CF#015 May 31 09:10:39 10.123.190.1 396: Contact: #015 May 31 09:10:39 10.123.190.1 397: Call-ID: 4029F2AC-AA1611E1-8025F483-937DA0F0@10.123.190.1#015 May 31 09:10:39 10.123.190.1 398: CSeq: 102 UPDATE#015 May 31 09:10:39 10.123.190.1 399: User-Agent: Asterisk PBX 10.4.1#015 May 31 09:10:39 10.123.190.1 400: Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH#015 May 31 09:10:39 10.123.190.1 401: Supported: replaces#015 May 31 09:10:39 10.123.190.1 402: Content-Type: application/sdp#015 May 31 09:10:39 10.123.190.1 403: Content-Lengt May 31 09:10:39 10.123.190.1 404: h: 269#015 May 31 09:10:39 10.123.190.1 405: #015 May 31 09:10:39 10.123.190.1 406: v=0#015 May 31 09:10:39 10.123.190.1 407: o=root 726097010 726097011 IN IP4 10.123.190.5#015 |
Как заставить Астериск отдавать в SDP и Contact тот адрес, на который поступил вызов, а не тот, который хочется отдать астеру?
Почему бы просто не сделать нормальную маршрутизацию и 1 IP адрес на Asterisk ?
_________________
Gentoo Linux || Asterisk 13.1-cert2
Решения телефонии на базе Asterisk || http://it-need.ru
_________________
Gentoo Linux || Asterisk 13.1-cert2
Решения телефонии на базе Asterisk || http://it-need.ru
И если я могу принять то как работает Астериск сейчас при использовании транспорта UDP, то никак не могу принять такое поведение при использовании транспорта TCP.
Кстати, проблему я решил именно переводом взаимодействия данного девайса и астера на TCP. Только пришлось конкретно указать в tcpbindaddr нужный адрес. При tcpbindaddr=0.0.0.0, Астер ведет себя все так же не логично. Минус такого решения только в том, что поскольку tcpbindaddr нельзя указать несколько раз, на втором интерфейсе(а астериск у меня работает более чем на одном) TCP нет. Оно, конечно, мне пока там и не нужно, но все же, как-то не красиво.
В этой связи вопрос: я слышал о том, что есть сторонние патчи для Asterisk, которые позволяют указать tcpbindaddr более одного раза. Никто не встречал?
Собсно мораль: не использовать 0.0.0.0 в udp/tcpbindaddr.
А дальше уже маршрутизацией сетевого трафика разруливать.
_________________
Gentoo Linux || Asterisk 13.1-cert2
Решения телефонии на базе Asterisk || http://it-need.ru
))_________________
нанотехнолигии в области Asterisk
1) Сервер 1 - Интернет шлюз для Офиса 1 + Asterisk + OpenVPN сервер
- Интерфейс 1 - Внутренняя локальная сеть
Интерфейс 2 - Локальная сеть провайдера
Интерфейс 3 - pptp туннель в интернет через сеть провайдера с реальным адресом (он и прописан в астериске)
Интерфейс 4 - OpenVPN туннель до Офиса 2
2) Маршрутизатор Mikrotik - шлюз в офисе 2 + OpenVPN клиент
- Интерфейс 1 - Внутренняя локальная сеть
Интерфейс 2 - Локальная сеть провайдера
Интерфейс 3 - OpenVPN туннель до Офиса 2
Asterisk используется клиентами из обоих офисов и из интернета.
| Цитата: |
| Сдается мне, что в этом случае необерешся проблем с натом. |
Каким?
NAT на клиенте - зло которое легко обходится.
NAT на сервере - глупость.
_________________
Gentoo Linux || Asterisk 13.1-cert2
Решения телефонии на базе Asterisk || http://it-need.ru
| Cache писал(а): |
ну путать нат с маршрутизацией )) |
я не путаю нат с маршрутизацией. я просто сразу переношу на свою ситуацию и понимаю что без нат-а мне не обойтись в таком случае.
Added after 8 minutes:
Давайте оставим бесполезную полемику про разные инсталяции и той или иной степени геморности настройки маршрутизаций, натов и прочее.
Просто, если кто-то сможет доходчиво мне объяснить почему/зачем Астериск поступает так, как поступает, а именно:
в заголовках сип пакетов подставляет не тот адрес, на который пришел запрос, а адрес интерфейса с наименьшим номером, то я был бы очень признателен.
Товарищи, есть такая схема:
Elastix с HA, у каждой ноды по два сетевых интерфейса. У первой ноды XXX.XXX.0.11 и YYY.YYY.0.11, у второй ноды XXX.XXX.0.12 и YYY.YYY.0.12. IP кластера соответственно XXX.XXX.0.10 и YYY.YYY.0.10.
Есть железка Yeastar Neogate TE200 с IP XXX.XXX.0.15, которая принимает потоки E1 и отдает их по SIP на Elastix.
Загвоздка в том, что когда делаешь звонок с Elastix на TE200, первый пакет уходит с физическим IP ноды, а не с IP кластера и TE200 звонок отшибает.
Yeastar и Elastix соединяются по TCP(transport = tcp, tcpenable = yes, tcpbindaddr = XXX.XXX.0.10), но все равно первый пакет от Elastix уходит с IP ноды.
Вопрос: как сделать так, что бы пакет уходил с IP кластера, а не ноды?
Заранее спасибо за ответ.
| Цитата: |
| Потому что это кластер HA |
Советую посмотреть доклад с АстерКонфа по данной теме - там просто общий виртуальный IP ставят.
http://asterconf.ru/pdf/2015/09_kondratev.pdf
_________________
http://mh.otx.ru SIP/E1 шлюзы Alvis, Добавь E1 к Asterisk, Проапгрейди Заказчику TDA/LDK!
NEW! Alvis-GW-2E1-L по 29500р, спеши! цены
И у нод приватные разрешить только точка-точка.
_________________
http://mh.otx.ru SIP/E1 шлюзы Alvis, Добавь E1 к Asterisk, Проапгрейди Заказчику TDA/LDK!
NEW! Alvis-GW-2E1-L по 29500р, спеши! цены