LINUX.ORG.RU
решено ФорумAdmin

Помогите! Не идут пакеты через маршрут по-умолчнию.

 , , , ,


0

2

Здравствуйте друзья!
Есть OpenWRT роутер с OpenVPN клиентом.
У местного провайдера трафик в интернет очень дорогой, поэтому у него куплено соединение в местную городскую сеть.
В настройках местное соединение (wan) не является шлюзом - прописаны статические маршруты до подсетей города:

#ip route show all
31.40.24.0/22 via 62.209.137.254 dev eth1  proto static
31.135.208.0/21 via 62.209.137.254 dev eth1  proto static
31.148.144.0/22 via 62.209.137.254 dev eth1  proto static
....
Одновременно поднято 3 OpenVPN tun_a(tun0), tun_b(tun1), tun_c(tun2) туннеля до разных серверов в городской сети (там интернет в разы дешевле):
6: tun2: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 100
    link/none
7: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 100
    link/none
8: tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 100
    link/none
Адресация такая:
tun_a: 10.8.1.0/24, gw=10.8.1.100, client=10.8.1.102
tun_b: 10.8.2.0/24, gw=10.8.2.100, client=10.8.2.102
tun_c: 10.8.3.0/24, gw=10.8.3.100, client=10.8.3.102
Так же есть скрипт который проверяет существует ли туннель и пробует пингануть гуглднс через него командой ping -I tun0 8.8.8.8 -c 3 -q.
Далее через grep смотрим результат и если tun0 поднят и работает, то делаем его шлюзом: ip route add default dev tun0; Результат:
default dev tun0  scope link
10.8.1.0/24 dev tun0  proto kernel  scope link  src 10.8.1.107
10.8.2.0/24 dev tun1  proto kernel  scope link  src 10.8.2.102
10.8.3.0/24 dev tun2  proto kernel  scope link  src 10.8.3.102
31.40.24.0/22 via 62.209.137.254 dev eth1  proto static
31.135.208.0/21 via 62.209.137.254 dev eth1  proto static
31.148.144.0/22 via 62.209.137.254 dev eth1  proto static
37.110.208.0/21 via 62.209.137.254 dev eth1  proto static
...
При этом с самого роутера ping mail.ru проходит, равно как и с компов для которых роутер openwrt является шлюзом.
роняем tun0 командой fdown tun_a
Скрипт отрабатывает, видит что нет tun0 или через него не пингуется днс и настраивает все на tun1 командой: ip route add default dev tun1 Но, после этого пинг маил.ру дает такой резуьтат:
root@OpenWrt:~# ping mail.ru
PING mail.ru (217.69.139.199): 56 data bytes
ping: sendto: Network is unreachable
Выхлоп команды ip route show all:
default dev tun1  scope link
10.8.2.0/24 dev tun1  proto kernel  scope link  src 10.8.2.102
10.8.3.0/24 dev tun2  proto kernel  scope link  src 10.8.3.102
31.40.24.0/22 via 62.209.137.254 dev eth1  proto static
31.135.208.0/21 via 62.209.137.254 dev eth1  proto static
31.148.144.0/22 via 62.209.137.254 dev eth1  proto static
37.110.208.0/21 via 62.209.137.254 dev eth1  proto static
Пробовал задавать маршрут такими командами:
ip route add default scope global dev tun1 #получаем default dev tun1, но пакеты так никуда и не отправляются
ip route add 0.0.0.0/0 via 10.8.2.100 #получаем default via 10.8.2.100 dev tun1, но так же ничего и никуда не идет.
Поднимаем tun0 (ifup tun_a), но пока не делаем его шлюзом.
Получаем default via 10.8.2.100 dev tun1 - все верно, скрипт еще не отработал (для отладки я вместо него сам уже команды ввожу :) )
#Выполняем
ip route add default dev tun0 #иииииииии опять облом, в ответ на пинг 217.69.139.200 получаем sendto: Network is unreachable
#При этом, если выполнить
ping -I tun0 #то видно что интерфейс пашет
root@OpenWrt:~# ping -I tun0 217.69.139.200
PING 217.69.139.200 (217.69.139.200): 56 data bytes
64 bytes from 217.69.139.200: seq=0 ttl=50 time=128.661 ms
64 bytes from 217.69.139.200: seq=1 ttl=50 time=77.247 ms

Друзья, помогите плиз, что не так с этим роутингом?
2-ые сутки сижу уже :)
Не люблю спрашивать, всегда по мануалу сам дохожу, но это не тот случай.
P.S> Любопытная деталь: если до того как я изначально роняю tun0 с компа из локалки (openwrt для компа шлюз) выполнить ping mail.ru, то получаем, что в момент падения tun0 будет такой ответ

From OpenWRT.lan (192.168.1.215) icmp_senq=214 Destination Net Unreachable
From OpenWRT.lan (192.168.1.215) icmp_senq=215 Destination Net Unreachable
From OpenWRT.lan (192.168.1.215) icmp_senq=216 Destination Net Unreachable
64 bytes from cp.mail.ru (217.69.139.200) icmp_senq=217 ttl=50 time=71 ms
64 bytes from cp.mail.ru (217.69.139.200) icmp_senq=218 ttl=50 time=71 ms
....
И пинг так и будет идти, пока не нажмешь ctrl+c. Если начать пинговать заново, то все - Destination Net Unreachable
Выручайте друзья!!!



Последнее исправление: real_r (всего исправлений: 1)

Может у тебя на той стороне ВПН туннеля нет маршрута обратного, на твою подсеть. Как сказали проверь через traceroute.

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

Узбекистан.
1Мбит трафика (анлим) стоит 100 баксов - это в столице.
Там где это я мучу - горы с одним единственным провайдером монополистом. У него ценник в 2-3 раза выше и качество отстой. Гораздо удобнее через крупный город трафик пустить. Там все равно в офисах жирные каналы есть и стоимость за счет объема тоже ниже.

real_r
() автор топика
Ответ на: комментарий от Radjah

Так очевидно же что анричибл ответят мне.

real_r
() автор топика
Ответ на: комментарий от arsik

Сначала же все работает.
Только при смене default перестает.
Да и если выполнять пинг через интерфейс (ping -I tun2 -c 3 8.8.8.8) - все работает.
Ну раз товарищи настаивают, то вот трасероут:

root@OpenWrt:~# traceroute mail.ru
traceroute to mail.ru (94.100.180.199), 30 hops max, 38 byte packets
 1traceroute: sendto: Network is unreachable

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

А если изначально не tun0 поднимать, а tun1. Может у тебя с этим туннелем проблемы. покажи еще выхлоп ip rule

arsik
()

Проблема решилась.
Сборку опенврт компилил сам чтоб опенвпн клиент влез в память роутера (3,5мб). Так вот после предыдущих сборок, оказалось что остался в конфиге пакет mwan3 (Multi WAN). В менюконфиге он в нескольких местах есть (его части). Случайно заметил его в ps. А ведь у него даже конфига в системе не было. Короче говоря это он весь роутинг ломал. Другой вопрос как он это делал, если таблицы роутинга были нормальными, а правил маршрутизации кроме дефолтных не было. Но да ладно, некогда изучать его. Самое главное все работает как надо.

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