AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Asterisk, IP alias и Contact field

Asterisk IP PBX 18 сообщений -
#1

Коллеги!

Может быть кто-нибудь сталкивался и расскажет мне как побороть такую вот неприятную особенность:

Есть 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 тот адрес, на который поступил вызов, а не тот, который хочется отдать астеру?
#2

Никак. Astersisk это АТС, а не SIP Proxy.
Почему бы просто не сделать нормальную маршрутизацию и 1 IP адрес на Asterisk ?

_________________
Gentoo Linux || Asterisk 13.1-cert2
Решения телефонии на базе Asterisk || http://it-need.ru
#3

Потому что это кластер HA. И там никак не обойтись одним адресом.
#4

для кластера нужна связка Ser+Asterisks, IMHO.
#5

Добавить нечего! Без Proxy - изврат!
_________________
Gentoo Linux || Asterisk 13.1-cert2
Решения телефонии на базе Asterisk || http://it-need.ru
#6

Честно сказать, я не вижу тут смысла в прокси(кстати, как предлагается резервировать его?). Мне кажется, тут в Астериске нарушена логика. Логичным выглядело бы такое поведение *, при котором в поля SIP заголовка и в SDP помещался бы тот адрес, на которой пришёл запрос, а не адрес интерфейса с наименьшим номером, как это происходит сейчас.
И если я могу принять то как работает Астериск сейчас при использовании транспорта UDP, то никак не могу принять такое поведение при использовании транспорта TCP.

Кстати, проблему я решил именно переводом взаимодействия данного девайса и астера на TCP. Только пришлось конкретно указать в tcpbindaddr нужный адрес. При tcpbindaddr=0.0.0.0, Астер ведет себя все так же не логично. Минус такого решения только в том, что поскольку tcpbindaddr нельзя указать несколько раз, на втором интерфейсе(а астериск у меня работает более чем на одном) TCP нет. Оно, конечно, мне пока там и не нужно, но все же, как-то не красиво.

В этой связи вопрос: я слышал о том, что есть сторонние патчи для Asterisk, которые позволяют указать tcpbindaddr более одного раза. Никто не встречал?
#7

Если это HA кластер - по видимому должен быть разделяемый высокодоступный ip(который автоматически мигрирует на резервную ноду в случае сбоя). и собсно на этом ip и должен жить астер а не на всех ip ноды.
Собсно мораль: не использовать 0.0.0.0 в udp/tcpbindaddr.
#8

Если не использоват 0.0.0.0, то как вы предлагаете работать астеру на двух и более интерфейсах?
#9

Повесить на конкретный адрес.
А дальше уже маршрутизацией сетевого трафика разруливать.

_________________
Gentoo Linux || Asterisk 13.1-cert2
Решения телефонии на базе Asterisk || http://it-need.ru
#10

Сдается мне, что в этом случае необерешся проблем с натом.
#11

ну путать нат с маршрутизацией BigGrin3))
_________________
нанотехнолигии в области Asterisk
#12

Есть несколько таких инсталяций:

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
#13

Cache писал(а):
ну путать нат с маршрутизацией BigGrin3))

я не путаю нат с маршрутизацией. я просто сразу переношу на свою ситуацию и понимаю что без нат-а мне не обойтись в таком случае.

Added after 8 minutes:

Давайте оставим бесполезную полемику про разные инсталяции и той или иной степени геморности настройки маршрутизаций, натов и прочее.
Просто, если кто-то сможет доходчиво мне объяснить почему/зачем Астериск поступает так, как поступает, а именно:
в заголовках сип пакетов подставляет не тот адрес, на который пришел запрос, а адрес интерфейса с наименьшим номером, то я был бы очень признателен.
#14

Сабж был одной из причин для создания FreeSWITCH, в нём можно на каждый интерфейс привязывать свой отдельный SIP-профиль.
#15

Доброго всем времени суток!
Товарищи, есть такая схема:
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 кластера, а не ноды?
Заранее спасибо за ответ.
#16

Цитата:
Потому что это кластер 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р, спеши! цены
#17

Общий виртуальный адрес есть, он как раз XXX.XXX.0.10, но вот при создании SIP-транка между эластиксом и еастаром нет исходящих звонков, в логах первый пакет от эластикса приходит с айпи XXX.XXX.0.11 или XXX.XXX.0.12 (в зависимости от того, какая нода в primary), а не с айпи XXX.XXX.0.10.
#18

Неправильно читали доклад - виртуальный IP нужно сделать в другой подсети.
И у нод приватные разрешить только точка-точка.

_________________
http://mh.otx.ru SIP/E1 шлюзы Alvis, Добавь E1 к Asterisk, Проапгрейди Заказчику TDA/LDK!
NEW! Alvis-GW-2E1-L по 29500р, спеши! цены