如何避免RNDIS设备的IP冲突?

如何避免RNDIS设备的IP冲突?

场景是这样的:我有几个设备使用 autoip 和 mdns over rndis(通过 USB 的以太网)连接到主机:您用 USB 连接它们,PC 检测到 rndis 设备,两端都选择 IPv4 地址并保留它如果没有被占用。该设备有一个唯一的 ID 作为主机名,因此 PC 可以打开 ID342384734.local 的套接字,一切都很好。

现在,有时同时连接的两个设备都会选择相同的 IP,例如 169.254.42.42。他们不会知道,因为他们位于不同的网络上并且不会看到对方。没有碰撞。 PC不在乎。但是两个 .local 名称都将解析为相同的 IP 地址 169.254.42.42,因此打开 ID1.local 和 ID2.local 的套接字将在同一设备上结束,因为在名称解析后它们无法区分!

使用 IPv6 解决了这个问题,但是对于 IPv4 是否有一个聪明的解决方案,例如教导 socket() 通过应答 mdns 请求的接口连接到 IP?

主机和设备是带有 avahi-daemon 和 avahi-autoipd 的 Linux。

相关内容