Страница 1 из 2

Sip клиент за nat порт 5060 закрыт провайдером

СообщениеДобавлено: 31 окт 2016, 21:53
Andrey68
Здравствуйте, уважаемые жители конференции.
Существует одна проблема для меня, никак не могу её решить.

Есть настроенный сервер asterisk дома на белом статическом адресе. Никаких роутеров и компьютеров-шлюзов перед ним не стоит.
Есть два sip клиента которые подключены к серверу. Один в локальной сети за роутером, который на белом динамическом ip – D-Link. Второй в локальной сети за роутером, который на сером динамическом ip - Linksys/PAP2.

С первым проблем нет, sip сигнализация и голос ходит в обе стороны нормально. Он работает со стандартным портом сервера 5060.
Не решаемая проблема для меня оказалась со вторым. Началось всё с того, я сменил провайдера с Tele2 на Yota.
Сразу же выяснилось, что то не так с портом udp 5060, поддержка наотрез отказалась признавать это. Но, факт упрямая вещь, при попытках достучаться на стандартный порт udp sip 5060, tcpdump показал гробовую тишину.

Я, имея малый опыт с такой ситуацией, не сразу догадался в чём дело, плюс ответы поддержки провайдера, упорно искал проблему на свой стороне. Наконец, решил попробовать другой порт из диапазона 1024-65535, и о, радости было….пакетики забегали, tcpdump бодро рапортовал о трафике. Следующим шагом было вернуть трафик на стандартный порт уже на сервере. Т.к. компьютер с asterisk сам является шлюзом и раздатчиком интернета по совместительству, я добавил правило в фаерволл :

$IPT -A PREROUTING -t nat -i $EXT_INT -p udp --dport 55555 -j REDIRECT --to ports 5060

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

Погуглив на тему, «разговор обрывается» всё сходится к тому, надо бороться с nat. Естественно это приводит к не работающей sip сигнализации о состоянии ( включение, отбой т.д.), Что в свою очередь вызывает, обрыв разговора, не известное состояние клиента ( положил трубку или нет, взял трубку или нет и т.д.)

Вот решил задать вопрос на конференции знающим людям, возможно у кого-то уже была схожая проблема и есть решение, прошу помогите уже замучился я с этим nat.
Прилагаю лог обмена с сервером asterisk обоих клиентов( второй проблемный , Linksys/PAP2)
[Показать] Спойлер:
Код: выделить все
<------------>
NOTIFY sip:11@192.168.1.102:55600 SIP/2.0
Via: SIP/2.0/UDP IP_ASTER:5060;branch=z9hG4bK14999bae;rport
Max-Forwards: 70
From: "asterisk" <sip:asterisk@IP_ASTER>;tag=as050d8c74
To: <sip:11@192.168.1.102:55600>
Contact: <sip:asterisk@IP_ASTER:5060>
Call-ID: 7cae4de232f3cfe424ddaaaf66f9f8a9@IP_ASTER:5060
CSeq: 102 NOTIFY
User-Agent: Asterisk PBX 1.8.17.0
Event: message-summary
Content-Type: application/simple-message-summary
Content-Length: 89

Messages-Waiting: no
Message-Account: sip:asterisk@IP_ASTER
Voice-Message: 0/0 (0/0)

---

<--- SIP read from UDP:176.109.23.242:55600 --->

SIP/2.0 200 OK
Via: SIP/2.0/UDP IP_ASTER:5060;rport;branch=z9hG4bK14999bae
From: "asterisk" <sip:asterisk@IP_ASTER>;tag=as050d8c74
To: <sip:11@192.168.1.102:55600>;tag=e078ac3a-749023
Call-ID: 7cae4de232f3cfe424ddaaaf66f9f8a9@IP_ASTER:5060
CSeq: 102 NOTIFY
Contact: <sip:11@192.168.1.102:55600>
User-Agent: dlink 12-3868-2419-0.10.56.1-DS+
Content-Length: 0

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

<--- SIP read from UDP:188.162.51.83:58511 --->

NOTIFY sip:IP_ASTER:55555 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.177:5060;branch=z9hG4bK-a752081;rport
From: Babushka <sip:12@IP_ASTER:55555>;tag=43038928db7efc0bo0
To: <sip:IP_ASTER:55555>
Call-ID: b38c655c-1a06ad67@192.168.1.177
CSeq: 5000 NOTIFY
Max-Forwards: 70
Event: keep-alive
User-Agent: Linksys/PAP2-3.1.22(LS)
Content-Length: 0


<------------->
<--- Transmitting (NAT) to 188.162.51.83:58511 --->

SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.1.177:5060;branch=z9hG4bK-a752081;received=188.162.51.83;rport=58511
From: Babushka <sip:12@IP_ASTER:55555>;tag=43038928db7efc0bo0
To: <sip:IP_ASTER:55555>;tag=as6f999d20
Call-ID: b38c655c-1a06ad67@192.168.1.177
CSeq: 5000 NOTIFY
Server: Asterisk PBX 1.8.17.0
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer

Re: Sip клиент за nat порт 5060 закрыт провайдером

СообщениеДобавлено: 01 ноя 2016, 07:38
april22
Vpn?
Нет?
Поставте там где у Вас пат2т например микротик и натяните к серверу vpn.

Re: Sip клиент за nat порт 5060 закрыт провайдером

СообщениеДобавлено: 01 ноя 2016, 13:02
ded
я добавил правило в фаерволл :

$IPT -A PREROUTING -t nat -i $EXT_INT -p udp --dport 55555 -j REDIRECT --to ports 5060
не надо этого.
Надо просто забиньдить chan_sip на другой порт, пусть ваш 55555 в sip.conf
bindport=55555
убедиться - проверить
netstat | grep asterisk

И удалённым SIP клиентам регистрироваться на ваш белый_ИП:55555

Re: Sip клиент за nat порт 5060 закрыт провайдером

СообщениеДобавлено: 01 ноя 2016, 14:31
Zavr2008
а если transport=tcp?

Re: Sip клиент за nat порт 5060 закрыт провайдером

СообщениеДобавлено: 01 ноя 2016, 15:32
ded
Zavr2008, думаешь провайдер такой лопух, что закрыл 5060 UDP, а про ТСР забыл?

Re: Sip клиент за nat порт 5060 закрыт провайдером

СообщениеДобавлено: 01 ноя 2016, 16:54
Zavr2008
почему-то думаю что так и есть)

Re: Sip клиент за nat порт 5060 закрыт провайдером

СообщениеДобавлено: 01 ноя 2016, 18:07
virus_net
ded, да вполне может быть.
В практике встречал даже что TCP 5060 закрыт, а UDP при этом работает. По звонку прову они вообще были шокированы тем, что оно ещё и по UDP работает, т.к. "как так... вот ведь у нас в офисе по TCP!"
Вот так вот :)

Re: Sip клиент за nat порт 5060 закрыт провайдером

СообщениеДобавлено: 02 ноя 2016, 00:06
Andrey68
ded писал(а):

я добавил правило в фаерволл :

$IPT -A PREROUTING -t nat -i $EXT_INT -p udp --dport 55555 -j REDIRECT --to ports 5060
не надо этого.
Надо просто забиньдить chan_sip на другой порт, пусть ваш 55555 в sip.conf
bindport=55555
убедиться - проверить
netstat | grep asterisk

И удалённым SIP клиентам регистрироваться на ваш белый_ИП:55555


Согласен, пробывал, но эти D-Link-и вечно убогие и не доделанные. Мне как раз такой попался, не знает что такое подключаться на не стандартный порт. Вот и выкручиваюсь как то "животное на гребешке".
Пока подключил по pptp на OpenWrt дело пустяшное, но блин товарищи это опять костыль. Думаю щас вот вернуть на проблемном клиенте стандартный порт, а завернуть трафик уже iptables OpenWrt на роутере сначало со стандартного на 55555, на сервере правило оставить, то которое заворачивает с 55555 на 5060.
Потом отпишусь.

Re: Sip клиент за nat порт 5060 закрыт провайдером

СообщениеДобавлено: 02 ноя 2016, 18:43
Zavr2008
$IPT -A PREROUTING -t nat -i $EXT_INT -p udp --dport 55555 -j REDIRECT --to ports 5060

ТС, ded Вам не просто так написал про bindport вместо хрени что нарисовали. Используйте DNAT вместо REDIRECT.
А еще лучше - совет dedа без выкрутасов.


Код: выделить все
iptables -t nat -A PREROUTING -i $EXT_INT -p udp --dport 55555 -j DNAT --to 192.168.xxx.xxx:5060

Re: Sip клиент за nat порт 5060 закрыт провайдером

СообщениеДобавлено: 02 ноя 2016, 19:13
yvatfwp
Офтоп: Что-то у вас с разметкой странное http://i85.fastpic.ru/big/2016/1102/5f/181d30c698b0fc4d8474eae8f250215f.png