Здравствуйте.Есть дебиан, локальная сеть (eth0) и два провайдера (eth1, eth2).
Для простоты задача следующая: через канал eth2 пускать пользователей в инет. С обоих каналов принимать входящие соединения.
Вроде бы все работает, пользователи ходят в нет. Соединения принимаются, даже если один из каналов лежит, но не работает ping -I eth1 ya.ru, если eth2 - шлюз по умолчанию.
Вот что имеем после старта системы:
~# ip rule
0: from all lookup local
1000: from all lookup localnets
3000: from X.X.X.78 lookup ruscom
3010: from Y.Y.Y.134 lookup utel
32766: from all lookup main
32767: from all lookup default
~# ip route show table localnets
192.168.0.0/24 dev eth0 scope link
~# ip route show table ruscom
X.X.X.76/30 dev eth1 scope link
default via X.X.X.77 dev eth1
~# ip route show table utel
Y.Y.Y.132/30 dev eth2 scope link
default via Y.Y.Y.133 dev eth2
~# ip route show table main
10.7.0.2 dev tun0 proto kernel scope link src 10.7.0.1
X.X.X.76/30 dev eth1 proto kernel scope link src X.X.X.78
Y.Y.Y.132/30 dev eth2 proto kernel scope link src Y.Y.Y.134
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.1
default via Y.Y.Y.133 dev eth2
~# cat ./firewall.sh
...
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
...