Система: 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 нормально отрабатывает.
Может быть какой то глюк в системе?