LINUX.ORG.RU
ФорумAdmin

Voip


0

0

День добрый! Возникла проблема проброса sip протокола через шлюз. Есть шлюз Zyxel на нем 2 порта на каждый из портов подвешен аккаунт sip (c номерами 2233 и 3322, к примеру) VoIP шлюз подключается к интернету через шлюз с адресом 192.168.0.1, сам имеет адрес 0.2. При звонке с софтового телефона звонок проходит, слышен голос собеседника но только с одной стороны, т.е. на комп голос не проходит. Протестив в чем проблема в шлюзе или в софтфоне пришел к выводу, что проблема в шлюзе. Подскажите как настроить шлюз 0.1 чтобы он пропускал sip трафик.

Что уже пробовал: 1)модуль nf_nat_sip загружен 2)прямой проброс портов тоже пробовал делать через DNAT. т.е. все подключения на порт 5060 идут на voip шлюз по обоим протоколам udp и tcp. 3)где-то читал(источник не помню) что нужно открыть голосовые каналы идущие в освновном по портам 16384-16394, пробросил их тоже, результата ноль.

Конфа: Шлюз на Debian Lenny, активирован SNAT.

Пробовал делать настройки VOIP шлюза указав внешний адресс NAT'a и порт, не помогло.

Да и еще кодеки выбрал одинаковые с обоих сторон. G711, пробовал также G729


все подключения на порт 5060 идут на voip шлюз по обоим протоколам udp и tcp.


Порт 5060 - это сигнализация SIP протокола. Голос идет RTP пакетами, в большом диапазоне портов, каких - знает шлюз, обычно это что-то в диапазоне udp 10000-20000. У вас проблема, входящие RTP не доходят на шлюз 0.2.

zgen ★★★★★ ()
Ответ на: комментарий от guyvernk

Спасибо!

только вот я не очень-то силен в техническом английском. =( Но разберусь и отпишусь о решении проблемы на русском =)

l4h ()

Разведи номера портов сигнального соединения, например у первого номера порт 5060, у второго порт 5061.

no-dashi ★★★★★ ()
Ответ на: комментарий от no-dashi

Я уже попробовал:

Chain INPUT (policy ACCEPT) target prot opt source destination

ACCEPT tcp  — 0.0.0.0/0 0.0.0.0/0 tcp dpt:8118

ACCEPT icmp — 0.0.0.0/0 0.0.0.0/0 icmp type 255

ACCEPT all  — 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED

ACCEPT tcp  — 0.0.0.0/0 0.0.0.0/0 tcp dpt:5060

ACCEPT udp  — 0.0.0.0/0 0.0.0.0/0 udp dpt:5060

DROP all  — 0.0.0.0/0 0.0.0.0/0

Chain FORWARD (policy ACCEPT)

DROP tcp  — 0.0.0.0/0 0.0.0.0/0 tcp dpt:80

Chain OUTPUT (policy ACCEPT) target prot opt source destination

NAT:

Chain POSTROUTING (policy ACCEPT) target prot opt source destination

SNAT all  — 192.168.10.0/24 0.0.0.0/0 to:X.X.X.X(внешний ip)

LSMOD:

lsmod | grep sip

nf_nat_sip 5440 0

nf_conntrack_sip 16124 1 nf_nat_sip

nf_nat 15576 2 nf_nat_sip,iptable_nat

nf_conntrack 55540 6

nf_nat_sip,nf_conntrack_sip,xt_conntrack,iptable_nat,nf_nat,nf_conntrack_ipv4

Cогласно http://www.iptel.org/sipalg/

l4h ()
Ответ на: комментарий от l4h

Так же пробовал следущую схему:

выгружаем модуль SIP, затем:

Затем настраиваем шлюз: iptables -I INPUT 1 -p udp -m udp -i ppp0 --dport 5060:5070 -j ACCEPT

iptables -I INPUT 2 -m state --state ESTABLISHED,RELATED -i ppp0 -j ACCEPT

iptables -P FORWARD ACCEPT(дропаем только 80 порт)

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -i eth0 -o ppp0 -j SNAT --to-source X.X.X.X

iptables -t nat -A PREROUTING -p udp -m udp -i ppp0 --dport 5060:5070 -j DNAT --to-destination 192.168.10.251

iptables -t nat -A PREROUTING -p udp -m udp -i ppp0 --dport 10000:20000 -j DNAT --to-destination 192.168.10.251

l4h ()

>При звонке с софтового телефона звонок проходит, слышен голос собеседника но только с одной стороны, т.е. на комп голос не проходит.

То есть связь была установлена, значит это не проблема с сетевыми настройками. А то что голос слышно только в одну сторону это проблема несовместимости кодеков и декодеров на одной из сторон. Нужно перепробовать разные кодеки на обоих сторонах, или даже попробовать другой софтфон.

Lucky1 ★★★ ()
Ответ на: комментарий от Lucky1

Как я только уже не пробовал. Пробовал X-lite и sippoint Mini. Mini вообще не туда и не сюда(слышимости нет, звонок проходит), а x-lite дает нам одностороннюю слышимость- если говорю я, то меня слышат, а я их нет.

и пробовал иначе, может, я чего не понимаю, но думаю должно прокатить. Настроил на шлюзе два номера и пробую звонить с одного на другой, шлюз подключен к АТС Panasonic tem824.

Шлюз настроил след образом:

если без модуля ip_nat_sip:

то настройки NAT & DNAT постом выше и в VoIP шлюзе прописываю адресс и порт NAT X.X.X.X:5060 & X.X.X.X:5061 для другого номера. Выставляю одинаковые кодеки G711 или G729. и звоню через обычные аналоговые телефоны(через атс) эффект тот же.

l4h ()
Ответ на: комментарий от zgen

В качестве VoIP шлюза используется zyxel 2002 with LifeLine В качестве кодеков используется G711 и G729.

Я тут копнул tcpdump -t -n dst host sipnet.ru or src host sipnet.ru и получил следующий дамп:

http://pastebin.com/QiwgWiab

Я так понимаю, что 251 шлюз(VoIP) отправляет голос через тот же 5060 порт или не отправляет его вообще и возникает вопрос почему сигнализирующие порты на компе не открываются(5060), в общем не могу понять, что тут на самом деле происходит...

l4h ()
Ответ на: комментарий от Vit

UPnP не нужен, модуль nf_nat_sip обеспечивает проброс портов =)

Звонки проходят за NAT без проблем, единственная и основная проблема не проходит голос с обычного офисного телефона через шлюз, если звоню через X-Lite то меня слышно, а я не слышу. Получается связь типа: звонок с компа: я говорю меня слышат, я же ничего не слышу. звонок с аналогова телефона снова же меня слышат, я не слышу.

l4h ()
Ответ на: комментарий от l4h

Я так понимаю, что 251 шлюз(VoIP) отправляет голос через тот же 5060 порт или не отправляет его вообще

Вы ничерта не понимаете. Голос отправляется (и принимается) тому и от того, кому и от кого скажет sipnet. Если бы весь голосовой траф шел через sipnet, они бы умерли.

и возникает вопрос почему сигнализирующие порты на компе не открываются(5060), в общем не могу понять, что тут на самом деле происходит...

Потому что UDP, как они должны «открываться»?

zgen ★★★★★ ()
Ответ на: комментарий от l4h

Не вижу логики. Вы пишете, что порты у вас пробрасываются, и после этого описываете эффект от того, что они не проброшены.

И с терминами непонятно. По-моему вы называете словом «шлюз» 2 разные вещи. Роутер (дебиановский) и VOIP-гейт для аналоговых телефонов. К зикселю дополнительных компьютеров не подключено, и траффик он не роутит. Поправьте, если не так.

Сделайте стандартную конфигурацию, которая работает всегда, а потом докручивайте ее до нужного состояния:

1. Поднимите UPnP на роутере, если его нет

Обычно этого хватает на все и сразу. Если на роутере внешний IP. Шлюзы и софтфоны обычно поддерживают UPnP автоматически. Если есть настройка - включить.

По обстоятельствам:

2. Пропишите STUN-сервер (например, из Ekiga/Empathy)
3. Укажите для передачи tcp транспорт вместо udp

Можно еще с proxy для трафика баловаться, если SIP-провайдер предоставляет, но это для особо тяжелых случаев и вносит лишние задержки. Лучше не использовать.

Кодеки не трогайте.

Vit ★★★★★ ()
Ответ на: комментарий от Vit

2zgen

то что с них и на них не идет ни какого трафика.

2Vit

тогда возникает вопрос, как работает программа x-lite? Насколько я понимаю UPnP должен быть поднят на роутере, который имеет внешний IP, который собственно и отвечает за доступ в интернет локальной сети, но ведь он не поднят. А программа X-Lite работает как с загруженным модулем nf_nat_sip так и без него, как так получается? Ведь пробросить порты она не может. Есть конечно догадка, что она использует tcp для установления соединения и использует этот порт на все случаи жизни, а внутри себя распределяет траф. Или я глупость сказал?

l4h ()
Ответ на: комментарий от Vit

Я вроде указывал выше в сообщениях, что уже пробовал использовать stun сервер, который советуют использовать в sipnet. stun.sipnet.ru но не помогло, единственное что не пробовал так это UPnP поднимать.

l4h ()
Ответ на: комментарий от l4h

Проблема решена. Общая инструкция настройки VoIP шлюзов через NAT для sipnet.ru: Если у вас уже есть аккаунт на sipnet.ru, то просто прописываем регистрационные данные(подробнее на sipnet.ru) дальше в своем кабинете смотрим каким образом зарегался ваш девайс с внешним IP(95.100.90.90, например) или с внутренним(192.168.0.1) и если он зарегался с внешним ипом добиваемся чтобы он регался с внутренним, при этом ни какой поддержки sip на роутере включать не надо и порты пробрасывать тоже. После этого все работает. Всем спасибо!

l4h ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.