我有一台安装了Ubuntu 11.10 Server的戴尔服务器。 服务器有3个以太网卡eth0,eth1和eth2。
我有两个ISPs ISP1,ISP2
eth0有一个公共IP(由ISP1提供 – 我们需要从局域网外部访问这个服务)eth1通过192.168.XX子网连接到局域网(eth2),eth2通过172.16获得一个dynamicIP(通过ISP2提供的DHCP) .xx子网
我想负载平衡(使其容错在同一时间)两个互联网连接。 我在网上find了以下脚本来帮助我的事业:
#!/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
我不完全理解剧本。 因此,如果上述代码不起作用,将机器恢复到原始configuration的最佳方法是什么? 运行此脚本之前需要备份哪些文件?
我相信你发现的脚本是通过遵循/合并来自Linux高级路由和stream量控制HOWTO的各种信息创build的。 特别是有关负载平衡单独ISP链接的部分 。 我build议你阅读该页面,以帮助理解该脚本正在做什么。 请记住,如何引用旧的内核,虽然我不认为原理会有很大的改变, ip命令可能仍然有效。
每次机器启动时都需要运行这个脚本来设置路由等,所以你不需要备份文件(它不会触及任何文件)。 一旦重新启动机器,规则将被遗忘,机器的默认networking设置将被使用。
如果你不想重启,那么根据发行版的不同,你也许可以重启networking,例如在Red Hat上, service network restart应该为你清除路由并service network restart添加默认路由(这是基于我的快速扫描networking脚本)。 我相信Ubuntu会有一个类似的系统(我没有使用它一段时间,他们使用Upstart现在我不知道)。 否则,您必须使用ip命令手动删除该脚本创build的规则(或者编写一个执行此操作的脚本)。