Добрый день. Помогите пожалуйста разобраться с маршрутизацией на шлюзе.
Стоит 2 сетевые карты. поднято 5 интерфейсов (далее ip выдуманые для удобства)
на eth0 поднято 4 vlan. к провайдерам через свитч.(4 access порта в провайдерские сети, 1 trunk пропускающий четыре vlanа идет к моему шлюзу).
eth2 - 192.168.0.1/24 - локальная сеть
eth0.10 - 192.168.1.2/24 - провайдер 1
eth0.20 - 192.168.2.2/24 - провайдер 2
eth0.30 - 192.168.3.2/24 - провайдер 3
eth0.40 - 192.168.4.2/24 - провайдер 4
Создал 4 таблицы маршрутизации(соответсвенно на каждого провайдера)
Таблица MAIN:
192.168.1.0/24 dev eth0.10 scope link src 192.168.1.2
192.168.2.0/24 dev eth0.20 scope link src 192.168.2.2
192.168.3.0/24 dev eth0.30 scope link src 192.168.3.2
192.168.4.0/24 dev eth0.40 scope link src 192.168.4.2
192.168.0.0/24 dev eth2 proto kernel scope link src 192.168.0.1
Таблица 10:
default via 192.168.1.1 dev eth0.10
127.0.0.0/8 dev lo scope link
192.168.1.0/24 dev eth0.10 proto static scope link
192.168.0.1 dev eth2 scope link
Таблица 20:
default via 192.168.2.1 dev eth0.20
127.0.0.0/8 dev lo scope link
192.168.2.0/24 dev eth0.20 proto static scope link
192.168.0.1 dev eth2 scope link
Таблица 30:
default via 192.168.3.1 dev eth0.30
127.0.0.0/8 dev lo scope link
192.168.3.0/24 dev eth0.30 proto static scope link
192.168.0.1 dev eth2 scope link
Таблица 40:
default via 192.168.4.1 dev eth0.40
127.0.0.0/8 dev lo scope link
192.168.4.0/24 dev eth0.40 proto static scope link
192.168.0.1 dev eth2 scope link
Вывод команды «ip rule show»
0: from all lookup local
32763: from 192.168.1.2 lookup PROVIDER1
32764: from 192.168.2.2 lookup PROVIDER2
32765: from 192.168.3.2 lookup PROVIDER3
32766: from 192.168.4.2 lookup PROVIDER4
32767: from all lookup main
32768: from all lookup default
Задача состоит в том. чтобы через все четыре линка была возможность доступа в интернет. Хочу таким образом реализовать резервирование каналов и проверку работоспособности. Тоесть добавить правило например «ip rule add from 192.168.0.0/24 table PROVIDER1» чтобы пустить весь трафик из локальной сети на первого провайдера. По крону запустить скрипт проверки всех каналов и в случае падения основного канала переключать на другого правилом «ip rule add from 192.168.0.0/24 table PROVIDER2», плюс оповещать о работоспособности каналов.
В таблице MAIN не задан маршрут по умолчанию. Но он задан в таблицах для провайдеров. В чем и заключаеться проблема. когда пингую по интерфейсу ping 8.8.8.8 -I eth0.10
PING 8.8.8.8 (8.8.8.8) from 192.168.1.2 eth0.10: 56(84) bytes of data.
From 192.168.1.2 icmp_seq=1 Destination Host Unreachable
хотя подразумеваю, что ядро должно смотреть в таблицу PROVIDER1 и вытягивать оттуда гейтвей, так как есть правило «from 192.168.1.2 lookup PROVIDER1» Добился только того что шлюз доступен из вне по всем 4 интерфейсам, и ответ уходит туда окуда пришел запрос, тоесть на свой гейтвей.
Можно добавить правило ip route add default scope global nexthop via $P1 dev $IF1 weight 1 nexthop via $P2 dev $IF2 weight 1 и т.д. тогда все каналы как раз работают, но идет балансировка. а мне нужно чтобы интерфейс смотрел в свою таблицу и оттуда брал свой шлюз. Прошу у Вас помощи разобраться.