为什么我的Pi总是具有相同的IP地址?


22

我的路由器使用DHCP,每当我重新格式化树莓派时,即使使用其他microSD卡,它也始终具有相同的LAN ip。我不太确定如何分配IP,但我假设设备在路由器可以识别的网络上具有唯一ID?


这怎么发生的?我问一个关于SE的问题,它的票数正!这是很多反对意见。

Answers:


36

您的Raspberry Pi具有一个唯一的ID,称为MAC地址,确切地说是两个。每个网络适配器都有其中之一。因此,Wi-Fi适配器具有一个唯一的ID,而以太网适配器则具有。

这就是为什么您的Raspberry Pi获得相同IP的原因。对于您的路由器,确切地使用设备做什么并不重要。它仅识别MAC并提供与以前相同的IP。

编辑:正如Beege所指出的,由于DHCP中的“ D”代表动态,因此IP仍然可以更改。但是,如果您的设备通过DHCP获得与以前相同的IP,则是由于可以识别出MAC。


9
很好的解释。我认为值得一提的是,相同的MAC地址不会总是从DHCP服务器获得相同的IP,它仍然是“动态”服务,因此该IP有可能被另一台设备占用,而您的Pi最终会获得不同的IP分配。
Beege

3
@Beege哦,是的,绝对,谢谢!当需要永久IP时,例如在服务器上运行服务器时,可以选择为Pi保留特定IP。但这将专门由路由器(或任何其他在网络中提供DHCP服务的设备)
启用

2
actually two to be precise-假设pi3b或3b +
Jaromanda X

7
IP相同的事实并非由于MAC。MAC是路由器可以访问的标识符。可以将路由器配置为在续订租约时尝试为您提供相同的IP,或者可以为您随机分配一个不同的IP。您的路由器(由制造商)配置为使用前者。实际上,这可以防止由动态IP相关问题(想到IP打印端口)引起的许多网络问题。获得相同IP的能力归功于MAC,但是我可以轻松地在路由器上设置DHCP,以为大量不同的设备提供相同IP。
尼尔森

1
高质量的DHCP实现将缓存以前的MAC地址和IP分配。当看到缓存的MAC地址时,它将倾向于再次提供相同的IP(如果可用)。除非没有剩余的可用地址,否则它将拒绝将IP分配给其他MAC地址。由于这取决于特定的实现...而且家用路由器的质量无处不在...根据您的路由器型号,行为不一定是一致的。
蒂姆·坎贝尔

16

除了已经给出的答案外,我还将提供一些其他背景信息。

通常,使用DHCP协议以尽可能减少动态变化。这是稳定性的一个方面。在小型家庭网络中,这无关紧要,但是具有交换机和路由器的大型网络需要一些时间才能进入优化状态。交换机必须了解其邻居,而路由器必须了解路由。IP地址的大量更改不适用于此状态。

大多数人可能认为DHCP服务器只是将IP地址提供给客户端,仅此而已。但这只是事实的一半。这是典型的DHCP握手:

(client) DHCPREQUEST for 192.168.10.75 from b8:27:eb:0e:3c:6f (raspi3) via wlan0
(server) DHCPACK on 192.168.10.75 to b8:27:eb:0e:3c:6f (raspi3) via wlan0

如您所见,以其Mac地址b8:27:eb:0e:3c:6f标识的客户端请求了它偏爱的特定IP地址。它知道在新启动之前和之前拥有的IP地址。DHCP服务器仅确认它。它给客户的东西称为租赁。它包含一个超时(以及许多其他重要选项),客户端可以使用IP地址多长时间而无需再次请求。超时时间取决于设置,并且通常设置为几个小时。DHCP服务器将租约存储在其缓存中,并且即使关闭了该租约,它也会为同一客户端尽可能长时间地保留。因此,它将在再次启动时确认客户端的租约。只有当服务器没有其他未使用的租约要提供给客户端时,它才会使用已使用的租约。握手将如下所示:

(client) DHCPREQUEST for 192.168.10.75 from b8:27:eb:0e:3c:6f (raspi3) via wlan0
(server) DHCPNAK on 192.168.10.75 to b8:27:eb:0e:3c:6f via wlan0
(client) DHCPDISCOVER from b8:27:eb:0e:3c:6f via wlan0
(server) DHCPOFFER on 192.168.10.99 to b8:27:eb:0e:3c:6f via wlan0
(client) DHCPREQUEST for 192.168.10.99 from b8:27:eb:0e:3c:6f (raspi3) via wlan0
(server) DHCPACK on 192.168.10.99 to b8:27:eb:0e:3c:6f (raspi3) via wlan0

如您所见,DHCP服务器拒绝(DHCPNAK)请求,并提供一个新的IP地址,客户端随后将在下一步中进行请求。进行此附加步骤是为了使客户端可以不接受提供的IP地址...


4
+1恕我直言,这是正确的答案。这只是DHCP协议的工作方式。
乔斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.