Доброй ночи.В FreeBSD я могу сделать так:
add 150 fwd GATE_IP ip from HOST_IP to any
и т.д.
при этом входящие пакеты, маршрутизация и локальные сервисы работают правильно.
Теперь в linux... Мучался, я мучался и домучался до следующего:
#!/bin/sh
IF1="eth0"
P1="gw_ip_1"
P1_NET="gw_net_1"
IP1="ip1"
IF2="eth1"
P2="gw_ip_2"
P2_NET="gw_net_2"
IP2="ip2"
ip route add $P1_NET dev $IF1 src $IP1 table T0
ip route add default via $P1 table T0
ip route add $P2_NET dev $IF2 src $IP2 table T1
ip route add default via $P2 table T1
ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2
ip route add default via $P1
ip rule add from $IP1 table T0
ip rule add from $IP2 table T1
route add -host 10.0.0.0/16 gw $P2 dev eth1
#ip route add $P0_NET dev $IF0 table T1
#ip route add $P2_NET dev $IF2 table T1
#ip route add 127.0.0.0/8 dev lo table T1
#ip route add $P0_NET dev $IF0 table T2
#ip route add $P1_NET dev $IF1 table T2
#ip route add 127.0.0.0/8 dev lo table T2
разумеется таблицы созадны в rt_tables. Это чудо вцелом работает как предполагается, но установленый bind, который должен форвардить одну зону на сервер, расположенный в сети 10. Почему-то он этого не делает, хотя если я делаю с консоли host name 10.x.x.x, то все работает отлично. Такое ощущение, что он вообще не дает ядру маршрутизировать трафик.
Посоветуйте, как разрешается такая проблема.
Вариант с iptables - мне не очень понравился, переходить на обратно freebsd - не есть решение, делать по 2 севрера на одну туже задачу, но с разными default gw - мне, кажется, не очень тоже.
Спасибо.
PS:Если необходимы какие-то ещё данные,я с радостью предоставлю их...