У меня есть Linux-сервер, который служит маршрутизатором / брандмауэром и к которому подключены 2 интернет-провайдера. Я бы хотел с его помощью сделать распределение нагрузки с аварийным переключением. Я сделал это много лет назад, и это было довольно просто - просто добавьте 2 таблицы маршрутизации для 2 соединений, а затем используйте 2 маршрута по умолчанию с требуемым весом:
ip route add default scope global nexthop via 1.2.3.4 dev dev100 weight 10
И тогда Linux будет случайным образом добавлять маршруты в кеш, разделяя соединения между ссылками. .
Но теперь я обнаружил, что он больше не работает с linux 3.16, и больше нет кеша маршрутов, и все мои старые скрипты не работают, и я не могу установить соединение.
Моя конфигурация:
-------------
- ip route list table prov1
default via 217.147.175.129 dev eth1
46.164.150.48/29 dev eth2 scope link src 46.164.150.51
127.0.0.0/8 dev lo scope link
172.16.0.0/16 dev br0 scope link src 172.16.1.1
217.147.175.128/25 dev eth1 scope link src 217.147.175.165
-------------
- ip route list table prov2
default via 46.164.150.49 dev eth2
46.164.150.48/29 dev eth2 scope link src 46.164.150.51
127.0.0.0/8 dev lo scope link
172.16.0.0/16 dev br0 scope link src 172.16.1.1
217.147.175.128/25 dev eth1 scope link src 217.147.175.165
-------------
- ip route list table main
default
nexthop via 217.147.175.129 dev eth1 weight 10
nexthop via 46.164.150.49 dev eth2 weight 10
46.164.150.48/29 dev eth2 proto kernel scope link src 46.164.150.51
172.16.0.0/16 dev br0 proto kernel scope link src 172.16.1.1
176.37.229.77 via 217.147.175.129 dev eth1
195.12.244.0/22 via 217.147.175.129 dev eth1
213.248.127.0/24 via 217.147.175.129 dev eth1
217.147.175.128/25 dev eth1 proto kernel scope link src 217.147.175.165
239.0.0.0/8 dev br0 scope link
--------------
- ip route list table default
--------------------
- ip rule list
0: from all lookup local
32756: from all fwmark 0xb iif br0 lookup prov2
32757: from all fwmark 0xa iif br0 lookup prov1
32758: from 46.164.150.51 lookup prov2
32760: from 217.147.175.165 lookup prov1
32766: from all lookup main
32767: from all lookup default
cat /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
10 prov1
11 prov2
Но с этой конфигурацией все работает нормально с самого хоста, но не работает для IP-адресов с NAT за этим хостом. Чтобы быть более конкретным, то, что я вижу на хосте с NAT:
vik@Pro:~ $ ping 193.193.193.100
PING 193.193.193.100 (193.193.193.100): 56 data bytes
64 bytes from 193.193.193.100: icmp_seq=0 ttl=59 time=3.737 ms
64 bytes from 193.193.193.100: icmp_seq=1 ttl=59 time=4.198 ms
64 bytes from 193.193.193.100: icmp_seq=2 ttl=59 time=3.934 ms
Request timeout for icmp_seq 3
64 bytes from 193.193.193.100: icmp_seq=4 ttl=60 time=3.650 ms
64 bytes from 193.193.193.100: icmp_seq=5 ttl=60 time=3.616 ms
Request timeout for icmp_seq 6
64 bytes from 193.193.193.100: icmp_seq=7 ttl=60 time=3.509 ms
64 bytes from 193.193.193.100: icmp_seq=8 ttl=60 time=3.417 ms
64 bytes from 193.193.193.100: icmp_seq=9 ttl=60 time=3.635 ms
Request timeout for icmp_seq 10
Как вы можете заметить, много пакетов было просто потеряно. И хосты за этим Linux-маршрутизатором не могут открывать веб-страницы и т. Д. - соединение просто разрывается: Пожалуйста, помогите)