У меня возникла странная проблема при работе с шлюзом после переезда Asterisk в открытую сеть. Изначально конфигурация была следующая:
1. Trixbox (Asterisk 1.2.18 )
2. Cisco VG200 в качестве шлюза к офисной PBX (подключен по SIP)
3. Куча разных SIP клиентов (софтфоны, Cisco 7912 и т.д.)
Все устройства работают в одной сети, никаких проблем нет.
Появилась необходимость вывести * в открытую сеть. Сервер получил новый адрес и благополучно переехал. Шлюз тоже пришлось вывести туда же. Если не считать IP-адресов, то никаких других изменений в настройках не производилось. Клиенты остались за NAT-ом.
Проблема следующая: звоники проходят в обе стороны, а вот слышимость (причем двухстороняя) есть только при звонках с PBX на *. При звонках в обратную сторону ничего не слышно (ни с одной стороны). Дебаги на шлюзе показывают, что при звонках со стороны Asterisk пакеты RTP не приходят.
Что-то я не очень понимаю, где копать. Ладно бы совсем не работало, в случаях с NAT это можно ожидать. Но такая ассиметрия меня удивляет. Что можно сделать в этой ситуации?
Спасибо!
nat=yes
qualify=...
_________________
ys
http://voip.rus.net/
В sip.conf - nat=never он же на реальном адресе! Какой к Щорсу йес?
А у экстеншнов как раз
nat=yes
и после того как ты это сделаешь, выведи ка
CLI>sip show peer 101 или какой у тебя там есть - в студию!
В следствие того что НАТ бывает разный (жидкий и газообразный), типа траверсал и симметричный, возможны проблемы из-за неправильной трансляции СИП пакетов, такжеможет быть виноват твой firewall.
Для общих случаев нужен нехитрый трюк: изменить registration time expire с дефолтных 3600 на каких-нить 60, делается на устройствах, не на *.
При этом в регистрационном пакете все правильно указывается, и firewall не гасит открытый верхний порт по тайм-ауту, а вынужден его поддерживать вследствие постоянных запросов изнутри каждые 60 сек.
Самые большие траблы могут быть с 7912-ми.
Надеюсь, изложил понятно.
Вот что выводит команда 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
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, то ты заморочил * голову, так никакой звонок не пойдет.
А вот RTP - не ходит в обратную сторону.
_________________
ys
http://voip.rus.net/
С сигнализацией проблем нет, а вот с RTP что-то не очень складывается...
Смотри ещё - Reg. Contact : sip:4801@какой у тебя тут ИП и порт?;rinstance=72beb767aca8549a
а также - к вопросу: почему я не люблю софтфоны?
Как видно там Useragent : eyeBeam release 1004p, это значит, что если Вася забыл про дефолтный файервол на гаццком компе с виндой, то звонить на него можно до опупения, но ничего при этом не услышишь.
Информация в Reg. Contact аналогична Addr->IP. Адрес маршрутизатора, порт 2735. Что здесь интересного можно найти?
| Ded писал(а): |
| В строке .... Reg. Contact : sip:4801@ AsteriskIP:2735;rinstance=72beb767aca8549a ... не @ AsteriskIP:2735, а должен быть внутренний ИП адрес устройства, через которое регистрируется экстеншн 4801, типа Reg. Contact : sip:4801@192.168.0.15:5060 |
А если у тебя на этих позициях действительно адрес маршрутизатора, то никакой звонок не пойдет.
Почему тогда нет проблем со входящими звонками от шлюза, который живет снаружи?
В любом случае, тебе поможет анализ sip debug при входящем звонке со шлюза, и при внутреннем звонке между абонентами.
show running-config | include rout
в студию!
vg200#show running-config | include rout
ip route 0.0.0.0 0.0.0.0 Router_IP
vg200#show running-config | include rout
ip route 0.0.0.0 0.0.0.0 Router_IP
мы сейчас будем обсуждать глобальные рутинговые проблемы, цисковские конфиги, преимущества OSPF и EIGRP, но все дальше от темы топика.
На самом деле мне не очень понятно следующее: в моей конфигурации * всегда проксирует RTP трафик или нет? По SIP дебагам следует (если, конечно, все правильно понимаю), что при звонках в любую сторону RTP идет через него.
2. Сделай на * tcpdump host IP_addr_your_router при неудачном звонке, смотри на какие порты открывается соединение. Если только в одну сторону сыпет, то неверная информация об РТП соединении передаётся в пакете сигнализации.
| Ded писал(а): |
| Не обижайся, я не фтыкнулся, зачем вообще потекло в сторону vg200#show running-config | include rout ip route 0.0.0.0 0.0.0.0 Router_IP мы сейчас будем обсуждать глобальные рутинговые проблемы, цисковские конфиги, преимущества OSPF и EIGRP, но все дальше от темы топика. |
нет, не будем. сядь покрепче
http://www.cisco.com/warp/public/788/AVV ... voice.html
Added after 2 minutes:
ну и заодно на vg200 -
term mon
debug ccsip all
у нее хоть дебаг внятный в отличие от. (а вот тут holy war разводитьто точно не надо
| Цитата: |
| 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