2501 字
13 分钟
网络学习(六):DHCP 自动获取地址,再读懂路由表

1. 不手填 IP,主机怎样接入网络#

上一篇已经整理了设备视图、接口配置和保存方法。这一篇以第九天笔记为主,继续把 DHCP 与路由串起来。

手动给两台主机填地址并不麻烦,但数量一多,就容易出现重复地址、掩码填错、网关忘填等问题。

DHCP 可以统一提供 IP 地址、子网掩码、默认网关、DNS 服务器等参数。但自动获得地址,只是接入过程的一部分:后续能否跨网段通信,还要看路由和服务状态。

2. 第一次获取地址:DORA 四个阶段#

DHCPv4 使用 UDP,服务器端口为 67,客户端端口为 68。以下描述客户端与服务器位于同一广播域、没有中继的普通初始分配过程。

客户端 DHCP 服务器
│── Discover:寻找服务器 ───────────>│
│<─ Offer:提供候选配置 ─────────────│
│── Request:选择一个方案 ──────────>│
│<─ ACK:确认租约与配置 ─────────────│

四个名字的首字母构成 DORA。

2.1 Discover:还没有地址,先广播#

应用层:DHCP Discover
UDP: 源端口 68 → 目的端口 67
IPv4: 0.0.0.0 → 255.255.255.255
以太网:客户端 MAC → FF:FF:FF:FF:FF:FF

客户端没有可用地址,也不知道服务器在哪里,所以可以先在本地广播域中寻找。

2.2 Offer:服务器提供一个候选方案#

服务器返回候选 IP、租期以及其他配置。Offer 并不代表客户端已经完成了租约确认。

回复可能是广播,也可能根据客户端状态和标志使用单播。笔记中“目的 IP 是准备分配的地址”描述的是特定单播情形,不能套到所有 Offer。

2.3 Request:告诉大家选择了谁#

初始选择阶段,客户端通常广播 DHCP Request,携带所选服务器标识及请求地址。这样其他提供过 Offer 的服务器也能知道这次没有被选择。

2.4 ACK:确认之后再应用配置#

服务器通过 ACK 确认租约和参数,客户端再完成必要的地址检查并使用配置。如果发现地址冲突,客户端还可以发送 DHCP Decline,重新开始获取过程。

DHCP 的广播、单播选择与状态有关,进一步细节见 RFC 2131。

3. 地址有租期,但租期不固定为 24 小时#

课堂使用 24 小时举例,这不是 DHCP 协议统一规定的租期。

在服务器没有另行指定续约和重绑定时间时,常用默认比例是:

时点默认位置以 24 小时租期为例主要行为
T1租期的 50%12 小时向原服务器单播请求续约
T2租期的 87.5%21 小时未续约成功时广播请求重绑定
到期租期结束24 小时若仍未获得有效租约,停止使用该地址

如果在 T1 后成功续约,就按新确认的租期继续,不需要强行等到旧租期的 T2。

客户端重启后如果记得以前的地址,也可能先通过 DHCP Request 验证旧地址是否还能使用。这和首次获取、正常续租是不同状态,不能理解成“以后永远只发两个报文”。这些状态与计时规则见 RFC 2131 第 4.4 节。

4. 在 eNSP 中准备一个双网段练习#

下面给出根据课堂配置补齐的独立练习。R1 两侧都是普通三层以太网接口,交换机端口使用各自默认的同一 VLAN 即可,两侧交换机之间不另接链路。

PC A,自动获取地址
│
LSW1
│
R1 GE0/0/0:192.168.1.1/24
R1
R1 GE0/0/1:192.168.2.1/24
│
LSW2
│
PC B:192.168.2.10/24,网关 192.168.2.1

规划如下:

项目设置
DHCP 所在网段192.168.1.0/24
DHCP 客户端网关192.168.1.1
保留地址192.168.1.1~192.168.1.20
动态分配范围192.168.1.21~192.168.1.254
DNS 参数示例114.114.114.114、8.8.8.8
租期明确配置为 1 天

DNS 地址沿用课堂示例,演示 DHCP 如何下发参数。这个封闭拓扑没有配置互联网出口,所以即便 PC 收到了这些 DNS 地址,也不代表能访问它们或解析公网域名。

5. 全局地址池配置:创建后还要让接口使用它#

从 R1 用户视图开始:

R1:接口与 DHCP 全局地址池
system-view
sysname R1
dhcp enable
interface GigabitEthernet 0/0/0
ip address 192.168.1.1 255.255.255.0
undo shutdown
quit
interface GigabitEthernet 0/0/1
ip address 192.168.2.1 255.255.255.0
undo shutdown
quit
ip pool LAN1
network 192.168.1.0 mask 255.255.255.0
gateway-list 192.168.1.1
excluded-ip-address 192.168.1.2 192.168.1.20
dns-list 114.114.114.114 8.8.8.8
lease day 1 hour 0 minute 0
quit
interface GigabitEthernet 0/0/0
dhcp select global
quit
return

gateway-list 指定的网关地址不参与普通动态分配,因此额外排除从 .2 开始;.0 与 .255 本身分别是这个子网的网络地址和广播地址。

这几组命令的职责要分开:

  • dhcp enable:全局启用 DHCP 功能。
  • ip pool LAN1:创建并进入全局地址池。
  • network、gateway-list、dns-list:描述要提供的参数。
  • excluded-ip-address:为固定地址设备保留空间。
  • dhcp select global:让当前接口使用全局地址池方式提供服务。

尤其是最后一步:只创建地址池,不代表接入接口已经开始给客户端分配地址。 命令组织与全局地址池验证方式可参照华为 AR 的 DHCP Server 配置示例。

6. 验证时先看分配,再看通信#

把 PC A 改为通过 DHCP 获取地址。若没有立即发起请求,可使用模拟终端提供的重新获取功能;Windows 客户端则可以使用 ipconfig /renew。

在 R1 上检查:

display ip interface brief
display ip pool name LAN1
display arp
display ip routing-table

预期应该检查到:

  1. 两个接口都是 up/up。
  2. PC A 获得 .21~.254 中未被占用的地址,不要求每次都一定拿到 .21。
  3. PC A 掩码为 /24,网关为 192.168.1.1,DNS 参数与池中配置一致。
  4. 地址池中能看到相应的地址使用情况。

然后分两步测试:

ping 192.168.1.1
ping 192.168.2.10

第一步检查到本地网关的通信,第二步再验证跨网段路径。PC B 必须配置正确的网关,否则请求可能到达,回复却回不来。

实验完成后,在 R1 用户视图执行 save,按提示保存配置。

7. 路由表中的 Direct 从哪里来#

查看:

display ip routing-table

如果两个三层接口已经配置地址并正常工作,预期会有以下两个网段的直连路由。这里仅列关键字段,实际输出还可能包含本机地址等 /32 条目。

Destination/MaskProto对应出接口
192.168.1.0/24DirectGigabitEthernet0/0/0
192.168.2.0/24DirectGigabitEthernet0/0/1

Direct 表示直连。对于这个拓扑,R1 已经直接连接两侧网络,不需要额外配置静态路由才能在两侧转发。

常见字段可以这样看:

字段含义
Destination/Mask这条路由覆盖哪些目的地址
Proto路由来源,例如 Direct、Static 或动态路由协议
Pre路由优先级,参与路由选择
Cost相应路由协议使用的度量值
NextHop下一跳信息,直连条目的显示方式有其自身含义
Interface发出数据的接口

对远端网段,下一跳常是相邻路由器的接口地址。但不能把所有 NextHop 都解释成“另一台路由器”:直连路由没有必要先交给第二台路由器,设备输出也可能显示本地接口地址。

8. 转发先找最具体的匹配#

假设某台设备已经安装以下路由:

192.168.0.0/16 → 方向 A
192.168.2.0/24 → 方向 B
0.0.0.0/0 → 默认出口

访问 192.168.2.10 时,三条都能覆盖,但 /24 最具体,应选择方向 B,这叫最长前缀匹配。

只有没有更具体的匹配时,默认路由才发挥作用。没有任何匹配路由,也没有默认路由时,就不能继续按普通 IP 路由转发。

还要区分两件事:对相同前缀的候选路由,协议与优先级等因素参与决定安装哪些路由;对已经用于转发的不同长度前缀,查找目的地时使用最长匹配。

NOTE

有匹配路由不等于一定转发成功。出口状态、ARP 解析、TTL、MTU、ACL 等仍可能影响结果。因此,笔记里的“有路由就无条件转发”应理解为入门流程的简化描述。

9. DHCP 成功与路由成功,分别说明什么#

PC A 访问 PC B 时,可以沿着完整路径检查:

DHCP 给 A 提供地址、掩码和网关
↓
A 判断 B 不在本地网段
↓
A 通过 ARP 获取 192.168.1.1 的 MAC
↓
R1 查目的地址 192.168.2.10,匹配右侧直连路由
↓
R1 通过 ARP 找到 B,重新封装以太网帧
↓
B 用自己的网关把回复送回 A 所在网段

如果 DHCP 服务器在另一个广播域,普通路由器不会自动转发 Discover 广播,通常需要配置 DHCP Relay。这个练习中 R1 自己就是本地服务器,所以不需要中继。

排查时可按下面的现象缩小范围:

现象检查方向
一直拿不到地址链路与 VLAN、DHCP 开关、地址池、接口选择、地址是否耗尽
地址正确,但网关错误地址池 gateway-list、是否存在其他 DHCP 服务器
能 Ping 网关,不能 Ping 另一侧两侧接口、目标主机配置、回程网关和访问限制
能访问 IP,不能解析域名DNS 参数、到 DNS 的路由、DNS 服务本身

至此,九天笔记中最主要的概念已经连在了一起:二层交付依靠 MAC,IPv4 用前缀确定网络范围,传输层把数据交给应用端点,DHCP 提供接入参数,路由器负责跨网段转发。

10. 系列阅读顺序#

网络学习(六):DHCP 自动获取地址,再读懂路由表
https://bbcslook.top/posts/guide/hcia-06-dhcp-routing/
作者
BBCSLOOK
发布于
2026-10-16
许可协议
CC BY-NC-SA 4.0

评论区

CC