手动配置每台终端的 IP 地址在大型网络中既低效又易错。DHCP(动态主机配置协议)让终端开机自动获取 IP、网关、DNS;NAT(网络地址转换)则解决私网 IP 访问公网的问题。本文将两者结合,完成从自动分配到地址转换的完整实验。

一、DHCP 原理与 DORA 流程

DHCP 采用客户端/服务器模式,终端获取 IP 地址需经历四个步骤,称为 DORA 流程:

步骤名称方向说明
DDiscover(发现)客户端→服务器(广播)终端广播寻找 DHCP 服务器
OOffer(提供)服务器→客户端(单播/广播)服务器回应可分配的 IP 地址
RRequest(请求)客户端→服务器(广播)终端正式请求使用该 IP
AAcknowledge(确认)服务器→客户端(单播/广播)服务器确认分配,附带网关/DNS/租约
💡
租约(Lease):DHCP 分配的 IP 不是永久的,默认租约 1 天。租约过半时终端会自动续租,无需重新走完整 DORA 流程。

二、实验拓扑

                        ┌── PC1 (自动获取)
  互联网 ── AR2220 ── SW1 ── PC2 (自动获取)
   8.8.8.8   │  GE0/0/0      └── PC3 (自动获取)
   200.1.1.1 │  192.168.10.1
             │
             └── DHCP服务器 (192.168.10.2,也可由AR2220兼任)

  GE0/0/1: 200.1.1.1/24 (公网侧)

  需求:
    ① DHCP: AR2220 充当 DHCP 服务器,为 PC1~PC3 自动分配 192.168.10.x
    ② SNAT: 内网 PC 访问互联网,源 IP 转为 200.1.1.1
    ③ DNAT: 外网访问 200.1.1.1:80 → 内网 Web(192.168.10.100:80)

三、DHCP 配置实战

# 开启 DHCP 服务
[AR2220] dhcp enable

# 创建全局地址池
[AR2220] ip pool netlab-pool
[AR2220-ip-pool-netlab-pool] network 192.168.10.0 mask 255.255.255.0
[AR2220-ip-pool-netlab-pool] gateway-list 192.168.10.1
[AR2220-ip-pool-netlab-pool] dns-list 8.8.8.8 114.114.114.114
[AR2220-ip-pool-netlab-pool] lease day 1 hour 0 minute 0

# 排除固定地址(服务器/打印机等保留IP)
[AR2220-ip-pool-netlab-pool] excluded-ip-address 192.168.10.2 192.168.10.10
[AR2220-ip-pool-netlab-pool] excluded-ip-address 192.168.10.100

# 在接口上启用全局地址池分配
[AR2220] interface GigabitEthernet 0/0/0
[AR2220-GE0/0/0] dhcp select global
💡
排除地址的意义:192.168.10.2~10 和 192.168.10.100 是留给服务器和固定设备的,DHCP 不会将这些地址分配给普通终端,避免 IP 冲突。

四、DHCP 验证

# PC1 终端自动获取 IP(VRP模拟终端)
PC1> dhcp enable
PC1> ipconfig
  IPv4 Address: 192.168.10.11  ✅ 自动获取成功
  Subnet Mask: 255.255.255.0
  Gateway: 192.168.10.1
  DNS: 8.8.8.8

# 路由器查看地址池状态
[AR2220] display ip pool name netlab-pool
  Pool-name      : netlab-pool
  Pool-No        : 0
  Lease          : 1 Days 0 Hours 0 Minutes
  Network        : 192.168.10.0 / 255.255.255.0
  Gateway        : 192.168.10.1
  DNS            : 8.8.8.8  114.114.114.114
  excluded-ip    : 192.168.10.2~192.168.10.10
                  192.168.10.100
  IP-in-use      : 192.168.10.11  (PC1)
                  192.168.10.12  (PC2)
                  192.168.10.13  (PC3)
  IP-available   : 240  ✅ 剩余可分配数量

五、NAT 配置——SNAT 与 DNAT

DHCP 解决了内网终端的 IP 分配,但私网 IP 无法直接访问互联网,需要 NAT 进行地址转换。

NAT 类型转换对象应用场景方向
SNAT(源NAT)源IP:私网→公网内网PC访问互联网出方向
DNAT(目的NAT)目的IP:公网→私网外网访问内网服务器入方向
# === SNAT: 内网PC上网(Easy IP方式) ===
[AR2220] acl 2000
[AR2220-acl-basic-2000] rule permit source 192.168.10.0 0.0.0.255
[AR2220] interface GigabitEthernet 0/0/1
[AR2220-GE0/0/1] nat outbound 2000  # 匹配ACL的流量做Easy IP

# === DNAT: 外网访问内网Web服务器 ===
[AR2220-GE0/0/1] nat server protocol tcp global 200.1.1.1 80 inside 192.168.10.100 80
💡
Easy IP:最简单的 SNAT 方式——直接用接口公网 IP 做转换,无需额外地址池。适合只有一个公网 IP 的场景。

六、NAT 验证

# 内网PC ping 互联网(SNAT验证)
PC1> ping 8.8.8.8
Reply from 8.8.8.8: bytes=32 time=5ms  ✅ 通

# 路由器查看NAT转换表
[AR2220] display nat session
  ICMP  VPN:public --> public
    192.168.10.11:1024 --> 200.1.1.1:1024 --> 8.8.8.8:0
    ✅ 源IP已从192.168.10.11转为200.1.1.1

# 外网访问内网Web(DNAT验证)
外网PC> curl http://200.1.1.1
✅ 返回内网Web服务器页面

# 查看服务器映射表
[AR2220] display nat server
  Server: 200.1.1.1:80 → 192.168.10.100:80  (TCP)
  ✅ 目的IP已从200.1.1.1转为192.168.10.100

七、排错思路

  1. 终端获取不到 IP? 检查 DHCP 是否 enable、接口是否 dhcp select global、地址池 network 网段是否与接口网段一致。
  2. 获取到 IP 但无法上网? 检查网关地址是否正确分配、路由器接口是否配置 NAT、ACL 是否匹配内网网段。
  3. SNAT 后上网不通? 确认 NAT 配置在公网侧接口(出接口),ACL 的 source 匹配内网网段。
  4. DNAT 访问不了? 检查 nat server 命令的公网/私网 IP 和端口、内网服务器网关是否指向路由器。
  5. 地址池耗尽? display ip pool 查看 IP-in-use,排查是否有终端长期占用未释放,调整 excluded-ip 范围或缩短租约。
⚠️
DHCP 与 NAT 的配合:DHCP 分配的网关必须指向 NAT 设备的内网接口 IP,否则终端的流量无法到达 NAT 设备进行地址转换。两者是协作关系,不是替代关系。

八、小结

  • DHCP 通过 DORA 四步流程自动分配 IP/网关/DNS,免去手动配置
  • 排除地址保留固定 IP 给服务器,避免 IP 冲突
  • SNAT 解决"内网访问外网"——Easy IP 最简单,直接用接口公网 IP
  • DNAT 解决"外网访问内网"——nat server 映射公网端口到内网服务器
  • DHCP 分配的网关必须指向 NAT 设备,两者协作才能实现端到端通信