在 Ubuntu Server 上实现 ISP 负载平衡

在 Ubuntu Server 上实现 ISP 负载平衡

我有一台安装了 Ubuntu 11.10 Server 的戴尔服务器。该服务器有 3 个以太网卡 eth0、eth1 和 eth2。

我有两个 ISP,分别是 ISP1、ISP2

eth0 有一个公共 IP(由 ISP1 提供 - 我们需要从 LAN 外部访问此服务) eth1 连接到 LAN(通过交换机),子网为 192.168.XX eth2 获得一个动态 IP(通过 ISP2 提供的 DHCP),子网为 172.16.xx

我想对两个互联网连接进行负载平衡(同时使其具有容错能力)。我在网上找到了以下脚本来帮助我:

#!/bin/bash -v
#IPs of device connected to the internet
IP1=119.my.pub.ip #Public IP provided by ISP1
#dynamically alloted IP provided by ISP2
IP2=`ifconfig | awk -F: '/172.16./ {print $2}' | awk '{ORS=" "; print $1}' | awk '{print $2}'`

#Your Gateways (type route in terminal it should be in the same line as default)
P1=119.my.pu.gat #gateway provided by ISP1
P2=172.16.1.1 #gateway provided by ISP2

#Your Subnets
P0_NET=192.168.0.0/16 #local network subnet,
P1_NET=119.82.90.0/28 # Part of your gateway
P2_NET=172.16.1.0/24 #Part of your gateway
# NICs your internet interfaces
IF1=eth0
IF2=eth2
IF0=eth1

ip route add $P1_NET dev $IF1 src $IP1 table T1
ip route add default via $P1 table T1
ip route add $P2_NET dev $IF2 src $IP2 table T2
ip route add default via $P2 table T2
ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2

ip rule add from $IP1 table T1
ip rule add from $IP2 table T2
ip route add $P0_NET dev $IF0 table T1
ip route add $P2_NET dev $IF2 table T1
ip route add 127.0.0.0/8 dev lo table T1
ip route add $P0_NET dev $IF0 table T2
ip route add $P1_NET dev $IF1 table T2
ip route add 127.0.0.0/8 dev lo table T2

ip route add default scope global nexthop via $P1 dev $IF1 weight 1 nexthop via $P2 dev $IF2 weight 1

我不完全理解该脚本。因此,如果上述代码不起作用,将机器恢复到其原始配置的最佳方法是什么?在运行此脚本之前需要备份哪些文件?

答案1

我相信你找到的脚本是通过遵循/合并来自以下各个信息片段创建的:Linux 高级路由和流量控制指南. 特别是关于负载平衡单独的 ISP 链路。我建议您阅读该页面,以帮助了解该脚本的作用。请记住,该操作指南引用了旧内核,但我认为原理不会发生太大变化,命令ip可能仍然有效。

每次机器启动时都需要运行该脚本来设置路由等,因此您无需备份文件(它不会触及任何文件)。一旦您重新启动机器,规则将被遗忘,机器的默认网络设置将被使用。

如果您不想重新启动,那么根据发行版的不同,您可能能够重新启动网络,即在 Red Hat 上,应该service network restart会为您清除路由并再次添加默认路由(这是基于我对网络脚本的快速扫描)。我相信 Ubuntu 会有类似的系统(我有一段时间没用它了,他们现在使用 Upstart,我对此一无所知)。否则,您必须使用命令手动删除该脚本创建的规则(或编写一个执行此操作的脚本)ip

相关内容