# DHCP Snooping

## DHCP Snooping 是什么

DHCP Snooping 是一种二层安全技术，用来防止非法 DHCP 服务器向终端错误分配地址。

可以简单理解为：

交换机帮我们“盯住 DHCP 报文”，只允许可信任的 DHCP 服务器方向终端分配地址，其他不可信端口发来的 DHCP 服务器报文会被拦截。

## 作用

DHCP Snooping 的核心作用是：
- 防止私接 DHCP 服务器
- 防止终端拿到错误的 IP、网关、DNS
- 建立 DHCP Snooping 绑定表
- 为后续安全特性提供基础，例如动态 ARP 防护等

## 信任端口与非信任端口

### 信任端口 Trusted Port

通常连接：
- 正常 DHCP 服务器
- 上联交换机
- 汇聚层或核心层方向

信任端口允许转发 DHCP 服务器发出的报文。

### 非信任端口 Untrusted Port

通常连接：
- PC
- 打印机
- 普通终端
- 接入层用户口

非信任端口默认不应该发送 DHCP 服务器报文。如果发送，交换机会进行拦截。

## 工作思路

DHCP Snooping 的常见工作过程可以理解为：
1. 客户端从非信任端口发出 DHCP Discover
2. 报文可以正常向上转发
3. 真实 DHCP 服务器从信任端口返回 DHCP Offer / ACK
4. 交换机允许这些来自信任端口的服务器报文下发给客户端
5. 交换机根据合法分配结果生成绑定表，记录 IP、MAC、VLAN、接口等信息

## 典型应用场景

- 接入层用户网络
- 宿舍网
- 办公网
- 访客网络

这类场景里，最怕的是用户私接一个无线路由器或小型 DHCP 服务设备，导致别人拿到错误地址。

## 基本配置思路

DHCP Snooping 的常见配置思路是：
1. 全局启用 DHCP Snooping
2. 在相关 VLAN 上启用 DHCP Snooping
3. 把上联口或服务器口设为信任端口
4. 用户接入口保持为非信任端口
5. 按需要限制 DHCP 报文速率
6. 检查 DHCP Snooping 绑定表是否正常生成

## 常见问题

### 1. 为什么客户端获取不到地址

常见原因有：
- 没有在对应 VLAN 启用 DHCP Snooping
- DHCP 服务器所在接口没设为信任端口
- 报文速率限制过严
- 上联链路或中继配置本身有问题

### 2. 为什么要区分信任端口和非信任端口

因为 DHCP Snooping 的核心就是：
- 允许可信来源下发地址
- 拦截不可信来源冒充 DHCP 服务器

### 3. DHCP Snooping 能不能防所有 DHCP 问题

不能。

它主要防的是“非法 DHCP 服务器”问题，不是所有 DHCP 故障都能靠它解决。

## 一句话理解

- **DHCP Snooping 就是“只信任指定接口发来的 DHCP 服务器报文”**
- **它的重点是防止假 DHCP 服务器捣乱**

## 常见厂商命令

### 华为

不同型号和版本命令可能略有差异，常见思路如下：

全局启用 DHCP：

```bash
dhcp enable
```

启用 DHCP Snooping：

```bash
dhcp snooping enable
```

在接口下配置为信任端口：

```bash
interface GigabitEthernet 0/0/24
dhcp snooping trusted
```

查看配置：

```bash
display current-configuration
```

### 思科 Cisco

全局启用 DHCP Snooping：

```bash
ip dhcp snooping
```

在指定 VLAN 启用：

```bash
ip dhcp snooping vlan 10
```

把上联口设为信任端口：

```bash
interface gigabitEthernet 0/24
ip dhcp snooping trust
```

限制 DHCP 报文速率：

```bash
ip dhcp snooping limit rate 20
```

查看 DHCP Snooping 状态：

```bash
show ip dhcp snooping
```

查看绑定表：

```bash
show ip dhcp snooping binding
```

## 复习时容易写错的点

- DHCP Snooping 不是 DHCP 服务本身，而是 DHCP 的安全控制技术
- 重点不是“禁止 DHCP”，而是“只允许可信来源发放地址”
- 用户接入口通常是非信任端口，上联口或服务器口通常是信任端口
- DHCP Snooping 生成的绑定表很重要，后续很多安全功能会用到它
