这三件事凑在一起,是因为它们在接入网里总是一起出现:终端要拿地址(DHCP),链路要建起来(PPPoE),私网要能出去(NAT)。
DHCP
四步交互(DORA)
| 步骤 | 方向 | 内容 |
|---|---|---|
| Discover | 客户端广播 | 谁是 DHCP 服务器?(源 0.0.0.0,目的 255.255.255.255) |
| Offer | 服务器单播/广播 | 给你这个地址,租期这么长 |
| Request | 客户端广播 | 我要这个地址(广播是为了通知其他服务器) |
| ACK | 服务器单播 | 确认,地址归你了 |
为什么 Request 要广播?因为可能有多个 DHCP 服务器都发了 Offer,客户端选中一个后必须广播通知所有服务器「我选了谁」,其他服务器才能把预留的地址释放掉。
租期与续租
- 租期过半(T1,50%)→ 客户端单播向原服务器请求续租;
- 租期到 87.5%(T2)→ 还没续上就广播找任何一台服务器;
- 租期到期 → 必须重新走 DORA,地址可能变。
跨网段:DHCP 中继
DHCP 靠广播,路由器不转发广播,所以 DHCP 服务器在另一个网段时必须配中继。中继的原理是把广播转成单播发给服务器,并在报文里带上网关地址(giaddr),服务器靠这个字段判断该从哪个地址池分配。
# ── 服务器侧 ──
dhcp enable
ip pool office
network 192.168.1.0 mask 255.255.255.0
gateway-list 192.168.1.1
dns-list 223.5.5.5 114.114.114.114
lease day 1 hour 0
excluded-ip-address 192.168.1.1 192.168.1.10 # ★ 排除网关和服务器地址
interface GigabitEthernet0/0/1
ip address 192.168.1.1 24
dhcp select global
# ── 中继侧(网关设备)──
dhcp enable
interface GigabitEthernet0/0/1
dhcp select relay
dhcp relay server-ip 10.1.1.100 # 指向真正的 DHCP 服务器
PPP 与 PPPoE
PPP 的三个组件
| 组件 | 作用 |
|---|---|
| LCP(链路控制协议) | 建立/维护/拆除链路;协商 MTU、认证方式、魔术字(防环) |
| 认证 | PAP(明文)或 CHAP(三次握手,更安全) |
| NCP(网络控制协议) | IP 场景下就是 IPCP,用来协商 IP 地址(这就是拨号能拿到 IP 的原因) |
顺序是固定的:LCP → 认证 → NCP。所以「拨号失败」要先看卡在哪一步。
PPPoE 为什么 MTU 只有 1492
以太网 MTU 1500
- PPPoE 头 6 字节(版本+类型+Session ID)
- PPP 协议字段 2 字节
─────────────────────
= 1492 ← PPPoE 接口的 MTU
★ 这就是为什么家用宽带偶尔有网站打不开:
某些服务器发了 1500 的大包,PPPoE 链路装不下
→ 要么分片(效率低),要么直接丢
→ 解决:在 PPPoE 接口上配 tcp adjust-mss 1452
interface Dialer1
mtu 1492
tcp adjust-mss 1452
NAT
| 形态 | 映射关系 | 典型用途 |
|---|---|---|
| 静态 NAT | 一个内网 IP ↔ 一个公网 IP,固定 | 内网服务器需要固定公网地址 |
| 动态 NAT | 从地址池里临时分配 | 内网用户多、公网地址够用 |
| NAPT(地址+端口) | 多个内网 IP ↔ 一个公网 IP,靠端口区分 | 最常用。华为 easy-ip 就是这种 |
| NAT Server | 公网 IP:端口 → 内网 IP:端口 | 对外发布服务器 |
NAPT 的核心是转换表
设备维护一张表,记住「内网 IP:端口 ↔ 公网 IP:端口」的对应关系。回程流量靠这张表反查,才能知道该送给内网哪台机器。
这带来两个后果:
- 表丢了连接就断——设备重启、NAT 表老化,都会导致已建立的连接中断;
- 双机热备必须同步 NAT 表——这就是防火墙双机热备要同步「动态 NAT 表项」的原因。
NAT 和 IPSec 为什么打架
IPSec 的 AH 会校验整个 IP 头,NAT 一改源地址校验就失败(上一篇讲过)。而且顺序也很讲究:
正确顺序: 匹配感兴趣流 → IPSec 加密 → NAT 转换 → 发出
如果顺序反了(先 NAT):
内网地址被改成公网地址
→ IPSec 的 ACL 匹配的是内网地址,匹配不上了
→ 流量直接走普通转发,不进隧道
解决:在 NAT 策略里把去 VPN 对端的流量 deny 掉
(具体配置见「IPSec VPN 配置」那篇)
排错
# DHCP
display ip pool name office used # ★ 地址池使用情况(还剩几个)
display dhcp server statistics # 收发包统计
display dhcp relay all # 中继配置
reset ip pool name office all # 清掉所有租约(慎用)
# PPPoE
display pppoe-client session summary # ★ 会话状态
display interface dialer 1 # 拨号接口(含 MTU)
display pppoe-client session packet
# NAT
display nat session all # ★ 转换表
display nat session all verbose
display nat address-group # 地址池
display nat server # 服务器映射
display firewall session table # 会话表(含 NAT 信息)
- 终端拿不到地址 →
display ip pool看地址池是否耗尽;中继场景确认dhcp relay server-ip配了; - 地址池够但分配不出去 → 网关地址没配(
gateway-list),或者接口上没开dhcp select global; - PPPoE 拨不上 → 看卡在哪个阶段。发现阶段失败 = 二层不通或对端没响应;会话阶段失败 = 认证错(查 PAP/CHAP 的账号密码);
- 能上网但部分网站打不开 → MTU/MSS。PPPoE 场景配
tcp adjust-mss 1452; - NAT 后内网访问不了内网服务器 → 典型的「发夹弯」问题(hairpin NAT),需要设备支持并开启;
- 同时配 NAT 和 IPSec 隧道起不来 → NAT 把 VPN 流量也转了,加 deny 排除。
一句话总结:DHCP 靠广播所以要中继,PPPoE 多 8 字节头所以 MTU 是 1492,NAT 靠一张表所以要热备同步。这三个数字和机制,解释了接入网八成的「奇怪故障」。
📌 本篇整理自 2024–2025 的「数通」学习笔记(HCIE-Datacom 方向)
合并了原始笔记中「DHCP / PPP / PPPoE / NAT」四页。
原笔记偏命令罗列,本文把三者的关联串了起来,并补上了 MTU 1492 的由来、NAT 与 IPSec 的执行顺序这两个实际高频问题。
配置命令保留华为 VRP 原样。