Ситуация такая. Был один интернет канал (a.a.a.1). Появился второй интернет-канал (b.b.b.1).
Сейчас сеть выглядит так:

Настраивал маршрутизацию на Хост2 согласно руководству: http://www.opennet.ru/docs/RUS/LARTC/x348.html
В файл /etc/iproute2/rt_tables добавил строки:
Код: Выделить всё
200 inet_a
201 Inet_bДалее выполнил команды:
Код: Выделить всё
ip route add 192.168.10.0/30 dev eth0 table inet_a
ip route add b.b.b.0/30 dev eth2 table inet_a
ip route add 127.0.0.0/8 dev lo table inet_a
ip route add 192.168.10.0/30 dev eth0 table inet_b
ip route add a.a.a.0/30 dev eth1 table inet_b
ip route add 127.0.0.0/8 dev lo table inet_b
ip route add a.a.a.0/30 dev eth1 src 212.32.220.134 table inet_a
ip route add default via a.a.a.2 table inet_a
ip route add b.b.b.0/30 dev eth2 src 94.139.127.6 table inet_b
ip route add default via b.b.b.2 table inet_b
ip route add a.a.a.0/30 dev eth1 src a.a.a.1
ip route add b.b.b.0/30 dev eth2 src b.b.b.1
ip route add default via a.a.a.2
ip rule add from a.a.a.1 table inet_a
ip rule add from b.b.b.1 table inet_b
ip route add 192.168.0.0/24 via 192.168.10.1
ip route flush cacheЗдесь eth0 (IP: 192.168.10.2) - к Хост1, eth1 (IP: a.a.a.1) - первый канал, eth2 (IP: b.b.b.1) - второй канал.
По-умолчанию, весь трафик идет через a.a.a.1. Чтобы трафик, например, c IP 192.168.0.100 завернуть через b.b.b.1, добавляю правило
Код: Выделить всё
ip rule add from 192.168.0.100 table inet_bВ iptables:
Код: Выделить всё
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source a.a.a.1
iptables -t nat -A POSTROUTING -o eth2 -j SNAT --to-source b.b.b.1Проблема 1
С любого IP локальной сети не доступен адрес a.a.a.1. Т.е. ping проходит на шлюз первого провайдера a.a.a.2, на другие IP из интернета, на IP b.b.b.1, а сам a.a.a.1 не отвечает.
Проблема 2
Если IP из локальной сети добавлен в таблицу inet_b, трафик идет через b.b.b.1, но связь не стабильная, часто прерывается. Хотя если подключить компьютер напрямую ко второму каналу, связь ровная.
Что я сделал не так?