机器启动时,会向外广播自己的 mac 地址和 ip 地址,这个即称为 arp 协议。范围是未经过路由器的部分,如下图的蓝色部分,范围内的设备都会在本地记录 mac 和 ip 的绑定信息,若有重复则覆盖更新(例如先收到 mac1-ip1、再收到 mac2-ip1 时则覆盖记录为 mac2-ip):
案例:假设某设备 reboot 后 mac 地址会变化,则每次 reboot 都会向外发送不同的 arp 包(如先发送自己为 mac1-ip1,下一次 reboot 时再发送自己是 mac2-ip1,再下一次 reboot 时发送自己是 mac3-ip1)。如下图是 reboot 后变化的 mac 地址(通过 ip a 可看出 mac 地址):
作为网络管理员(IT)通常为了应对这种「设备 reboot 后 mac 地址的变化」,对 DHCP 的冲击,会做一些限制,如在交换机上设置其上的某网口,最多接受 50 个 mac 地址,若超过则丢包。
- DHCP 是一个服务,是通过 mac 地址请求 ip 地址,可单独作为一个 server 部署,也可在交换机上配置部署。
- 如果设备 reboot 后 mac 地址总会变化,则对于同一个设备,其每次 reboot 都会向 DHCP 请求一个 ip 地址,这会耗尽局域网内的 ip 地址资源,导致其他设备无 ip 可用,从而网络瘫痪,此行为可视为一种网络攻击。
- 如设备 a,第一次 reboot 会以 maca 向 DHCP 拿到 ipa,第二次 reboot 会以 maca 向 DHCP 拿到 ipb,第 n 次 reboot 会以 maca 向 DHCP 拿到 ipn
- 而 DHCP 的缓存是有过期时间的,虽然第 n 次时 设备 a 只使用了 ipn,但其之前拿到很多自己不需要的 ip 地址(如 ipa、ipb、。。。ipn-1)
- 这会造成局域网内的其他设备(如b、c、d、e)无 ip 可用,从而网络瘫痪,此行为可视为一种网络攻击。
- 所以,网络管理员会设置规则,限制如在交换机上设置其上的某网口,最多接受 50 个 mac 地址,若超过则丢包,如下图
随机生成 mac 地址的命令(前面6个数字也可以随机):
bash
echo 13:25:46:`echo $RANDOM | md5sum | sed 's/../&:/g' | cut -c1-8`