Моя установка - это два интернет-провайдера на одном интерфейсе и в одной сети. Я могу установить шлюз по умолчанию на 192.168.0.1
или 192.168.1.250
и либо работать.
Редактировать: Сетевая маска (как замечено в комментарии) is 255.255.254.0
- как я уже сказал, они находятся в одной подсети.
Я хочу использовать их обоих с некоторой балансировкой нагрузки. Я попытался последовать совету, данному здесь https://serverfault.com/a/96586
#!/bin/sh
ip route show table main | grep -Ev '^default' \
| while read ROUTE ; do
ip route add table ISP1 $ROUTE
done
ip route add default via 192.168.1.250 table ISP1
ip route add default via 192.168.0.1 table ISP2
iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark
iptables -t mangle -A PREROUTING -m mark ! --mark 0 -j ACCEPT
iptables -t mangle -A PREROUTING -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -m statistic --mode random --probability 0.5 -j MARK --set-mark 20
iptables -t mangle -A PREROUTING -j CONNMARK --save-mark
Теперь, когда я повторяю "traceroute somehost", я могу получить маршрут только через мой маршрут по умолчанию, 192.168.1.250. Разве пакеты не должны случайным образом менять маршруты? Как это отладить?
Единственный известный мне способ иметь несколько шлюзов по умолчанию - это использовать методологию, показанную здесь: http://lartc.org/howto/lartc.rpdb.multiple-links.html. Однако одна модификация, которую я бы порекомендовал по этой методологии, - вместо того, чтобы помещать вещи в /etc/rc.local, хранить их в файлах сетевых маршрутов / правил (опять же, это предполагает красную шляпу, поэтому YMMV - / etc / sysconfig / network-scripts / route- и / etc / sysconfig / network-scripts / rule-.
Чтобы единый интерфейс отображался как два интерфейса, вы можете создать подынтерфейсы, следуя методике, показанной здесь: http://linux-101.org/howto/create-sub-interfaces-centos-and-redhat