我有一台带有一个 LAN 接口和 2 个 WAN 接口(2 条不同的 ADSL 线路)的 freebsd 服务器(ipfw、dhcp、dns)。
WAN 接口(re0 和 re1)聚合为一个 lagg0 故障转移(ifconfig_lagg0="laggproto failover laggport re0 laggport re1")。
我想使用的是将定向到某些网络的流量路由到 re1,当 re1 链接断开时故障转移到 re0,但默认情况下仍使用 re0 和故障转移到 re1。
可能吗?
谢谢。
[更新]
好的,所以粘合不是一个可能的解决方案(现在我看到它很明显)。
当其中一条线路上的链接断开时,如何自动更新网关上的路由?我不在乎是否需要从 ipfw 切换到 pf (无论如何我都在计划切换)。
再次感谢。
这是不可能的,仅考虑您描述的配置。链路聚合(或有时称为“绑定”)无法在多个上游提供商之间提供负载平衡或故障转移。您当前的配置似乎没有任何用处,除非您遗漏了一些重要的路由和/或 IP 配置细节。
链路聚合严格来说是第 2 层(以太网)协议。当您有多个物理以太网链路到单个上游交换机或主机时,它可以提供负载平衡和/或故障转移。但是两个不同的 DSL 上行链路(即使它们链接到同一个提供商)是两个不同的设备。如果终止电信环路的路由器/网桥设备(即插入电话线的 DSL 盒)支持相同的特定协议(例如,T1、 DSL等)粘合技术。
您的 FreeBSD 主机无法绑定多个 DSL 链接,除非您在其中安装提供该功能的 DSL 卡。即便如此,您的 ISP 也必须支持他们的 DSLAM(您的 DSL 线路另一端的设备,位于电话公司 CO)的绑定。
使用多个上行链路的 IP 流量的负载平衡和/或故障转移必须使用路由技术(第 3 层,IP)来处理。
公平地说,我可能对你遗漏的细节假设太多了。您能否使用有关您的配置的更多信息来更新您的问题?
我可能误解了你的情况,我当然从来没有用 freebsd 做过这种事情,但是......
对滞后的快速检查使它看起来像一个第 2 层冗余机制,其中 IP 地址在多个接口之间浮动,但 IP 地址永远不会改变。
在您的 DSL 链接上——它们是不同的提供商吗?如果是,那么我认为您需要一个第 3 层感知机制。
如果它们发送给不同的提供商,您将需要对路由表进行一些处理,以便链接 1 进入一组远程 IP 地址,而另一个获得其余的,或者可能一个接口用于传出 Web 流量,另一个是用于其他一切。通常这是通过小型组织的“策略路由”和大型组织的 BGP 来完成的。
最后,我会研究 pf 而不是 ipfw。它超级复杂,非常棒。讨论您正在寻找的内容的示例页面
http://www.openbsd.org/faq/pf/pools.html
上面的文章讨论了如何对传出流量进行负载平衡。
我只看了 pf 文档一秒钟,但似乎 pf 功能中没有直接的链接跟踪或 ping 跟踪机制。
我只需制作 3 个 pf 配置文件——only.link1、only.link2 和 balance.links。然后,确保在平衡链接配置中,您不会平衡到下一跳的流量(因此到链接 1 的下一跳的流量永远不会通过链接 2,反之亦然)。然后,运行一个脚本,对每个接口的下一跳进行 ping 测试,如果失败,则将 pf 配置专门切换到另一个接口。执行 vrrp 的网络设备通常具有此类功能,但内置于设备中不是作为被破解的 perl 脚本的一部分,但它应该可以正常工作。