Не работает маршрутизация по дополнительным таблицам маршрутизации.Дело в следующем:
Есть шлюз:
операционка Linux Fedora Core v.14 (v.13)
(NetworkManager из системы удален; avahi daemon остановлен (на всякий случай));
пять сетевых плат:
eth0: (смотрит в сторону первого (GW: 80.254.7.193) провайдера)
IP: 80.254.7.206
eth1: (смотрит в сторону второго (GW: 192.168.64.128) провайдера)
IP: 192.168.64.1/24
eth2: (смотрит в сторону третьего (GW: 192.168.128.129) и четвертого (GW: 192.168.128.130) провайдеров)
IP: 192.168.128.1/24
eth3: (смотрит на малую локальную сеть 'net_a')
IP: 192.168.192.128/24
eth4: (смотрит на локальную сеть 'net_b')
IP: 172.16.31.128/16
Задача:
для малой локальной сети 'net_a':
четные сетевые адреса (192.168.192.0/255.255.255.1) вывести через третьего провайдера (т.е. через 192.168.128.129);
нечетные сетевые адреса (192.168.192.1/255.255.255.1) вывести в нет через четвертого провайдера (т.е. через 192.168.128.130);
для локальной сети 'net_b':
выборочные адреса (допустим 172.16.31.129 и 172.16.31.130) вывести через первого провайдера (т.е. через 80.254.7.193);
остальных через второго провайдера (т.е. через 192.168.64.128).
Проблема:
...при пробросе I'netа для малой локальной сети.
==>
> cat /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
5 tbl_a
10 tbl_b
15 tbl_c
20 tbl_d
> ip rule list
0: from all lookup local
32762: from all fwmark 0xc lookup tbl_d
32763: from all fwmark 0xd lookup tbl_c
32764: from all fwmark 0xe lookup tbl_b
32765: from all fwmark 0xf lookup tbl_a
32766: from all lookup main
32767: from all lookup default
> ip route list
80.254.7.192/26 dev eth0 proto kernel scope link src 80.254.7.206
192.168.192.0/24 dev eth3 proto kernel scope link src 192.168.192.128
192.168.128.0/24 dev eth2 proto kernel scope link src 192.168.128.1
192.168.64.0/24 dev eth1 proto kernel scope link src 192.168.64.1
172.16.0.0/16 dev eth4 proto kernel scope link src 172.16.31.128
> ip route list table tbl_c
192.168.192.0/24 dev eth3 scope link src 192.168.192.128
192.168.128.0/24 dev eth2 scope link src 192.168.128.1
127.0.0.0/8 dev lo scope link
default via 192.168.128.129 dev eth2
> ip route list table tbl_d
192.168.192.0/24 dev eth3 scope link src 192.168.192.128
192.168.128.0/24 dev eth2 scope link src 192.168.128.1
127.0.0.0/8 dev lo scope link
default via 192.168.128.130 dev eth2
<==
На интерфейсе eth2 поднят NAT.
В таком варианте правил маршрутизации компьютера малой локальной сети не получают ответ из I'netа.
Если добавить команду:
> ip route add default via 192.168.129.130 dev eth2
все работает.
Вопрос:
в чем баг? Почему без правила добавленного в таблицу main не приходит ответ по правлам таблиц tbl_c и tbl_d?