DHCP Relay 即 DHCP 中继,它是为解决 DHCP 服务器和 DHCP 客户端不在同一广播域而提出的,提供了对 DHCP 广播报文的中继转发功能,能够把 DHCP 客户端的广播报文 “透明地” 传送到其它广播域的 DHCP 服务器上,同时也能够把 DHCP 服务器端的应答报文 “透明地” 传送到其它广播域的 DHCP 客户端。

# 实验网络拓扑图

R1 为 DHCP 服务器,SW1 为三层交换机,SW2 和 SW3 为二层交换机。

# 实验组网

根据上述拓扑结构,配置 DHCP 中继的思路如下:
1、配置 IP 和路由,交换机 access 和 trunk 口
2、R1 开启 DHCP,配置全局地址池,接口使能 DHCP
3、SW1 配置 DHCP 中继

# 配置 IP 和路由

# R1 配置

<R1>sys
[R1] int GigabitEthernet 0/0/0
[R1-GigabitEthernet0/0/0] ip add 1.1.1.2 30
[R1-GigabitEthernet0/0/0] q
[R1] ip route-static 192.168.1.0 255.255.255.0 1.1.1.1
[R1] ip route-static 192.168.2.0 255.255.255.0 1.1.1.1

# SW1 配置

<SW1>sys	
[SW1] vlan batch 5 10 20
[SW1] int Vlanif 5
[SW1-Vlanif5] ip address 1.1.1.1 255.255.255.252
[SW1-Vlanif5] q
[SW1] int Vlanif 10
[SW1-Vlanif10] ip address 192.168.1.254 255.255.255.0
[SW1-Vlanif10] q
[SW1] int Vlanif 20
[SW1-Vlanif20] ip address 192.168.2.254 255.255.255.0
[SW1-Vlanif20] q
[SW1-GigabitEthernet0/0/1] port link-type trunk 	
[SW1-GigabitEthernet0/0/1] port trunk allow-pass vlan all 
[SW1-GigabitEthernet0/0/1] q
[SW1] int GigabitEthernet 0/0/2
[SW1-GigabitEthernet0/0/2] port link-type trunk 
[SW1-GigabitEthernet0/0/2] port trunk allow-pass vlan all 
[SW1-GigabitEthernet0/0/2] q
[SW1] int g0/0/3
[SW1-GigabitEthernet0/0/3] port link-type access 
[SW1-GigabitEthernet0/0/3] port default vlan 5

# SW2 配置

[SW2] vlan 10
[SW2-vlan10] int g 0/0/1
[SW2-GigabitEthernet0/0/1] port link-type access 
[SW2-GigabitEthernet0/0/1] port default vlan 10
[SW2-GigabitEthernet0/0/1] int g0/0/2
[SW2-GigabitEthernet0/0/2] port link-type access 
[SW2-GigabitEthernet0/0/2] port default vlan 10
[SW2-GigabitEthernet0/0/2] int g0/0/23
[SW2-GigabitEthernet0/0/3] port link-type trunk 
[SW2-GigabitEthernet0/0/3] port trunk allow-pass vlan all

# SW3 配置

[SW2] vlan 20
[SW2-vlan10] int g 0/0/1
[SW2-GigabitEthernet0/0/1] port link-type access 
[SW2-GigabitEthernet0/0/1] port default vlan 20
[SW2-GigabitEthernet0/0/1] int g0/0/2
[SW2-GigabitEthernet0/0/2] port link-type access 
[SW2-GigabitEthernet0/0/2] port default vlan 20
[SW2-GigabitEthernet0/0/2] int g0/0/23
[SW2-GigabitEthernet0/0/3] port link-type trunk 
[SW2-GigabitEthernet0/0/3] port trunk allow-pass vlan all

# 配置全局地址池

在 R1 上配置 vlan 10 和 vlan 20 的两个全局地址池

<R1>sys	
[R1] dhcp enable     // 开启 DHCP 功能
[R1] int g0/0/0
[R1-GigabitEthernet0/0/0] dhcp select global // 接口使能 DHCP
[R1-GigabitEthernet0/0/0] q
[R1] ip pool vlan10  // 创建地址池,命名为 vlan10
[R1-ip-pool-vlan10] network 192.168.1.0 mask 255.255.255.0   // 地址池范围
[R1-ip-pool-vlan10] gateway-list 192.168.1.254   // 网关地址
[R1-ip-pool-vlan10] dns-list 114.114.114.114     //DNS 地址
[R1-ip-pool-vlan10] lease day 2 hour 2 minute 0  // 租约时长
[R1-ip-pool-vlan10] ip pool vlan20
[R1-ip-pool-vlan20] network 192.168.2.0 mask 255.255.255.0
[R1-ip-pool-vlan20] gateway-list 192.168.2.254	
[R1-ip-pool-vlan20] dns-list 114.114.114.114
[R1-ip-pool-vlan20] lease day 2 hour 2 minute 0

# 开启 DHCP 中继

在 SW1 上开启 DHCP 中继功能,使用两种配置方法:

  • 在接口 vlan10 下直接指定 DHCP 服务器 IP 地址
  • 在接口 vlan20 下调用 DHCP 服务器组
[SW1] dhcp enable 
[SW1] int Vlanif 10
[SW1-Vlanif10] dhcp select relay 
[SW1-Vlanif10] dhcp relay server-ip 1.1.1.2
[SW1-Vlanif10]
[SW1] dhcp server group vlan20
[SW1-dhcp-server-group-vlan20] dhcp-server 1.1.1.2 0 // 索引号,0-19
[SW1-dhcp-server-group-vlan20] q
[SW1] int vlan	
[SW1] int Vlanif 20
[SW1-Vlanif20] dhcp select relay 	
[SW1-Vlanif20] dhcp relay server-select vlan20

# 实验验证

在 PC 上查看获取到的 DHCP 信息
R1 上查看 nat 会话表

<R1>dis ip pool 
  -----------------------------------------------------------------------
  Pool-name      : vlan10
  Pool-No        : 0
  Position       : Local           Status           : Unlocked
  Gateway-0      : 192.168.1.254   
  Mask           : 255.255.255.0
  VPN instance   : --
  -----------------------------------------------------------------------
  Pool-name      : vlan20
  Pool-No        : 1
  Position       : Local           Status           : Unlocked
  Gateway-0      : 192.168.2.254   
  Mask           : 255.255.255.0
  VPN instance   : --
  IP address Statistic
    Total       :506   
    Used        :4          Idle        :502   
    Expired     :2          Conflict    :0          Disable   :0

# F & Q

# 一、为什么二层交换机不配中继?

DHCP 客户端发送的 DHCP 请求是广播报文,这些广播报文只能在同一个广播域内传播,二层交换机 SW2 和 SW3 不需要配置 DHCP 中继,因为它们只需要在各自的 VLAN 内转发帧,而跨 VLAN 的 DHCP 请求转发由三层交换机 SW1 负责。SW1 配置了 DHCP 中继功能,可以正确地将 DHCP 请求从二层交换机上的客户端转发到 R1(DHCP 服务器),并处理服务器的响应。

# 二、DHCP 服务器怎么判断使用哪一个地址池?

当 DHCP 请求到达 R1 时,R1 会根据 DHCP 请求中的 GIADDR 字段来判断应该分配哪个地址池的 IP 地址:

  • DHCP 请求报文中的 GIADDR(Gateway IP Address)字段用于标识 DHCP 中继代理的 IP 地址。当 DHCP 客户端发送广播请求时,如果请求通过 DHCP 中继代理(如 SW1),中继代理会将自身的 IP 地址填入 GIADDR 字段。
  • R1 会查看 GIADDR 字段,以确定哪个子网的 DHCP 服务器应该响应这个请求。如果 GIADDR 是 VLAN 10 的 IP 地址,R1 会从地址池 1(192.168.1.0/24)分配 IP;如果 GIADDR 是 VLAN 20 的 IP 地址,R1 会从地址池 2(192.168.2.0/24)分配 IP。

假设 VLAN 10 的 IP 地址范围是 192.168.1.0/24,VLAN 20 的 IP 地址范围是 192.168.2.0/24。
当 SW1 作为 DHCP 中继代理接收到 VLAN 10 的 DHCP 请求时,它会将自身的 VLAN 10 接口的 IP 地址(例如 192.168.1.254)填入 GIADDR 字段,并将请求中继到 R1。
R1 接收到请求后,会查看 GIADDR 字段,发现是 192.168.1.254,于是知道这个请求来自 VLAN 10,从而从地址池 1(192.168.1.0/24)分配 IP 地址。
同理,当 SW1 接收到 VLAN 20 的 DHCP 请求时,它会将自身的 VLAN 20 接口的 IP 地址(例如 192.168.2.254)填入 GIADDR 字段,并将请求中继到 R1。R1 则会从地址池 2(192.168.2.0/24)分配 IP 地址。

更新于 阅读次数