我想在网络接口和特定 IP 之间进行选择。例如:
向 192.168.1.5 发出请求 // 使用接口 1
向 192.168.1.5 发出请求 // 使用接口 2
向 192.168.1.5 发出请求 // 使用接口 1
向 192.168.1.5 发出请求 // 使用接口 2
向 192.168.1.5 发出请求 // 使用接口 1
向 192.168.1.5 发出请求 // 使用接口 2
我正在使用 Ubuntu 10。我发现了这个:
http://www.go2linux.org/load-balance-traffic-for-two-isps-with-linux
这就是我要找的东西吗?
答案1
我在一台 Ubuntu 服务器上安装了这个,我将在下面发布配置。安装起来有点麻烦,而且仍然有一些问题,这台机器还提供 NAT(在另一个接口上),对于 NAT 客户端,当数据包来自不时变化的不同地址时,某些服务(openvpn、icq)会混淆。
无论如何: - 我已经用它来利用 2x 100 Mbps 互联网链接和两个公共 IP - 对 Apache 来说很好用 - 每个请求都在不同的接口上处理等等...但客户端的路由是固定的,所以每隔一段时间清除一次路由缓存是件好事(通过/sbin/route del default
)- 但是当你这样做时 - 一些服务会变得混乱。(Openvpn 客户端需要在配置中添加“float”,这样他们就会信任具有多个地址的服务器等等...)。每个连接最多可以获得 100 Mbps,但 2 个连接可以达到 200 Mbps...
许多应用程序都很混乱,因此当您有机会使粘合工作时 - 您可以管理开关 - 我会推荐这种方法。
我的互联网接口:
eth0 链路封装:以太网 HWaddr 00:11:09:5e:af:af inet 地址:69.42.248.102 广播:69.42.248.127 掩码:255.255.255.192 eth2 链路封装:以太网 HWaddr 00:0e:2e:0d:32:b4 inet 地址:69.42.248.103 Bcast:69.42.248.127 掩码:255.255.255.192
它们由 /etc/network/interfaces 中的默认设置配置
自动 eth0 iface eth0 inet 静态 地址 69.42.248.102 网络掩码 255.255.255.192 网关 69.42.248.65 自动 eth2 iface eth2 inet 静态 地址 69.42.248.103 网络掩码 255.255.255.192 网关 69.42.248.65
最后,我通过启动后调用脚本来初始化负载平衡(添加到 rc.local(退出前)或 crontab)
/bin/bash #!/bin/bash # 我不记得为什么这里会出现多次 - 但我默认设置了多个门和接口,所以我猜它在这里是为了清除它们全部 ;-) /sbin/route 删除默认 /sbin/route 删除默认 /sbin/route 删除默认 /sbin/route 删除默认 ip route 添加默认范围全局 \ 下一跳通过 69.42.248.65 dev eth0 权重 1 \ 下一跳通过 69.42.248.65 dev eth2 权重 1
这基本上告诉路由使用具有不同 ethX 和相同权重的相同门 - 从而执行循环每个连接的负载平衡。
答案2
答案3
我的 DNS 有点生疏,但如果我没记错的话,您不能只在 A 记录中输入两个 IP 地址,然后大多数系统会在这两个地址之间交替。当然,这假设您使用的是主机名而不是直接 IP。