Subj.
Снимите с ручника.
Есть подключение к Internet через двух провайдеров (домосеть и stream). Каждый провайдер выдаёт свой IP.
Есть внутренняя сеть.
Есть роутер на Linux 2.4 с 3-мя сетевыми картами:
1. eth0 - внутренняя сеть.
2. eth1 - домосеть
3. eth2 - stream через ADSL-модем в режиме бриджа.
Хочется
1. Обеспечить доступ из в внутренней сети в Internet с равномерным распределением нагрузки на оба канала.
2. Обеспечить доступ из Internet к роутеру.
Не выходит каменный цветок.
Балансировка через маршрутизацию
==={{{
iptables -t nat -A POSTROUTING -o ppp0 -j SNAT --to-source $HOMENET_IP
iptables -t nat -A POSTROUTING -o ppp1 -j SNAT --to-source $STREAM_IP
...
ip rule add from $IP_PPP0 to 0/0 table 101 pref 102
ip rule add from $IP_PPP1 to 0/0 table 102 pref 102
ip route add table 101 via $GW_PPP0
ip route add table 102 via $GW_PPP1
ip route add default scope global \
nexthop via $GW_PPP0 dev ppp0 weight 1 \
nexthop via $GW_PPP1 dev ppp1 weight 1
===}}}
некоторое время работает (~5 минут), но потом рвёт соединения (кэш маршрутов переполняется?).
Балансировку через NAT
==={{{
iptables -t nat -A POSTROUTING -o ppp0 -j SNAT --to-source $HOMENET_IP --to-source $STREAM_IP
===}}}
прикрутить вообще непонятно, т.к. POSTROUTING обрабатывается после маршрутизации и какие маршруты указывать в этом случае - непонятно.
Вобщем хелп.