为嵌入式设备永久分配 IP 地址

为嵌入式设备永久分配 IP 地址

这是嵌入式设备配置了错误的 IP 地址,我还能连接吗?

我们生产运行 Linux 的嵌入式设备。用户可以更改设备的网络配置(静态 IP、DHCP 客户端和服务器)。Zeroconf 原本是当用户忘记分配了静态 IP 时的后备方案,但 Zeroconf 在实施上似乎存在问题。连接 Windows 客户端经常会导致客户端获得无法与设备通信的本地链接地址。

遗憾的是,没有硬件重置按钮。我知道每个设备的 MAC 地址,但我不知道如何使用这些信息,因为除非我知道设备的 IP 地址,否则设备的网络堆栈会拒绝数据。

将链路本地范围 (169.254.0.0/16) 中的辅助 IP 地址静态分配给 eth0:0 是否不好?这样,我可以编写一个恢复实用程序,当设备直接连接到客户端时,该实用程序将起作用。(不涉及路由器,但可能涉及交换机)

如果我们的两台设备位于同一网络上,并且具有相同的链路本地 IP 地址,会发生什么情况?它们将具有不同的主 IP 地址。

一些类似产品针对这种特殊情况硬编码私有 IP(即 192.168.1.2)。

答案1

硬编码 IP 地址(用户无法修改)通常不是一个好主意,除非您的受众主要是家庭用户。使用 169.254./16(RFC 3927)范围比 RFC1918 更好,但 RFC3927 的典型实现是让设备发出ARP 探测在绑定到 IP 地址之前。虽然静态分配 169.254/16 中的地址比 RFC1918(MS 称之为 APIPA)地址的风险和侵入性更小,但某些用户仍有可能利用该网络进行工作组连接(尤其是与 MS 商店)。

如果两个设备进入具有相同链路本地地址的网络段(广播域),则会导致冲突。往返于这些设备的流量要么减慢速度,要么完全中断。如果设备连接在不同的冲突域上,这种事件的影响可能会有所不同。由于连接依赖于将 MAC 地址映射到 IP 地址,因此您可能会遇到这样的情况:发往同一地址的流量最终到达的节点与预期的节点不同。或者,使用静态 ARP 的设备可能会遇到不同的问题。同样,如果 RFC3927 的范围很小或不存在,则此类问题可能很少(或不存在)。

答案2

您可以使用 openvswitch.org 或类似网站,它允许您使用客户端的 MAC 地址以编程方式发出静态 IP

答案3

在机器上声明 IP 是不明智的。让路由器为其分配 IP 总是更好的选择,无论是动态还是静态。如果您想要辅助 IP,vpn 可能是一种解决方案。

相关内容