LINUX.ORG.RU
ФорумAdmin

Проблема с маршрутами и таблицами iproute2.

 ,


0

1

Система: opensuse 42.1

Ядро: Linux 4.1.31-30-default

iproute2 версия 4.2-1.1.

сеть настраивается через wicked.

Есть основной инет с реальным ip через vlan (для форума буду использовать 1.1.1.0/25), есть дополнительный соседский инет за роутером. Хочу подключить в свой сервер. Локалки за сервером нет. iptables настроен только для INPUT. Мануалы по настройке гуглил, изучал. Везде пишут примерно следующее:

ip route add $P1_NET dev $IF1 src $IP1 table T1
ip route add default via $P1 table T1
Пробую настроить.

Интерфейсы и адреса:

  • eth0 - смотрит в дополнительный инет. сеть 192.168.1.0/24, ip static 192.168.1.100, gw 192.168.1.1
  • eth1 - смотрит в основной инет. ip адреса не настроено.
  • vlan40@eth1 - собственно влан с настроенным ип. сеть 1.1.1.0/25, ip static 1.1.1.91, gw 1.1.1.126

Таблица main:

flame:~ # ip ro
default via 1.1.1.126 dev vlan40 
1.1.1.0/25 dev vlan40  proto kernel  scope link  src 1.1.1.91 

Добавляю новую таблицу в /etc/iproute2/rt_tables: 100 test

Добавляю маршрут на подсеть в свежесозданную таблицу test:

flame:~ # ip ro add 192.168.1.0/24 dev eth0 src 192.168.1.100 table test
flame:~ # ip ro l t test
192.168.1.0/24 dev eth0  scope link  src 192.168.1.100 

Добавляю дефолтный гейтвей в test и получаю следующее:

flame:~ # ip ro add default via 192.168.1.1 table test
RTNETLINK answers: Network is unreachable

Вопрос, почему? ведь маршрут на подсеть есть в таблице. При том что пинг до шлюза ходит

flame:~ # ping -I eth0 192.168.1.1
PING 192.168.1.1 (192.168.1.1) from 192.168.1.100 eth0: 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.526 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.248 ms

Но самое интересное то что если добавить маршрут на подсеть 192.168.1.0/24 в таблицу main, то дефолтный прекрасно добавляется в test. Однако даже добавив его туда таким способом и настроив ip rule, всеравно интернет через 192.168.1.1 не работает, tcpdump показывает arp запросы при пинге на интернетовские адреса.

Если Поменять местами маршруты, в main добавить маршруты через 192.168.1.1, а vlan40 добавить в test, картина меняется на противоположную. Через 192.168.1.1 все ходит, а через vlan40 нет.

Что еще пробовал: очищать главную таблицу и создавать две на каждый интерфейс - не работает вообще ничего. Такое ощущение что созданные таблицы вообще не работают.

Единственное что заработало так это если добавить оба дефолтных маршрута с разной метрикой в главную таблицу, тогда пинги ходят, но не все хосты почему то резолвятся через маршрут с большей метрикой, в моем случе был через 192.168.1.1, хотя nslookup нормально отрабатывает.

Может быть какой то глюк в системе?

ip ro....

Для начала, почему у вас нет сети 192.168.1.0/24 в таблице main? - оно само должно туда добавиться

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

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

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

Оно туда добавлялось автоматом.

Так и не трогайте. Дальше гугл «два провайдера» или так-то так.

anc ★★★★★ ()

Полезно сделать ip route flush cache после каких-либо изменений.

Stanson ★★★★★ ()
sudo yast -> Network Devices -> Network Settings ...

настраиваем vlan, forward, route и всё работает. внезапно и неожиданно. если хоцца изысков - сперва смотрим все параметры, включая iptables-save, потом начинаем ручками колобродить..

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