Jump to content
Калькуляторы

Ubuntu шлюз на 2 прова

Уже несколько дней мучаюсь с настройкой решил спросить совета

Есть машина с ubuntu 3 сетевых карты 2 смотрят на провайдеров одна во внутреннюю сеть.

На машине поднят Squid, OpenVPN и NAT для части пользователей.

Хочется сделать одновременную работу по 2 внешним каналам в более менее адекватной балансировкой

 

прописал вот такие правила

 

ip route add $P1_NET dev $IF1 src $IP1 table $TBL1 > /dev/null 2>&1

ip route add default via $P1 table $TBL1 > /dev/null 2>&1

ip route add $P2_NET dev $IF2 src $IP2 table $TBL2 > /dev/null 2>&1

ip route add default via $P2 table $TBL2 > /dev/null 2>&1

 

ip route add $P1_NET dev $IF1 src $IP1 > /dev/null 2>&1

ip route add $P2_NET dev $IF2 src $IP2 > /dev/null 2>&1

 

 

ip route add default via $P1 > /dev/null 2>&1

 

ip rule add from $IP1 table $TBL1 > /dev/null 2>&1

ip rule add from $IP2 table $TBL2 > /dev/null 2>&1

 

 

ip route add $P0_NET dev $IF0 table $TBL1 > /dev/null 2>&1

ip route add $P2_NET dev $IF2 table $TBL1 > /dev/null 2>&1

 

ip route add 127.0.0.0/8 dev lo table $TBL1 > /dev/null 2>&1

ip route add $P0_NET dev $IF0 table $TBL2 > /dev/null 2>&1

ip route add $P1_NET dev $IF1 table $TBL2 > /dev/null 2>&1

 

ip route add 127.0.0.0/8 dev lo table $TBL2 > /dev/null 2>&1

 

iptables -t nat -F POSTROUTING

iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j MASQUERADE

iptables -t nat -A POSTROUTING -s $P0_NET -o $IF2 -j MASQUERADE

 

где

LAN interface IF0

WAN interface 1 IF1="p4p1"

WAN interface 2 IF2="p5p1"

IP1,2 мои внешние адреса

P1,2 шлюзы моих провайдеров

P1_NET,P2_NET мои подсети внешние Р0_NET внутреня

TBL1,TBL2 таблицы маршрутизации

 

Ну естественно удалил добавление шлюза при поднятии внешних интефейсов

 

ну и собственно правило роута с балансом

ip route delete default

ip route add default scope global nexthop via $P1 dev $IF1 weight $W1 \

nexthop via $P2 dev $IF2 weight $W2

 

По VPN и Сквиду все ок, а вот в НАТ поблема

 

когда пингую скажем 8.8.8.8 то получаю разный TTL пакетов ответа и большие потери.

плюс при просмотре кеша маршрута на самом сервере вижу вот такое

 

ip route get 8.8.8.8

8.8.8.8 via 22.22.22.97 dev p5p1 src 22.22.22.99

cache

ip route get 8.8.8.8

8.8.8.8 via 11.11.11.9 dev p4p1 src 11.11.11.12

cache

ip route get 8.8.8.8

8.8.8.8 via 11.11.11.9 dev p4p1 src 11.11.11.12

cache

ip route get 8.8.8.8

8.8.8.8 via 22.22.22.97 dev p5p1 src 22.22.22.99

cache

ip route get 8.8.8.8

8.8.8.8 via 11.11.11.9 dev p4p1 src 11.11.11.12

cache

ip route get 8.8.8.8

8.8.8.8 via 22.22.22.97 dev p5p1 src 22.22.22.99

cache

 

То есть постоянно меняется маршрут в кеше.

Если кто то такое делал подскажите в чем мой трабл?

Share this post


Link to post
Share on other sites

Тоже пробовал похожий скрипт для резервирования и балансировки, возникли такие же проблемы. Пришлось балансировать в "ручную" - промаркировал сети в iptables и для каждого маркера добавил маршрут на провайдера.

Share this post


Link to post
Share on other sites

подождите, какой кеш? routing cache ведь миллион лет как выпилен из ядра. покажите uname -a

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this