Rob*_*ert 6 networking ethernet embedded ip-address
我公司生产以太网设备。这些设备的 I/O 非常少。没有键盘,没有视频输出。当客户拿到设备时,他必须为他的网络配置它。我想选择一个不会与他网络上现有设备冲突的 IP 地址,但他的网络可以是任何东西。
一些客户拥有 192.168.xx 网络。其他人有 10.xxx 网络。
大多数网络设备(特别是路由器)附带 192.168.x.1。但这不是路由器,所以我不想默认为低 IP 地址,因为这将有更高的冲突概率。
什么是与产品一起提供的良好 IP 地址?是否有半私有/未使用的 C 类网络?
小智 14
让它由DHCP服务器分配?如果不是,我建议使用 192.168.0.250。但是DHCP绝对是首选
避免任何固定地址。即使您试图避免其他类型的设备(如路由器)常见的地址,您仍然应该问自己:如果用户有两个或更多的这种设备怎么办?
正如许多人所说,您应该尝试使用 DHCP 自动配置设备。通过这种方式,网络管理员可以轻松地从 DHCP 服务器集中控制您设备的地址。
如果无法从 DHCP 配置,您的设备应配置169.254/16 范围内的本地链路地址。任何在同一链路中使用兼容堆栈和未损坏配置连接的主机都应该能够使用默认的链路本地地址连接到您的设备,然后将其配置为所需的地址。
RFC 3927详细描述了设备如何配置其链路本地地址。该 RFC 的摘要如下:
要参与广域 IP 网络,主机需要为其接口配置 IP 地址,可以由用户手动配置,也可以从网络上的源(例如动态主机配置协议 (DHCP) 服务器)自动配置。不幸的是,此类地址配置信息可能并不总是可用。因此,即使在没有可用的地址配置时,主机能够依赖有用的 IP 网络功能子集也是有益的。本文档描述了主机如何使用 169.254/16 前缀内的 IPv4 地址自动配置接口,该地址对于与连接到同一物理(或逻辑)链路的其他设备的通信有效。
该解决方案似乎非常适合您的问题。
简而言之,RFC 中描述的实际实现包括使用设备的 MAC 地址作为种子来选择 PRN。在实践中,我看到的许多设备使用 MAC 地址的最后两个八位字节作为 169.254.xy 的最后两个八位字节,并且在发生冲突的情况下,从 PRNG 获取下一个数字。
PS:我实际上很惊讶,在 10 小时内和 8 个以前的答案中,没有人提到链接本地地址。不幸的是,既然这个问题已经过时并且有一个公认的答案,很可能大多数人都会错过这个答案。
小智 6
实际上有专门为发现目的而设计的协议。一个例子是链路层发现协议 (LLDP)。如果你真的想要一个可靠的解决方案,你可能应该考虑这样的事情。
只选择静态 IP 的一个问题是,无论您选择什么 IP,尝试连接到它的计算机的路由配置都不太可能在所有计算机上正确设置。
小智 5
DHCP 和 DNS 可能是一个很好的解决方案,如果不是因为大量网络仍然没有服务器存在并且使用固定的 IP 地址。如果您不想阻止这些人使用您的设备,那么您至少需要退回到其他系统。
ZeroConf 就是为了处理这种情况而发明的:没有 DHCP 或 DNS 服务器。事实上,它可以很好地解决这个问题——设备为自己分配一个 AutoIP 地址,然后公布它的服务,这样你就可以找到它,而不管它的 IP 地址如何。ZeroConf 的问题在于用户需要在某些操作系统上安装软件才能支持它(例如 Windows),而某些客户端操作系统可能根本没有可用的 ZeroConf 库。其他专有发现机制也是如此,这些机制使用一些专有软件来配置设备的 IP 地址。
我的偏好是默认使用具有已知 DNS 名称的 DHCP(只要同一网络上只有一台设备会同时出现),但如果没有服务器可用,则回退到以下之一:
我意识到您可能只是在寻找一个很好的相对未使用的 IP 地址,但是如果您能抽出工时来实施它们,这些都是值得考虑的替代方案。