ARP 与 DHCP

ARP 负责 IP→MAC 地址解析,DHCP 负责自动分配 IP 地址,两者是局域网中最重要的基础协议。

ARP 原理

工作过程

主机 A(192.168.1.1)要发送数据给同网段主机 B(192.168.1.2):

  1. 查询本机 ARP 缓存表,若无 B 的 MAC
  2. 发送 ARP 请求广播:谁是 192.168.1.2?请告诉 192.168.1.1
  3. 主机 B 收到后回复 ARP 应答单播:192.168.1.2 的 MAC 是 xx:xx:xx:xx:xx:xx
  4. 双方更新 ARP 缓存,开始通信

ARP 报文

字段说明
硬件类型1 = 以太网
协议类型0x0800 = IPv4
操作码1 请求 / 2 应答
发送方 MAC/IP源地址信息
目标 MAC/IP请求时目标 MAC 为全 0

特殊 ARP

  • 免费 ARP(Gratuitous ARP):发送方 IP 与自己 IP 相同的 ARP 请求,用于地址冲突检测、网关通告、VRRP 主备切换通告
  • 代理 ARP(Proxy ARP):路由器代答跨网段 ARP 请求,实现”伪装网关”(已较少用)
  • RARP:MAC→IP 的反向解析,已被 BOOTP/DHCP 取代

ARP 安全威胁与防御

威胁现象防御
ARP 欺骗网关 MAC 被篡改,流量被中间人截获DAI(动态 ARP 检测)
ARP 泛洪大量伪造 ARP 报文耗尽设备 CPUARP 限速、源 MAC 检查

防御配置见 04.06_网络攻击与防护。

以太网与 MAC 地址

  • MAC 地址 48 位,前 24 位为厂商 OUI,后 24 位为设备序列
  • 单播 MAC:目的地址最低位为 0
  • 组播 MAC:目的地址最低位为 1
  • 广播 MAC:FF-FF-FF-FF-FF-FF
  • 交换机根据 MAC 地址表 转发帧;未知单播 → 泛洪

以太网帧格式(Ethernet II)

目的MAC(6) | 源MAC(6) | 类型(2) | 数据(46-1500) | FCS(4)
  • 类型 0x0800 = IPv4,0x0806 = ARP,0x86DD = IPv6
  • 带 VLAN 时插入 802.1Q Tag(4 字节),见 03.01_VLAN与VLAN间路由

DHCP 深入

报文类型

报文方向作用
DHCPDISCOVER客户端→广播寻找服务器
DHCPOFFER服务器→广播/单播提供地址
DHCPREQUEST客户端→广播请求地址/续租/确认
DHCPACK服务器→广播/单播确认分配
DHCPNAK服务器→客户端拒绝请求
DHCPRELEASE客户端→服务器释放地址
DHCPDECLINE客户端→服务器地址冲突,拒绝使用

华为设备配置 DHCP

[Huawei] dhcp enable                          // 全局使能
[Huawei] ip pool vlan10
[Huawei-ip-pool-vlan10] network 192.168.10.0 mask 255.255.255.0
[Huawei-ip-pool-vlan10] gateway-list 192.168.10.1
[Huawei-ip-pool-vlan10] dns-list 223.5.5.5 114.114.114.114
[Huawei-ip-pool-vlan10] excluded-ip-address 192.168.10.1 192.168.10.20
[Huawei-ip-pool-vlan10] lease day 1
[Huawei-ip-pool-vlan10] quit
[Huawei] interface Vlanif10
[Huawei-Vlanif10] dhcp select global            // 接口使用全局地址池

DHCP Snooping(安全)

  • 信任端口:连接 DHCP 服务器的端口
  • 非信任端口:仅允许 DISCOVER/REQUEST,丢弃 OFFER/ACK
  • 建立 IP-MAC 绑定表,供 DAI/IPSG 使用
  • 防 DHCP 饿死攻击:限制非信任端口 DHCP 报文速率

常见故障

  • 获取不到地址:检查 DHCP 服务是否开启、地址池是否耗尽、VLANIF 是否 up
  • 获取慢:检查广播域是否过大、是否有环路
  • 部分终端获取失败:检查 DHCP Snooping 信任口配置

🔗 相关笔记:02.01_网络协议详解 02.02_应用层协议详解 04.06_网络攻击与防护