IMHO in SOHO ([info]ckopo_peka) wrote,
@ 2009-08-20 13:57:00
Previous Entry  Add to memories!  Tell a Friend  Next Entry
проблемы с VoIP
Нодавно озаботился вновь связить две АТС LG LDK-100 через интернет, чтобы по внутренним номерам можно было как-бы напрямую звонить, не через внешних операторов, а через IP-туннель. Я такое уже делал, когда офисы находились в относительной близости. Но с тех пор офисы разъехались дальше и между ними я поднял IPSec-теннуль между сетями на openswan. Собственно используя этот же туннель решил связвть и АТС-ки. Но, столкнулся со странным для меня глюком, первый же пакет от АТС не мог пройти шлюз. Всячески ковыряя что не так с пакетом и со шлюзом нашёл, что пакет дольше таблицы nat PREROUTING в iptables не проходит. При этом всё другое, кроме прохождения голосового трафика с АТС, прекрасно работает. Вообщем поменял на АТС в настройке VOIB параметр NO DELAY (TOS) на OFF. И всё заработало. Теперь надо на второй станции также прописать, чтобы оттуда звонить могли.
При дальнейшем сравнении пакетов, нашёл что в непроходящих пакетах tcpdump показывал какое-то значение ECT(1), а на работающих пакетах такого значения нет.

нераб:
11:22:22.302329 IP (tos 0x1,ECT(1), ttl 30, id 3603, offset 0, flags [none], proto TCP (6), length 44) 192.168.0.254.62048 > 192.168.1.254.1720: S, cksum 0x5737 (correct), 3526931152:3526931152(0) win 16000
раб:
14:09:05.284058 IP (tos 0x0, ttl 30, id 2779, offset 0, flags [none], proto TCP (6), length 44) 192.168.0.254.45806 > 192.168.1.254.1720: S, cksum 0xf202 (correct), 888992947:888992947(0) win 16000

Ещё об этой проблеме писал в ru_root, и пост скопирую сюда под кат.


Есть следующая проблема которую я не могу понять.
Есть две сети 192.168.0.1/24 , 192.168.1.1/24.
Для связи между сетями на линуксовых шлюзах поднят openswan 2.4.15,
в iptables форвардинг запрещён и открыт только для тех узлов которым можно.

Есть две АТС которые нужно соеденить, раньше они находились в относительной близости и прекрасно работали в gre туннеле. Соеденяются АТС по 1720 порту (H.323). Форвардинг между этими АТС разрешён, если подменить одну из них другим устройством, то пинги ходят, UDP через туннель тоже проходят, если надо.

Но, при нормальном звонке пакеты дальше шлюза не уходят. Tcpdump приходящий на шлюз пакет показывает как

11:22:22.302329 IP (tos 0x1,ECT(1), ttl 30, id 3603, offset 0, flags [none], proto TCP (6), length 44) 192.168.0.254.62048 > 192.168.1.254.1720: S, cksum 0x5737 (correct), 3526931152:3526931152(0) win 16000

На внешнем интерфейсе шлюза при этом полная тишина.
В чём может быть проблема?

UPD. Решено настройкой на станции.


Как не пытался найти особенности непроходимых пакетов от проходимых, никак не получалось. Непроходимые пакеты дальше таблицы nat (PREROUTING) не проходили :-)

Вот он так выглядит в логах iptables:
Aug 20 11:33:08 proletar kernel: PREROUTINGIN=eth1 OUT= MAC=00:80:48:db:c1:89:00:40:5a:15:c9:fb:08:00 SRC=192.168.0.254 DST=192.168.1.254 LEN=44 TOS=0x00 PREC=0x00 TTL=30 ID=3695 PROTO=TCP SPT=30581 DPT=1720 WINDOW=16000 RES=0x00 SYN URGP=0

А вот так такой же пакет после перенастройки на АТС:
Aug 20 12:12:53 proletar kernel: PREROUTINGIN=eth1 OUT= MAC=00:80:48:db:c1:89:00:40:5a:15:c9:fb:08:00 SRC=192.168.0.254 DST=192.168.1.254 LEN=44 TOS=0x00 PREC=0x00 TTL=30 ID=3 PROTO=TCP SPT=45363 DPT=1720 WINDOW=16000 RES=0x00 SYN URGP=0

Я разницы принципиальной не вижу.
В настройках VOIB на станции переключил параметр NO DELAY (TOS) в OFF. И всё заработало (ну, на второй станции также надо сделать, чтобы оттуда звонить можно было).
Но как эту разницу отследить в сетевых пакетах?


Advertisement


(No comments)

Post a comment in response:

From:
Help
Identity URL: 
Username:
Password:
Don't have an account? Create one now.
Subject:
No HTML allowed in subject
   Help
Message:

 
Notice! This user has turned on the option that logs your IP address when posting. Help
Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…