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

Проблема с SIP gateway

Asterisk GUI 25 сообщений -
#1

Добрый день!

У меня возникла странная проблема при работе с шлюзом после переезда Asterisk в открытую сеть. Изначально конфигурация была следующая:
1. Trixbox (Asterisk 1.2.18 )
2. Cisco VG200 в качестве шлюза к офисной PBX (подключен по SIP)
3. Куча разных SIP клиентов (софтфоны, Cisco 7912 и т.д.)
Все устройства работают в одной сети, никаких проблем нет.

Появилась необходимость вывести * в открытую сеть. Сервер получил новый адрес и благополучно переехал. Шлюз тоже пришлось вывести туда же. Если не считать IP-адресов, то никаких других изменений в настройках не производилось. Клиенты остались за NAT-ом.

Проблема следующая: звоники проходят в обе стороны, а вот слышимость (причем двухстороняя) есть только при звонках с PBX на *. При звонках в обратную сторону ничего не слышно (ни с одной стороны). Дебаги на шлюзе показывают, что при звонках со стороны Asterisk пакеты RTP не приходят.

Что-то я не очень понимаю, где копать. Ладно бы совсем не работало, в случаях с NAT это можно ожидать. Но такая ассиметрия меня удивляет. Что можно сделать в этой ситуации?

Спасибо!
#2

sip.conf

nat=yes
qualify=...

_________________
ys
http://voip.rus.net/
#3

Естественно nat=yes. Qualify в данном случае ни на что принципиально не влияет. Проблема в чем-то другом...
#4

Неестественно.
В sip.conf - nat=never он же на реальном адресе! Какой к Щорсу йес?
А у экстеншнов как раз
nat=yes
и после того как ты это сделаешь, выведи ка
CLI>sip show peer 101 или какой у тебя там есть - в студию!
В следствие того что НАТ бывает разный (жидкий и газообразный), типа траверсал и симметричный, возможны проблемы из-за неправильной трансляции СИП пакетов, такжеможет быть виноват твой firewall.
Для общих случаев нужен нехитрый трюк: изменить registration time expire с дефолтных 3600 на каких-нить 60, делается на устройствах, не на *.
При этом в регистрационном пакете все правильно указывается, и firewall не гасит открытый верхний порт по тайм-ауту, а вынужден его поддерживать вследствие постоянных запросов изнутри каждые 60 сек.
Самые большие траблы могут быть с 7912-ми.
Надеюсь, изложил понятно.
#5

Виноват, был неправ Smile Я имел в виду настройки nat у экстеншнов. Прописал nat=never в sip.conf , и изменил registration time expire у клиента.

Вот что выводит команда sip show peer:

asterisk1*CLI> sip show peer 4801
asterisk1*CLI>

* Name : 4801
Secret :
MD5Secret :
Context : from-internal
Subscr.Cont. :
Language :
AMA flags : Unknown
CallingPres : Presentation Allowed, Not Screened
Callgroup :
Pickupgroup :
Mailbox : 4801@default
VM Extension : asterisk
LastMsgsSent : 2/0
Call limit : 0
Dynamic : Yes
Callerid : "device"
Expire : 2
Insecure : no
Nat : Always
ACL : No
CanReinvite : Yes
PromiscRedir : No
User=Phone : No
Trust RPID : No
Send RPID : No
DTMFmode : rfc2833
LastMsg : 0
ToHost :
Addr->IP : AsteriskIP Port 2735
Defaddr->IP : 0.0.0.0 Port 5060
Def. Username: 4801
SIP Options : (none)
Codecs : 0x1c050f (g723|gsm|ulaw|alaw|g729|ilbc|h261|h263|h263p)
Codec Order : (g729,g723,alaw,gsm,ilbc,ulaw,h261,h263,h263p)
Status : Unmonitored
Useragent : eyeBeam release 1004p stamp 31962
Reg. Contact : sip:4801@ AsteriskIP:2735;rinstance=72beb767aca8549a
#6

Неверную инфу даешь. В строке
Addr->IP : AsteriskIP Port 2735
у тебя не AsteriskIP а внешний ИП и порт НАТообразующего устройства, через которое регистрируется экстеншн 4801, а в конце
Reg. Contact : sip:4801@ AsteriskIP:2735;rinstance=72beb767aca8549a
опять же, не @ AsteriskIP:2735, а должен быть внутренний ИП адрес устройства, через которое регистрируется экстеншн 4801, типа
Reg. Contact : sip:4801@192.168.0.15:5060
заметь, и порт 5060, а не верхний мифический НАТа - 2735!

А если у тебя на этих позициях действительно AsteriskIP, то ты заморочил * голову, так никакой звонок не пойдет.
#7

Насколько я понял, у человека SIP сигнализация как раз проходит.
А вот RTP - не ходит в обратную сторону.

_________________
ys
http://voip.rus.net/
#8

Адрес, действительно, не *, а маршрутизатора. Это я, как всегда, ошибся. Sorry.

С сигнализацией проблем нет, а вот с RTP что-то не очень складывается...
#9

Ну что же ты, Вася!
Смотри ещё - Reg. Contact : sip:4801@какой у тебя тут ИП и порт?;rinstance=72beb767aca8549a
а также - к вопросу: почему я не люблю софтфоны?
Как видно там Useragent : eyeBeam release 1004p, это значит, что если Вася забыл про дефолтный файервол на гаццком компе с виндой, то звонить на него можно до опупения, но ничего при этом не услышишь.
#10

Так ведь понедельник сегодня... Сложно сконцентрироваться на работе (почти также как в пятницу).

Информация в Reg. Contact аналогична Addr->IP. Адрес маршрутизатора, порт 2735. Что здесь интересного можно найти?
#11

Ded писал(а):
В строке ....
Reg. Contact : sip:4801@ AsteriskIP:2735;rinstance=72beb767aca8549a
... не @ AsteriskIP:2735, а должен быть внутренний ИП адрес устройства, через которое регистрируется экстеншн 4801, типа
Reg. Contact : sip:4801@192.168.0.15:5060


А если у тебя на этих позициях действительно адрес маршрутизатора, то никакой звонок не пойдет.
#12

Это действительно внешний адрес маршрутизатора. Можно ли сделать так, чтобы это был внутренний адрес?

Почему тогда нет проблем со входящими звонками от шлюза, который живет снаружи?
#13

Если там внешний адрес маршрутизатора, то у тебя, скорее всего симметричный НАТ.
В любом случае, тебе поможет анализ sip debug при входящем звонке со шлюза, и при внутреннем звонке между абонентами.
#14

с vg200
show running-config | include rout
в студию!
#15

Вот:

vg200#show running-config | include rout
ip route 0.0.0.0 0.0.0.0 Router_IP
#16

Смефно!
#17

Что именно тебя так рассмешило?
#18

Не обижайся, я не фтыкнулся, зачем вообще потекло в сторону
vg200#show running-config | include rout
ip route 0.0.0.0 0.0.0.0 Router_IP
мы сейчас будем обсуждать глобальные рутинговые проблемы, цисковские конфиги, преимущества OSPF и EIGRP, но все дальше от темы топика.
#19

Мне тоже это показалось некоторым уходом от темы, но я, в принципе, готов к выполнению любых рекомендаций - вдруг кто-то посоветует что-то дельное.

На самом деле мне не очень понятно следующее: в моей конфигурации * всегда проксирует RTP трафик или нет? По SIP дебагам следует (если, конечно, все правильно понимаю), что при звонках в любую сторону RTP идет через него.
#20

если у клиентов canreinvite=no то всегда.
#21

Сделал canreinvite=no, но ничего не изменилось...
#22

1. Сделай sip debug и посмотри заголовки при неудачном соединении и при удачном, сравни.
2. Сделай на * tcpdump host IP_addr_your_router при неудачном звонке, смотри на какие порты открывается соединение. Если только в одну сторону сыпет, то неверная информация об РТП соединении передаётся в пакете сигнализации.
#23

Ded писал(а):
Не обижайся, я не фтыкнулся, зачем вообще потекло в сторону
vg200#show running-config | include rout
ip route 0.0.0.0 0.0.0.0 Router_IP
мы сейчас будем обсуждать глобальные рутинговые проблемы, цисковские конфиги, преимущества OSPF и EIGRP, но все дальше от темы топика.

нет, не будем. сядь покрепче Wink - первый solution в
http://www.cisco.com/warp/public/788/AVV ... voice.html

Added after 2 minutes:

ну и заодно на vg200 -
term mon
debug ccsip all

у нее хоть дебаг внятный в отличие от. (а вот тут holy war разводитьто точно не надо BigGrin3
#24

Цитата:
1. Сделай sip debug и посмотри заголовки при неудачном соединении и при удачном, сравни.
2. Сделай на * tcpdump host IP_addr_your_router при неудачном звонке, смотри на какие порты открывается соединение. Если только в одну сторону сыпет, то неверная информация об РТП соединении передаётся в пакете сигнализации.


Сделал. Много буковок получилось, буду рабираться.

Цитата:
нет, не будем. сядь покрепче - первый solution в
http://www.cisco.com/warp/public/788/AVV ... voice.html


Спасибо, уже читаю. Правда, в моем случае проблема не с односторонней слышимостью.

Цитата:
ну и заодно на vg200 -
term mon
debug ccsip all


Файл vg200-a-c.txt - звонок с Softphone на шлюз. Никто ничего не слышит.
Файл vg200-c-a.txt - звонок с vg200 на Softphone. Все ОК.

Added after 22 minutes:

Цитата:
2. Сделай на * tcpdump host IP_addr_your_router при неудачном звонке, смотри на какие порты открывается соединение. Если только в одну сторону сыпет, то неверная информация об РТП соединении передаётся в пакете сигнализации.


Действительно, не очень симметрично:

В одну сторону
14:02:05.212113 IP [Router_IP].6312 > [Asterisk_IP].18408: UDP, length 172
14:02:05.231620 IP [Router_IP].6312 > [Asterisk_IP].18408: UDP, length 172
14:02:05.252175 IP [Router_IP].6312 > [Asterisk_IP].18408: UDP, length 172
14:02:05.274223 IP [Router_IP].6312 > [Asterisk_IP].18408: UDP, length 172

В другую
14:02:28.481786 IP [Router_IP].6318 > [Asterisk_IP].10242: UDP, length 172
14:02:28.487780 IP [Asterisk_IP].10242 > [Router_IP].6318: UDP, length 172
14:02:28.502367 IP [Router_IP].6318 > [Asterisk_IP].10242: UDP, length 172
14:02:28.505727 IP [Asterisk_IP].10242 > [Router_IP].6318: UDP, length 172
#25

в раздел "Работа"!