我们家里有两个 ISP,我为它们分别连接了不同的路由器,并将两个路由器都连接到我们的 LAN,一个大型以太网交换机,所有东西都连接到它。一个路由器有 IP192.168.1.1
并通过 Time Warner Cable 连接,另一个有 IP10.0.1.1
并通过 Verizon 连接。它们都是 DHCP 服务器。
无论出于什么原因,任何启用了 DHCP 的设备似乎都会从 获得 DHCP 租约192.168.1.1
,从而接受192.168.1.1
路由器身份并通过 TWC 连接到互联网。我不知道这是因为路由器总是“赢得”竞争条件,还是存在某种实际优先级。计算机如何选择从哪个路由器获得 DHCP 租约?
我没有企业级硬件。TWC 上的路由器是 Apple AirPort Extreme,Verizon 上的路由器是他们给我们的 Actiontec。据我所知,我无法设置任何一个来为两个路由器托管一个 DHCP 服务器。我有一台可以提供 DHCP 的 Mac 服务器,但我不能依赖它。当我在 Google 上搜索涉及多个路由器的解决方案时,我发现有人认为路由器 = 无线接入点。
答案1
第一个到达的 DHCP 回复通常会获胜,除此之外就没有什么可说的了。(这意味着在同一个网段内运行两个 DHCP 服务器可能会变得相当混乱。)
对于你的情况,你需要一个单身的连接到两个 WAN 连接的路由器,而不是两个。(如果你找不到专用的路由器,有些人会使用装有 pfSense 的旧 PC 作为多WAN路由器。也就是说,你会得到如下内容:
┌───────────┐
TWC ──<cable>── │cable modem│ ──<ethernet>───┐
└───────────┘ ┌──────┐ ┌─LAN──┐
│router│ ──<ethernet>── │switch│
┌─────────┐ └──────┘ └──────┘
Verizon ──<???>── │ ? modem │ ──<ethernet>───┘
└─────────┘
然后,路由器将拥有直接从两个 ISP 分配的 WAN IP 地址。(虽然这不是严格要求 - 即使 WAN 接口上的地址为 192.168,只要每个接口位于不同的子网,它也能生存。但是,这很麻烦。)
根据路由器,它可以根据设备、ping 延迟、一天中的时间等选择 ISP。
答案2
DHCP 协议规范允许在同一 LAN 上存在多个 DHCP 服务器,甚至为不同的 DHCP 地址池(范围)提供服务。但是,如果由于存在多个服务器而收到多个租约要约,则该规范将决定接受哪个租约要约留给客户端实现。
一些 DHCP 客户端实现很可能只接受收到的第一个报价,从而形成一场竞争。
但是,我知道 Apple 的 DHCP 客户端(用于 macOS(以前称为 OS X、Mac OS X)、iOS、tvOS 和 watchOS)会等待一段短暂的时间来收集要约,然后选择包含最多 DHCP 消息选项的要约。这里的诀窍是,企业 DHCP 服务器通常具有更多他们试图推送给客户端的配置信息,例如 WINS 服务器、LDAP 服务器等(与消费者家庭网关路由器的 DHCP 服务器相比,后者添加的消息选项相对较少)。因此,通过采用具有最多 DHCP 消息选项的要约,它更有可能从官方企业服务器获得真正的要约,而不太可能因为某些傻瓜将配置错误的无线路由器插入办公室 LAN 而出轨。
我还没有查看其他常见 DHCP 客户端的文档或来源,所以我不知道其他 BSD、Android 或其他各种 Linux 或 Windows 做什么。
总结:每个 DHCP 客户端都可以自行选择接受哪个提议。有些客户端使用智能启发式方法,但其他客户端可能比较笨,只接受他们收到的第一个提议。
答案3
这是一种竞争条件,无论哪个路由器向设备响应 IP 地址,它都会赢得连接。如果将两个路由器都设置为使用同一个子网,那么就有可能实现所需的故障转移。但我对完整设置的解释可能错了。您可以做的是将网络上的两个路由器设置为相同的 IP 方案(即:192.168.0.1 和 192.168.0.2)。最好也禁用其中一个路由器的 DHCP。然后在您的计算机上添加路由表,以便两个路由器都在其中,但让您更想使用的互联网具有较低的度量值。较低的度量值比较高的值使用得更频繁。如果主路由器出现故障,它应该会自动切换。我已经有一段时间没有用智能开关或类似的东西做过这样的事情了,所以我可能是错的。