路由器如何分配 IP 地址?是随机的还是有固定的方法?
似乎同一台设备(无论何时连接)似乎都分配了相同的 IP。路由器是否知道 MAC 地址并分配相同的 IP,还是有其他原因?
答案1
IPv4 地址通常使用 DHCP 协议分配。这是如何发生的,取决于特定的 DHCP 服务器在路由器上运行...
使用 DHCP,地址的租用期限为一段时间,因此如果设备重新启动并在旧租用期到期之前请求地址,路由器通常会提供相同的旧地址(基于 DHCP 客户端 ID 或 MAC 地址)。
一些 DHCP 服务器即使在租约到期后的一段时间内仍会记住颁发了哪个地址,因此它们总是将相同的地址分配给同一设备。
如果之前没有看到该设备,则取决于实现方式——通常新地址是随机选择的,但有时是按顺序选择的,有时是基于 MAC 地址的某种哈希值,以便路由器至少尝试再次提供旧地址。
例如,引用dhcpd.conf(5)
ISC DHCP 服务器的手册页DHCP服务器:
DHCP 服务器从 哈希表。这意味着地址没有按任何部分排序。 特定顺序,因此无法预测 DHCP 服务器将分配 IP 地址。之前版本的用户 ISC DHCP 服务器可能已经习惯了 DHCP 服务器 按升序分配 IP 地址,但这不再是可行的 并且没有办法使用版本 3 配置此行为 ISC DHCP 服务器。
对于 IPv6,有一个类似的协议 DHCPv6,上述答案仍然适用于它。
然而,许多网络使用更简单的“无状态自动配置”协议,其中路由器只广播字首(又称网络地址),设备会分配自己的 IP 地址。分配以两种方式完成:
答案2
我认为有必要指出的是路由器不分配 IP 地址:路由器在一个接口上接收 IP 数据包,并几乎不做任何改变地将其发送到另一个接口(我能想到的变化是减少 TTL 并更新 IP 数据包的校验和;甚至更改数据包中的 IP 地址(NAT)也超出了路由器的任务)。
被称为家庭路由器不仅仅是路由器,它们还包括以下一些功能/服务:
- DHCP 服务器(这是分配 IP 地址的服务),
- ADSL 调制解调器(用于协商与 ISP 的连接),
- 防火墙(过滤传入和传出连接),
- 入站和出站 NAT 设备(用于共享 ISP 为家庭网络上的所有设备分配的单个 IPv4 地址),
- 路由器,
- 转变,
- WiFi 天线,
- 网络服务器,
- 控制台(web、ssh 或 telnet)用于配置设备,
- 其他的...
(注意:防火墙通常可以执行入站和出站 NAT 和路由,即使这 4 个功能可以使用专用设备来完成。)
在大型企业部署中,DHCP 服务器通常托管在与路由器无关的专用 Linux 或 Windows 服务器(通常是集群)上。
答案3
一般来说(对于 IPV4),所使用的系统称为“DHCP”,其工作原理大致如下。
- 路由器运行“DHCP 服务器”,其中有一个可以使用的 IP 表。
- 每台计算机都会发出一个 DHCP 请求,该请求基本上是在网络上发送的一个数据包(带有其 MAC 地址),询问“我可以拥有什么 IP?”
- 路由器查看收到的数据包,并指出这是您的 IP 地址、网关、DNS 服务器[以及其他信息]
- 然后计算机进行自我配置。
DHCP 服务器表可以使用 MAC 地址来确保机器每次都获得相同的 IP 地址(如果可用)。