什么是一个好的默认IP地址?

我的公司生产以太网设备。 这些设备的I / O非常less。 没有键盘,没有video输出。 当客户拿到设备时,他必须configuration他的networking。 我想select一个不会与他的networking上的现有设备冲突的IP地址,但是他的networking可以是任何东西。

一些客户有192.168.xxnetworking。 其他人有10.xxxnetworking。

大多数networking设备(特别是路由器)都配有192.168.x.1。 但是这不是一个路由器,所以我不想默认到一个低IP地址,因为这将有较高的冲突概率。

使用产品发货的IP地址是什么? 是否有半私人/未使用的C类networking?

让它由DHCP服务器分配? 如果不是,我会build议使用192.168.0.250。 但是,DHCP绝对是首选

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

正如很多人所说,你应该尝试使用DHCP自动configuration设备。 这样,networkingpipe理员可以轻松地从DHCP服务器中心控制您的设备的地址。

无法从DHCP进行configuration,您的设备应该在169.254 / 16范围内configuration链路本地地址 。 任何连接在兼容堆栈和非破坏configuration的链路上的主机都应该能够使用默认链路本地地址连接到您的设备,然后将其configuration为所需的地址。

RFC 3927详细描述了设备如何configuration链路本地地址。 这个RFC的摘要如下:

要参与广域IP联网,主机需要为其接口configurationIP地址,可以由用户手动configuration,也可以从networking上的某个源(例如dynamic主机configuration协议(DHCP)服务器)自动configuration。 不幸的是,这样的地址configuration信息并不总是可用的。 因此,即使当没有地址configuration可用时,主机也能够依靠IPnetworkingfunction的有用子集是有益的。 本文档描述了主机如何自动configuration一个接口,该接口使用169.254 / 16前缀中的IPv4地址,该前缀对于与连接到相同物理(或逻辑)链路的其他设备的通信有效。

该解决scheme似乎是一个完美的适合你的问题。

简而言之,在RFC中描述的实际实现包括使用设备的MAC地址作为种子来selectPRN。 实际上,我所看到的许多设备使用MAC地址的最后两个八位字节作为169.254.xy的最后两个八位字节,如果发生冲突,则从PRNG获取下一个数字。

PS:我真的很惊讶,在10个小时内和8个以前的答案,没有人提到链接本地地址。 不幸的是,现在这个问题已经很老了,并且有一个被接受的答案,很可能这个答案会被大多数人错过。

实际上有专门为发现而devise的协议。 一个例子是链路层发现协议(LLDP) 。 如果你真的想要一个可靠的解决scheme,你应该考虑这样的事情。

select一个静态IP的一个问题是,无论你select哪个IP,尝试连接到它的计算机的路由configuration都不可能在所有计算机上正确设置。

DHCP和DNS可能是一个很好的解决scheme,如果不是因为大量的networking仍然没有服务器存在并使用固定的IP地址。 如果你不想locking这些人使用你的设备,那么你至less需要退回到其他系统。

ZeroConf被发明来处理这种情况:没有DHCP或DNS服务器。 事实上,它会很好地解决这个问题 – 设备分配自己的一个AutoIP地址,然后通告它的服务,所以你可以find它,而不pipe它的IP地址。 ZeroConf的问题在于用户需要在某些操作系统上安装软件以支持它(例如Windows),而某些客户端操作系统可能根本没有ZeroConf库。 其他专有发现机制也是如此,它们使用一些专有软件来configuration设备的IP地址。

我的首选是使用已知的DNS名称默认为DH​​CP(只要一个设备将同时在同一networking上出现),但如果没有服务器可用,则回退到以下之一:

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

我意识到你可能只是在寻找一个相对未使用的IP地址,但是如果你可以腾出时间来实现它们,这些方法是值得考虑的。

在连接之前,我一直希望直接在设备上设置IPconfiguration,无论是通过面板还是串行端口。 但是现在的趋势似乎只有一个networking端口,所以最好的方法是默认为DH​​CP,然后回退到169.254.xx链路本地寻址,也许使用多播服务发现(ZeroConf / Bonjour)你可以find新的小部件的当前地址,以给它一个新的。 另外,请确保MAC地址位于设备外部的可读标签上。

另一个私有范围是172.16.0.0掩码255.240.0.0

这个范围将包括从172.16.xx到172.31.xx本质上16个B类子网的所有IP。

几年前,我遇到了一个没有任何默认IP地址或DHCP客户端的设备。 而是使用arp和ping来设置ip地址。 有一个类似的选项爱普生打印机的联机文档 。 这个特定的设备还附带了Windows软件,它可以为您发送arp和ping命令。

第一,我会设置它得到一些192.168.xx / 24的变化。 说192.168.1.100。

那么我会提供非常清晰和详细的文件,使用户能够:

如果这个人有不同的networking地址,他们可以暂时将他们PC上的IP地址改变成该networking上的地址,例如192.168.100.101。

那么他们应该能够进入一个Web界面,要求他们手动设置一个地址或使用DHCP。 如果需要用户可以直接将网线从PC连接到设备。

这是一个便宜的方法来做到这一点。 大多数路由器都是这样做的 – 但使用192.168.0.1或1.1。 更昂贵的方法是在第一天使用DHCP,然后编写或购买发现实用程序。

我会使用192.168.xy其中xy是随机数,不包括0,255和1的y。 既然你想避免冲突,select一个“好”的默认地址是没有意义的,因为其他人会select相同的地址。

他们甚至可以从这个问题中得到答案。

只要用户可以更改默认地址,这并不重要。

如果是消费类产品,我肯定会把它放到192.168.xx的范围内。

设备是否可以首先发送一个广播,然后从多个IP地址接收到您select的答案之后,您将无法回答。 也许你可以使用比回答的最高地址高一个的地址。

也许在某些情况下,默认值是不好的,所以你可以要求使用一个。