设置
想象一下一个普通的家庭网络,其中一堆设备连接到一个充当互联网网关和 DHCP 服务器的路由器。
现在,这些设备中的一个有时会拥有自己的独立互联网连接(例如通过 5G)。如果配置正确(允许数据包转发和设置必要的路由),它可以允许其他设备使用此连接,但为了让它们真正做到这一点,它们的用户必须手动禁用/覆盖通过 DHCP 获得的设置,并将独立互联网连接的设备的 IP 地址设置为其新的网关地址。
我的问题
是否存在一种标准协议,允许设备向本地网络上的其他设备宣传其作为(替代)互联网网关的能力,理想情况下以一种可以被大多数“常见”Linux 发行版(Ubuntu、Fedora、Debian 等)的默认网络软件理解的方式(并以 GUI 等方式显示给用户)?
迄今为止考虑
我想到过的方法以及它们不起作用或不完整的原因:
- DHCP 无法使用,因为所有设备都已配置 DHCP,并且在重新启动/连接丢失之前不会重新尝试 DHCP 发现。即使他们这样做了,你也会与路由器的 DHCP 服务器竞争。由于 DHCP 的工作原理是“第一个回答的人获胜”,这主要取决于运气。
- 一般情况下,可以通过 DNS-SD(零配置协议),并且我已经使用 mDNS(也是 zeroconf 的一部分)来简化查找独立互联网连接设备的动态分配 IP 地址的过程。但我没有在RFC 2782 服务类型列表,因此看起来人们并不会将它用于这种特定的用例。
- Windows 的Internet 连接共享基于 UPnP 构建的,似乎与此用例相关,但我不认为 Linux 发行版支持它,并且与 zeroconf 套件相比找不到有关它的太多信息(特别是关于服务类型)。
答案1
是否存在一个标准协议,允许设备向本地网络上的其他设备宣传其作为(替代)互联网网关的能力,
不,不适用于“常规” DHCP 配置的设备。
通常,两个网关之间的故障转移以对主机完全(或大部分)不可见的方式完成:
- 通过将网关 IP 地址重新分配给新路由器(仅需要使用新 MAC 进行 ARP 公告),
- 或者使用故障转移协议(如 VRRP 或 CARP)来允许两个网关共享“虚拟” IP和MAC 地址,
- 或者使用处理故障转移的单个网关内部两个上行链路之间。
在您的情况下,选项 3 可能是最常见的——许多家庭网关都内置了基本的“双上行链路”(以太网加 4G/5G)故障转移支持,而且许多家庭网关都支持多个以太网上行链路(例如,一个上行链路连接到您的光纤/电缆调制解调器,另一个连接到您现有的 5G 调制解调器)。
理想情况下,以大多数“常见”Linux 发行版(Ubuntu、Fedora、Debian 等)的默认网络软件可以理解的方式(并以 GUI 等方式显示给用户)?
没有。
除非您的网络主要由 Wi-Fi 用户组成,在这种情况下这将只是两个 SSID(即两个网关都有单独的 Wi-Fi 网络的默认情况),用户可以通过切换 Wi-Fi 网络切换到 5G。
(对于以太网,可以使用 VLAN、托管交换机和带有“将我放入其他 VLAN”按钮的本地 Web 应用程序来构建一些东西……但这远远超出了“普通家庭网络”的范围。物理上重新连接以太网电缆会简单得多。)
无法使用 DHCP,因为所有设备都已配置 DHCP,并且在重新启动/失去连接之前不会重新尝试 DHCP 发现。
设备在无法续订当前 DHCP 租约时将重新尝试 DHCP 发现(除非您将其配置为无限期或类似情况)。如果 DHCP 服务器配置为提供 30 分钟租约,主机将每 15 分钟续订一次;如果当前服务器没有响应,它们将在大约 25-28 分钟后尝试发现新服务器。
即使他们有,您也会与路由器的 DHCP 服务器竞争。由于 DHCP 遵循“先答后答”的原则,因此这主要取决于运气。
DHCP 支持延迟提供。当主机重新传输其 DHCPDISCOVER 查询时(例如,如果主网关没有提供任何内容),它们会在数据包中指示它们尝试获取地址的时间。可以配置 DHCP 服务器,以便它仅有的如果主机尝试至少 X 秒但未成功,则发送优惠。
(例如,在 RouterOS 中,这是delay-threshold=
下的选项/ip/dhcp-server
。)
因此,您实际上可以让两个网关都提供 DHCP - 如果主网关正在运行,它将是唯一一个立即提供租约的网关,所有主机都会接受该租约;如果主网关处于离线状态,主机将继续重试,直到最终从第二个网关获得报价。