什么是好的默认 IP 地址?

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绝对是首选

  • 要配置设备,客户必须访问内置 Web 服务器。如果设备是动态分配的,你如何找到它? (3认同)
  • 您要求您的客户将设备添加到他们无法控制的网络中。一旦发现网络上有未经授权的设备,IT 管理员就会介入。至少任何 IT 管理员都称职。通过说您将默认使用 192.168.0.X 地址,您将自己绑定到使用 192.168.xx 专用地址空间的主机网络。如果您的客户使用 172.16-172.31 地址连接到网络怎么办?或 10.xxx 地址? (3认同)

Jul*_*ano 9

避免任何固定地址。即使您试图避免其他类型的设备(如路由器)常见的地址,您仍然应该问自己:如果用户有两个或更多的这种设备怎么办?

正如许多人所说,您应该尝试使用 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(只要同一网络上只有一台设备会同时出现),但如果没有服务器可用,则回退到以下之一:

  • ZeroConf : AutoIP 用于地址分配,DNS-SD 用于发现设备。当您有多个设备可能连接在同一网络上时,这很有效,因此您也不需要唯一的 DNS 名称。用户不需要知道 IP 地址或 DNS 名称,并且可以在列表中找到它(如果您需要同时支持同一网络上的多个设备,这比使用 DHCP 和 DNS 有好处)。缺点:需要客户端软件,某些操作系统可能不支持。顺便说一下,我在这个括号中包含了其他类似的服务发现协议。
  • 专有协议:重新发明 ZeroConf 轮子。优点是这易于实现,但这确实意味着您限制了可以设置设备的客户端操作系统的数量(取决于您为其编写应用程序的操作系统数量(例如,您需要 iPad 支持吗?))。
  • 固定 IP 地址:这是大多数路由器等使用的系统,因此经过充分尝试和测试,几乎可以在任何客户端操作系统上运行。问题是你的IP地址可能会冲突,这当然是你问题的重点。在这种情况下,我建议您选择 192.168.0.0/24 范围内的任何一个,但让文档强烈建议直接连接到设备,而不是通过更广泛的网络。

我意识到您可能只是在寻找一个很好的相对未使用的 IP 地址,但是如果您能抽出工时来实施它们,这些都是值得考虑的替代方案。