一、DHCP Snooping介绍
1.1 简介
DHCP Snooping 是一种二层接入安全技术,主要用于对 DHCP 报文进行合法性检测与过滤,防止网络中出现非法 DHCP 服务器和DHCP 攻击行为,保障终端能够从合法 DHCP 服务器获取正确的 IP 地址及网络参数。
它通过将交换机端口划分为信任端口和非信任端口实现安全控制:
- 信任端口:仅连接合法 DHCP 服务器、核心交换机或上级设备,允许正常转发 DHCP Offer、ACK 等服务器响应报文。
- 非信任端口:连接用户 PC、终端等接入设备,只允许发送 DHCP Request、Discover 等请求报文,拒绝所有 DHCP 服务器响应报文,从根源阻断非法 DHCP 服务。
DHCP Snooping 会生成并维护DHCP Snooping 绑定表,记录终端的MAC地址、IP地址、VLAN、接入端口、租期等关键信息,可与IPSG、DAI等安全功能联动,实现 IP 地址防伪造、ARP 欺骗防御、接入终端溯源等能力,提升整网接入安全与可靠性。
建议在用户接入层交换机部署 DHCP Snooping 功能,越靠近用户终端的端口,安全控制越精准。同时推荐接入交换机每个端口仅接入一台 PC。若端口下级联 Hub 等二层共享设备,且该 Hub 下存在多台终端,当 Hub 内部发生 DHCP 欺骗行为时,欺骗报文会在 Hub 内部直接转发,不会经过接入交换机的 DHCP Snooping 检查,导致该类欺骗行为无法被有效防范。
1.2 应用场景
防范非法 DHCP 服务器攻击防止用户私自接入家用无线路由器、随身 AP 等设备开启 DHCP 服务,避免合法终端获取错误网关、DNS 或冲突 IP,导致无法正常上网。
防御 DHCP 耗竭攻击(DHCP Starvation)防止攻击者通过伪造大量 DHCP 请求,耗尽合法 DHCP 服务器地址池,使正常用户无法获取 IP 地址。结合 DHCP Snooping 安全表项,可对端口学习的 MAC 数量进行限制。
确保 DHCP 报文合法性与路径可控通过信任端口与非信任端口机制,仅允许合法核心 / 汇聚层 DHCP 服务器下发地址,用户侧端口一律拒绝 DHCP Offer、ACK 等服务器报文,保证地址分配路径唯一、可信。
用户接入安全与溯源生成 DHCP Snooping 绑定表,记录 IP 地址、MAC 地址、端口、VLAN、租期 等信息,为安全审计、故障定位、非法终端定位提供依据。
配合 DAID、IPSG 实现二层准入控制与IP Source Guard(IPSG)、Dynamic ARP Inspection(DAI)联动,从 DHCP 分配阶段开始建立合法表项,防止 IP 地址伪造、ARP 欺骗、中间人攻击,构建完整的接入安全体系。
园区网 / 企业网用户接入场景广泛用于办公网、校园网、医院、商场等高密度用户接入环境,尤其适合大量 PC、 dumb terminal、IP 话机、无线 AP 自动获取地址的场景。
二、DHCP Snooping配置
2.1 组网拓扑
在本网络中,SwitchA 为接入层交换机,下联用户 PC 均通过 DHCP 方式自动获取 IP 地址;SwitchB 为核心层交换机,承担全网 DHCP 服务器功能。
为避免用户私自接入无线路由器等非法 DHCP 服务器,导致合法终端获取到错误 IP 地址、IP 地址冲突、无法正常上网等问题,需在接入交换机与核心交换机之间部署 DHCP Snooping 功能,实现对 DHCP 报文的合法性校验,仅允许合法 DHCP 服务器为终端分配地址,从而防范 DHCP 仿冒攻击,保障网络稳定与安全。
2.2 配置思路
DHCP Snooping功能,配置思路如下:
- 核心交换机和接入交换机配置vlan trunk。
- 核心交换机配置DHCP服务器。
- 接入交换机全局使能DHCP Snooping功能。
2.3 配置步骤
1. vlan trunk配置。
# 在核心交换机VLAN Trunk配置。
[SwitchB] vlan batch 10 [SwitchB] interface gigabitethernet 0/0/1 [SwitchB-GigabitEthernet0/0/1] port link-type trunk [SwitchB-GigabitEthernet0/0/1] port trunk allow-pass vlan 10 [SwitchB-GigabitEthernet0/0/1] quit# 在接入交换机VLAN Trunk配置。
[SwitchA] vlan batch 10 [SwitchA] interface gigabitethernet 0/0/1 [SwitchA-GigabitEthernet0/0/1] port link-type trunk [SwitchA-GigabitEthernet0/0/1] port trunk allow-pass vlan 10 [SwitchA-GigabitEthernet0/0/1] quit [SwitchA] interface gigabitethernet 0/0/2 [SwitchA-GigabitEthernet0/0/2] port link-type access [SwitchA-GigabitEthernet0/0/2] port default vlan 10 [SwitchA-GigabitEthernet0/0/2] quit [SwitchA] interface gigabitethernet 0/0/3 [SwitchA-GigabitEthernet0/0/3] port link-type access [SwitchA-GigabitEthernet0/0/3] port default vlan 10 [SwitchA-GigabitEthernet0/0/3] quit2. 在核心交换机上使能DHCP服务器功能,配置DHCP地址池。
[SwitchB] dhcp enable [SwitchB] interface vlanif 10 [SwitchB-Vlanif10] ip address 10.1.1.1 255.255.255.0 [SwitchB-Vlanif10] dhcp select interface [SwitchB-Vlanif10] dhcp server dns-list 114.114.114.114 8.8.8.8 [SwitchB-Vlanif10] dhcp server lease day 30 [SwitchB-Vlanif10]3. 接入交换机上配置DHCP Snooping功能。
[SwitchA] dhcp enable [SwitchA] dhcp snooping enable ipv4 //使能全局DHCP Snooping功能并配置设备仅处理DHCPv4报文,节约CPU利用率 [SwitchA] interface gigabitethernet 0/0/1 [SwitchA-GigabitEthernet0/0/1] dhcp snooping trusted //配置为信任接口,使得接入交换机只处理从该接口收到的DHCP服务器响应报文 [SwitchA-GigabitEthernet0/0/1] quit4. 验证配置。
# 在SwitchA上查看DHCP Snooping的配置信息。
[SwitchA] display dhcp snooping configuration# 在SwitchA上查看DHCP Snooping绑定表信息。
[SwitchA] display dhcp snooping user-bind all注意事项:
获取到非法DHCP服务器,冲突的解决办法如下:
- 首先在电脑ping命令非法DHCP服务器的网关。
- 再使用arp -a命令查找网关的MAC地址。
- 进入每层接入交换机输入display mac-address | include f48e-38b3-3444命令查看下联的端口。
- 在接入交换机指定端口,shutdown命令关闭接口。