我已经能够使用在几个 Raspberry Pi 上运行的 batman-adv 设置无线网状网络。如果网络上的任何 Pi 充当网关,Pi 能够在网格上相互检测、相互通信并共享 Internet 连接。
我面临的问题是,如果网络上存在多个网关,客户端(通过网关接收互联网连接的设备)将永远不会切换到从任何其他网关获取互联网连接,而不是他们最初从中获得的网关,即使路由算法检测到它们与另一个网关的连接更好。
每个网关都运行一个 DHCP 服务器,为通过它们访问 Internet 的客户端分配 IP 地址。我使用的 DHCP 服务器是 dnsmasq。
预期的行为是:
- 客户端向能够提供更好连接的网关发送 DHCP 请求并结束与当前 DHCP 服务器的租约,或者
- 客户端保留从 DHCP 服务器分配的 IP 并(神奇地?)开始通过能够提供更好连接的网关访问互联网。
这些情况都没有发生。如果出于某种原因,向客户端提供 Internet 的网关断开,客户端将不会尝试创建新连接,直到 DHCP 租用超时。然而,这与 wiki 上关于此包的声明相矛盾:https ://www.open-mesh.org/projects/batman-adv/wiki/Gateways
请告知如何配置此网状网络,以便发生任何一种预期行为。