Ситуация:
Имею 2 аплинка, висящих на разных vlan-ах (503 и 504). На интерфейсах vlan-ов висят белые адреса с /32. Задача - заставить отвечать машину на запросы из сети.
Более детально:
[console]
,-- linux host ----------------,
| eth1.503 (1.1.1.4/32) ---\ |
| |-|-------- (2.3.4.5/32) router --- internet
| eth1.504 (1.1.1.5/32) ---/ |
'------------------------------'
[/console]
[console]
(linux host)# ping -I 1.1.1.4 2.3.4.5
PING 2.3.4.5 (2.3.4.5) from 1.1.1.4 : 56(84) bytes of data.
64 bytes from 2.3.4.5: icmp_seq=1 ttl=255 time=1.11 ms
64 bytes from 2.3.4.5: icmp_seq=2 ttl=255 time=0.242 ms
[/console]
[console]
(linux host)# ping -I 1.1.1.5 2.3.4.5
PING 2.3.4.5 (2.3.4.5) from 1.1.1.5 : 56(84) bytes of data.
64 bytes from 2.3.4.5: icmp_seq=1 ttl=255 time=1.09 ms
64 bytes from 2.3.4.5: icmp_seq=2 ttl=255 time=0.192 ms
[/console]
Соответственно обратно тоже пинги есть (на оба адреса).
Для реализации этого создано 2 таблицы маршрутизации, в которых прописаны маршруты на шлюз через соответствующие интерфейсы:
[console]
(linux host)# ip rule list
...
32763: from 1.1.1.4 lookup vlan_503
32764: from 1.1.1.5 lookup vlan_504
...
(linux host)# ip route list table vlan_503
2.3.4.5 dev eth1.503 scope link src 1.1.1.4
(linux host)# ip route list table vlan_504
2.3.4.5 dev eth1.504 scope link src 1.1.1.5
[/console]
Далее пытаюсь добавить дефолты через адрес провайдера в каждую таблицу, при этом получаю ошибку:
[console]
(linux host)# ip route add default via 2.3.4.5 table vlan_504
RTNETLINK answers: No such process
(linux host)# ip route add default via 2.3.4.5 table vlan_503
RTNETLINK answers: No such process
[/console]
Если же сделать подобные операции с main-таблицей, то все проходит "на ура":
[console]
(linux host)# ip route list
1.1.1.4 dev eth1.503 scope link
1.1.1.5 dev eth1.504 scope link
(linux host)# ip route add 2.3.4.5/32 dev eth1.504 src 1.1.1.5
(linux host)# ip route add default via 2.3.4.5
(linux host)# ip route list
2.3.4.5 dev eth1.504 scope link src 1.1.1.5
1.1.1.4 dev eth1.503 scope link
1.1.1.5 dev eth1.504 scope link
default via 2.3.4.5 dev eth1.504
[/console]
Вот собственно и вопрос - каким образом добавить дефолтный маршрут в "не дефолтные" таблицы маршрутизации?
Маршрутизация для двух аплинков
Всем спасибо за интерес. Вопрос решен.
Решение мне не совсем понятно и не может быть реализовано в конфигах. Зато работает :)
[console]
(linux host)# service network stop
(linux host)# vconfig add eth1 503
(linux host)# ip addr add 1.1.1.4/32 dev eth1.503
(linux host)# ip link set up dev eth1.503
(linux host)# vconfig add eth1 504
(linux host)# ip addr add 1.1.1.5/32 dev eth1.504
(linux host)# ip link set up dev eth1.504
(linux host)# echo "201 vlan_503" >> /etc/iproute2/rt_tables
(linux host)# echo "202 vlan_504" >> /etc/iproute2/rt_tables
(linux host)# ip route add 2.3.4.5/32 dev eth1.503 src 1.1.1.4 table vlan_503
(linux host)# ip route add 2.3.4.5/32 dev eth1.503
(linux host)# ip route add default via 2.3.4.5 dev eth1.503 src 1.1.1.4 table vlan_503
(linux host)# ip route del 2.3.4.5/32
(linux host)# ip route add 2.3.4.5/32 dev eth1.504 src 1.1.1.5 table vlan_504
(linux host)# ip route add 2.3.4.5/32 dev eth1.504
(linux host)# ip route add default via 2.3.4.5 dev eth1.504 src 1.1.1.5 table vlan_504
(linux host)# ip route del 2.3.4.5/32
(linux host)# ip rule add from 1.1.1.4 table vlan_503
(linux host)# ip rule add from 1.1.1.5 table vlan_504
(linux host)# ip route list
(linux host)# ip route list table vlan_503
2.3.4.5 dev eth1.503 scope link src 1.1.1.4
default via 2.3.4.5 dev eth1.503 src 1.1.1.4
(linux host)# ip route list table vlan_504
2.3.4.5 dev eth1.504 scope link src 1.1.1.5
default via 2.3.4.5 dev eth1.504 src 1.1.1.5
[/console]