通过虚拟机iproute多个ADSL负载均衡器

很长一段时间(2年),我一直在运行一个非常基本的出站负载平衡function的虚拟机(Ubuntu 12.04服务器),从不同的ADSL路由器发出不同的出站连接。

简单地通过使用没有NAT伪装的iproute进行configuration,NAT由出站ADSL路由器自己pipe理,允许连接直接路由回到发送者,绕过负载平衡路由器虚拟机。 路由器虚拟机上也没有防火墙规则(iptables)。

echo 1 > /proc/sys/net/ipv4/ip_forward # flush initially ip route flush cache # remove whatever is there for the default to begin with ip route delete default # default load balancing rule ip route add default scope global \ nexthop via ${ROUTER2} dev ${INTERFACE} weight 6 \ nexthop via ${ROUTER1} dev ${INTERFACE} weight 4 

这已经很好运作了很长时间。

我最近升级(do-release-upgrade -d)负载平衡器(Ubuntu 12.04服务器虚拟机)到Ubuntu 14.04。

由于使用上述“ip route add default”命令升级互联网连接正在导致零星的连接问题,并造成不可用的体验。 就好像单个数据包通过两个路由器发送而不是全连接一样。

第二个14.04虚拟机已经尝试了这个效果。

我很想在Ubuntu 14.04(当前内核:3.13.0-24)上具有相同的function。 我不明白是什么改变了。

有什么build议么?

我意识到原来的海报不再需要解决scheme,但这里是我对这个问题的最佳解决scheme。 我也意识到海报会更喜欢使用Ubuntu,但是像这样手动configuration路由规则对于将所有权转让给其他人或者甚至在几年后引用自己并不是很好。

我个人会build议使用PFSense虚拟机进行更强大的设置来平衡连接。 我可能也build议在PFSense盒本身而不是在调制解调器上执行NAT。 我有一些类似于在虚拟机中configuration的东西,它运作良好。

对于调制解调器与PFSense VM之间的连接,我使用一个支持vlan的交换机将3个独立的虚拟局域网连接到虚拟机,并将这些虚拟机分成3个独立的端口。 这实际上提供了从每个调制解调器到pfsense盒的直接(虚拟)电缆以及另一根电缆输出到局域网。 然后,您可以configuration调制解调器传递,因供应商而异。

确实,这避开了问题,而不是直接解决问题,但是把NAT放在调制解调器上本身就好像只是要求麻烦一样。 此外,PFSense专门devise为预先包装的路由器解决scheme,因此它支持并将继续通过这种configuration进行testing,通过升级确保更好的可靠性。