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

[Решено] Asterisk и маршрутизация пакетов (несколько интерфейсов)

Newbies/FAQ Forum 11 сообщений 13.09.2011 13:20 - 16.09.2011 23:22
#1 13.09.2011 13:20

[Решено] Asterisk и маршрутизация пакетов (несколько интерфейсов)


Возникла странная ситуация, провайдер провел кабель и повесил на него свой шлюз. После договорились, шлюз упразднить,кабель завести в сервер астериск и работать напрямую. Так и сделали,получилось три интерфейса, один глобальный, один локальный в сеть офиса, и еще один в сеть провайдера. Интерфейс в сеть провайдера работает, пакеты по нему ходят.
Далее, провайдер дает IP куда коннектиться сипом. IP этот вообще не и сети которую дал провайдер а глобальный, но ходить туда надо через тот кабель что дал провайдер. Я настраиваю маршрутизацию что бы принудительно пускать все пакеты на этот ip через настроенный на провайдера интерфейс. Все нормально работает, трейсроут ходит как надо.
А вот астериск почему то все равно ломится к провайдеру через глобальный канал. Такое ощущение что для него таблица маршрутизации это не писанное правило. Как бы ему объяснить как куда и через чего ходить. Ничего кроме определения сетей в конфигурации я не нашел.


Last edited by max73 on Fri Sep 16, 2011 23:20
#2 13.09.2011 15:46

localnet, externip в студию.
Ну и вывод route.
Астериск не занимается маршрутизацией пакетов. Этим занимается ядро.

_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones
#3 13.09.2011 16:10

externip=90.20.190.44
localnet=192.168.0.0/255.255.255.0
localnet=10.200.30.192/255.255.255.224

ну и таблица маршрутизации:


Code:

xxxx@xxxx:/etc# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
90.290.20.34 10.200.30.193 255.255.255.255 UGH 0 0 0 eth2
90.20.190.40 0.0.0.0 255.255.255.248 U 0 0 0 eth0
10.200.30.192 0.0.0.0 255.255.255.224 U 0 0 0 eth2
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
0.0.0.0 10.200.30.193 0.0.0.0 UG 0 0 0 eth2
0.0.0.0 90.20.190.41 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth1


говорит что то о чем то?

трейсроут ходит как по маслу через чего надо и куда надо
#4 13.09.2011 17:52

Сдается мне 3 дефолтовых роута это не к добру:

Code:
0.0.0.0 10.200.30.193 0.0.0.0 UG 0 0 0 eth2
0.0.0.0 90.20.190.41 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth1
#5 13.09.2011 18:11

а как мне еще указать серверу куда посылать пакеты для той или иной сети?


пойду курить iproute2 и рисовать таблицы маршрутизации.
Блин, ну почему все не может быть просто. Sad
#6 13.09.2011 18:23

для той или иной сети должны быть статик роуты, типа
Code:
10.200.30.0 10.200.30.193 255.255.255.0 UG 0 0 0 eth2


и только один дефолт роут
#7 13.09.2011 19:06

Code:
sudo route add ip-сервера-провайдера gw шлюз-через-который вы подключаетесь

Допустим это будет выглядеть так
Code:
sudo route add 10.200.30.5 gw 10.200.30.1

где 10.200.30.5 - ip сервера телефонии провайдера
а 10.200.30.1 - шлюз провайдера

_________________
Gentoo, Asterisk 1.8.5, GSM
#8 14.09.2011 05:15

По мне так надо перелопатить route. Должно остаться ТОЛЬКО следующее:

Code:
90.290.20.34 10.200.30.193 255.255.255.255 UGH 0 0 0 eth2
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
0.0.0.0 90.20.190.41 0.0.0.0 UG 0 0 0 eth0


итого:
1. Выход на IP-телефонию через нужный шлюз.
2. Работа с внутренней сеткой напрямую по интерфейсу.
3. Выход в интернет через шлюз интернет-провайдера.

То есть после полной очистки таблицы делаем следущее:
Code:
#route add default gw 90.20.190.41
#route add host 90.290.20.34 gw 10.200.30.193

На 192.168.x.x само пропишется.

Это если я правильно понял, какие у вас шлюзы куда смотрят.
#9 14.09.2011 09:35

Если у тебя etcnet система конфига сети, то в каталоге /etc/net/ifaces закоментируй строку
default via xxx.xxx.xxx.xxx в файле ipv4route
для всех интерфейсов, кроме 90.20.190.44

_________________
http://www.myipats.ru
#10 14.09.2011 19:10

вот кстати мудрый совет, ибо потому что система сама пишет эти дефолтные маршруты. Я вот как раз думал как бы из не писать, но они зараза от рестарта к рестарту восстают из мертвых Sad

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

Но не важно, сейчас мне главное проверить связь с провайдером.

Added after 1 hours 58 minutes:

не помогло Sad

Added after 5 minutes:

а тем не менее traceroute почему то ходит по какому надо пути, и этот момент меня весьма бесит Sad

Added after 6 minutes:

но больше всего бесит:

Code:

xxx@xxx:~# ip route get to 90.290.20.34
90.290.20.34 via 10.200.30.193 dev eth2 src 10.200.30.212
cache mtu 1500 advmss 1460 hoplimit 64



ну что еще этой гадине надо то!!!!!?????? все же правильно понимает куда чего пихать
Sad

Added after 10 minutes:

а да, еще
там на этой машине еще один маршрут торчит, который ятту не стал приводить. Есть главный маршрутизатор, на него приходят многие vpn каналы, в том числе и моя домашняя сеть, ну чтоб удобно было рулить всем этим по IP а не пробросами портов. Так вот, маршрутик это работает и нормально работает. То есть все пакеты для сети 192.168.222.0/24 отсылает на главный маршрутизатор и тот уже их мне домой шлет. Я дома как бы на работе сижу, никаких проблем.

ТАК КАКОГО ХРЕНА ASTERISK НЕ ХОЧЕТ СЛАТЬ ПАКЕТЫ ВСЕГО ЛИШЬ ДЛЯ ОДНОГО IP ПО ТОМУ МАРШРУТУ КОТОРЫЙ Я ЕМУ УКАЗАЛ!!!!!!?

Sad
#11 16.09.2011 23:22

вопрос решился добавлением к sip.conf:

localnet=90.290.20.34/32

кстати, никто почему то не обратил внимание на 290 в адресе, чего не может быть в принципе. Wink
но не важно, протсо всем на будущее надо учесть, если транк к провадеру идет таким хитрым способом, то есть ip провайдерского сервера не попадает в выделенную сеть, то надо его указывать как локальный, тогда астериск пошлет его как надо.

Added after 1 minutes:

да, и спасибо господам с ЖЖ, хоть я и наехал на одного из них, думал что троль такой. Оказалось что просто человек привык более детально описывать задави и не мог понять моих общих описаний.