一、DHCP中继的概念
在之前的博文《配置和管理DHCP服务器》中,介绍了DHCP客户端和DHCP服务器在同一个广播域中时,DHCP的工作机制。
事实上,如果DHCP客户端与DHCP服务器在同一个广播域,则客户端可以正确的获得动态分配的IP地址;然而,如果DHCP客户端与DHCP服务器不处于同一个广播域,那么DHCP客户端广播的DHCP Discover报文,会被网络中的三层设备丢弃,无法被DHCP服务器接收,此时,就需要DHCP中继代理(DHCP Relay Agent)。
DHCP中继可以实现在不同广播域(如子网、Vlan)之间处理和转发DHCP工作时的广播报文,使得DHCP客户端可以跨网段获取IP地址及相关参数。
二、DHCP中继的工作原理
有DHCP中继的场景中,DHCP中继在DHCP服务器和DHCP客户端之间转发DHCP报文,以保证DHCP服务器和DHCP客户端可以正常交互,下图示意了中继情形下,DHCP客户端与DHCP服务器的报文交互过程。
在有中继的情形下,DHCP客户端申请IP地址仍然分为四个阶段:发现、提供、请求和确认(否认)。只是客户端发送的报文会被同广播域内的DHCP中继收到,然后由DHCP中继将DHCP报文以单播的形式转发给服务器,同样,服务器响应的DHCP报文以单播形式发给DHCP中继,然后再由中继转发给客户端。
三、企业DHCP应用1:华为设备做DHCP Relay,CentOS做DHCP Server
3.1 案例描述
某公司DHCP服务器采用单作用域结构,为公司设备分配192.168.200.0/24网段的IP。由于公司规模扩大,在研发部基础上,新成立了市场部,公司设备数量增加,原来的DHCP服务器无法满足需求。因此公司网络管理员基于多作用域,重新架设DHCP服务器。
3.2 案例分析
根据需求,公司搭建网络拓扑如下:
1、使用Vlan规划网络,研发部客员工属于Vlan10,分配地址段为192.168.10.0/24,市场部员工属于Vlan20,分配地址段为192.168.20.0/24,公司服务器属于Vlan200,地址段为192.168.200.0/24。
2、DHCP服务器使用CentOS7搭建DHCP服务,服务器配置多作用域。使用华为AR系列路由器做DHCP中继,并负责路由和出口网关。
3、IP地址规划如下表:
设备 | 接口 | IP地址 | 网关 |
---|---|---|---|
DHCP服务器 | 网卡 | 192.168.200.100/24 | 192.168.200.254 |
DHCP中继 | 10号子接口 | 192.168.10.254/24 | - |
DHCP中继 | 20号子接口 | 192.168.20.254/24 | - |
DHCP中继 | 200号子接口 | 192.168.200.254/24 | - |
研发部客户端 | 网卡 | 192.168.10.0/24 | 192.168.10.254 |
市场部客户端 | 网卡 | 192.168.10.0/24 | 192.168.20.254 |
3.3 案例模拟环境
1、模拟拓扑
本案例使用VMware Workstation 15 pro和华为Ensp平台完成配置。拓扑如下图所示:
DHCP中继使用AR2220,接入交换机使用S3700,连接接口如图所示,特别是使用Ensp中的云连接WMware平台搭建的DHCP服务器。
2、VMware Workstation设置
本实验用的DHCP服务器网卡选择VMnet8,由于VMware Workstation的NAT网络默认开启了DHCP服务,为了防止影响实验,需要事先将其DHCP功能关闭,执行【编辑】菜单下的【虚拟网络编辑器】命令,设置子网IP为“192.168.200.0”,取消勾选“使用本地DHCP服务将IP地址分配给虚拟机”,如图所示。
实验中DHCP服务器的网卡IP地址为192.168.200.100/24,网关配置为192.168.200.254。关闭防火墙和SELinux,配置好YUM源。
[root@server ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
BOOTPROTO="static"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.200.100"
GATEWAY="192.168.200.254
PREFIX="24"
3、Ensp中云的设置
在Ensp中添加云,用于将Ensp中的交换机桥接到VMware 的VMnet8网卡。双击云图标,在下图所示的对话框中单击“增加”。
然后再绑定信息中选择VMnet8,单击“增加”,如下图:
最后在“端口映射设置”中将“入口编号”设置为1,“出口编号”设置为2,勾选“双向通道”,单击“增加”按钮。这步可以将VMware中的DHCP服务器加入到上面的Ensp拓扑中。
3.4 配置接入交换机
接入交换机主要是配置Vlan和端口,具体配置如下:
<Huawei>system-view
[Huawei]sysname Access
[Access]vlan batch 10 20 200 #创建Vlan 10 20 200
[Access]interface Ethernet 0/0/1 #配置E0/0/1为trunk端口
[Access-Ethernet0/0/1]port link-type trunk
[Access-Ethernet0/0/1]port trunk allow-pass vlan 10 20 200
[Access-Ethernet0/0/1]quit
[Access]interface Ethernet 0/0/2 #配置E0/0/2为access端口
[Access-Ethernet0/0/2]port link-type access
[Access-Ethernet0/0/2]port default vlan 10
[Access-Ethernet0/0/2]quit
[Access]interface Ethernet 0/0/3 #配置E0/0/3为access端口
[Access-Ethernet0/0/3]port link-type access
[Access-Ethernet0/0/3]port default vlan 20
[Access-Ethernet0/0/3]quit
[Access]interface Ethernet 0/0/4 #配置E0/0/4为access端口
[Access-Ethernet0/0/4]port link-type access
[Access-Ethernet0/0/4]port default vlan 200
[Access-Ethernet0/0/4]quit
[Access]quit
<Access>save
3.5 路由器(DHCP中继)配置
路由器启用DHCP,并配置单臂路由,G0/0/0的10号子接口和20号子接口配置DHCP中继。
<Huawei>system-view
[Huawei]sysname DHCP Relay
[DHCP Relay]dhcp enable
#配置10号子接口:单臂路由和DHCP中继
[DHCP Relay]interface GigabitEthernet 0/0/0.10
[DHCP Relay-GigabitEthernet0/0/0.10]ip address 192.168.10.254 24
[DHCP Relay-GigabitEthernet0/0/0.10]dot1q termination vid 10
[DHCP Relay-GigabitEthernet0/0/0.10]arp broadcast enable
[DHCP Relay-GigabitEthernet0/0/0.10]dhcp select relay
[DHCP Relay-GigabitEthernet0/0/0.10]dhcp relay server-ip 192.168.200.100
[DHCP Relay-GigabitEthernet0/0/0.10]quit
#配置20号子接口:单臂路由和DHCP中继
[DHCP Relay]interface GigabitEthernet 0/0/0.20
[DHCP Relay-GigabitEthernet0/0/0.20]ip address 192.168.20.254 24
[DHCP Relay-GigabitEthernet0/0/0.20]dot1q termination vid 20
[DHCP Relay-GigabitEthernet0/0/0.20]arp broadcast enable
[DHCP Relay-GigabitEthernet0/0/0.20]dhcp select relay
[DHCP Relay-GigabitEthernet0/0/0.20]dhcp relay server-ip 192.168.200.100
[DHCP Relay-GigabitEthernet0/0/0.20]quit
#配置200号子接口:单臂路由
[DHCP Relay]interface GigabitEthernet 0/0/0.200
[DHCP Relay-GigabitEthernet0/0/0.200]ip address 192.168.200.254 24
[DHCP Relay-GigabitEthernet0/0/0.200]dot1q termination vid 200
[DHCP Relay-GigabitEthernet0/0/0.200]arp broadcast enable
[DHCP Relay-GigabitEthernet0/0/0.200]quit
[DHCP Relay]quit
<DHCP Relay>save
3.6 DHCP服务器配置
1、安装DHCP服务器
[root@server ~]# yum install dhcp -y
2、配置DHCP服务器
[root@server ~]# vim /etc/dhcp/dhcpd.conf
配置文件内容如下:
option domain-name "example.org";
option domain-name-servers 8.8.8.8;
default-lease-time 86400;
max-lease-time 86400;
log-facility local7;
subnet 192.168.200.0 netmask 255.255.255.0 {
}
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.168 192.168.10.238;
option routers 192.168.10.254;
}
subnet 192.168.20.0 netmask 255.255.255.0 {
range 192.168.20.168 192.168.20.238;
option routers 192.168.20.254;
}
3、重启DHCP服务
[root@server ~]# systemctl restart dhcpd
3.7 DHCP服务器上添加默认路由
因为DHCP服务器和研发部(Vlan10)、市场部(Vlan20)所处的Vlan不同,因此提供DHCP服务需要依赖于路由器的中继,这里要保证DHCP服务器与上面路由器的10号子接口和20号子接口能够单播通信,为此,添加一条默认路由。
[root@server ~]# ip route add default via 192.168.200.254
[root@server ~]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.200.254 0.0.0.0 UG 0 0 0 ens33
192.168.200.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
3.8 DHCP客户端设置并测试
将PC1和PC2的IP地址配置方式设置成DHCP。在研发部主机PC1上测试,结果如下图:
在市场部主机PC2上测试,结果如下图:
测试两台DHCP客户端的通信情况。
四、企业DHCP应用2:华为设备做DHCP Server,CentOS做DHCP Relay
4.1 案例描述
说明:本案例只为模拟如何使用CentOS做DHCP中继,实际网络很少这么设计。
某公司使用三层交换机做DHCP服务器,为公司研发部和市场部分配IP地址,由于公司使用Vlan规划网络,研发部和市场部属于不同的Vlan。为此,使用了CentOS服务器做DHCP中继,网络拓扑如下图所示:
4.2案例模拟环境说明
1、研发部和市场部分别位于Vlan10和Vlan20,地址段分别为192.168.10.0/24和192.168.20.0/24;
2、DHCP Server做DHCP服务器,桥接CentOS服务器的VMnet8网卡;
3、DHCP Relay1做用户接入和DHCP中继,桥接CentOS服务器的VMnet1网卡;
4、CentOS服务器做DHCP中继(这个实验用了两个中继);
5、VMnet1地址段为192.168.100.0/24,VMnet8地址段为192.168.200.0/24;
6、IP地址规划如下表:
设备 | 接口 | IP地址 | 网关 | 备注 |
---|---|---|---|---|
DHCP Server | Vlanif 200 | 192.168.200.254/24 | - | 服务器 |
DHCP中继-CentOS | VMnet1网卡(ens37) | 192.168.100.100/24 | - | 中继代理 |
DHCP中继-CentOS | VMnet8网卡(ens33) | 192.168.200.100/24 | - | |
DHCP中继-交换机 | Vlanif 100 | 192.168.100.254/24 | - | 中继代理 |
DHCP中继-交换机 | Vlanif 10 | 192.168.10.254/24 | ||
DHCP中继-交换机 | Vlanif 20 | 192.168.20.254/24 | ||
研发部客户端 | 网卡 | 192.168.10.0/24 | 192.168.10.254 | |
市场部客户端 | 网卡 | 192.168.10.0/24 | 192.168.20.254 |
4.3 配置接入交换机DHCP Relay1
#
sysname DHCP Relay1
#
vlan batch 10 20 100
#
dhcp enable
#
interface Vlanif10
ip address 192.168.10.254 255.255.255.0
dhcp select relay
dhcp relay server-ip 192.168.100.100
#
interface Vlanif20
ip address 192.168.20.254 255.255.255.0
dhcp select relay
dhcp relay server-ip 192.168.100.100
#
interface Vlanif100
ip address 192.168.100.254 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type access
port default vlan 100
#
interface GigabitEthernet0/0/2
port link-type access
port default vlan 10
#
interface GigabitEthernet0/0/3
port link-type access
port default vlan 20
#
ip route-static 0.0.0.0 0.0.0.0 192.168.100.100
4.4 配置DHCP服务器DHCP Server
#
sysname DHCP Server
#
vlan batch 200
#
dhcp enable
#
ip pool scb
gateway-list 192.168.20.254
network 192.168.20.0 mask 255.255.255.0
dns-list 8.8.8.8
#
ip pool yfb
gateway-list 192.168.10.254
network 192.168.10.0 mask 255.255.255.0
dns-list 8.8.8.8
#
interface Vlanif200
ip address 192.168.200.254 255.255.255.0
dhcp select global
#
interface GigabitEthernet0/0/1
port link-type access
port default vlan 200
#
ip route-static 0.0.0.0 0.0.0.0 192.168.200.100
4.5 配置CentOS中继服务器路由转发
1、添加路由
[root@server ~]# ip route add 192.168.10.0/24 via 192.168.100.254
[root@server ~]# ip route add 192.168.20.0/24 via 192.168.100.254
[root@server ~]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.10.0 192.168.100.254 255.255.255.0 UG 0 0 0 ens37
192.168.20.0 192.168.100.254 255.255.255.0 UG 0 0 0 ens37
192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 ens37
192.168.200.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
2、启用IPv4路由转发
[root@server ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
[root@server ~]# sysctl -p
net.ipv4.ip_forward = 1
4.6 配置DHCP中继代理
1、安装DHCP服务器
[root@server ~]# yum install dhcp -y
2、配置中继代理
[root@server ~]# cp /lib/systemd/system/dhcrelay.service /etc/systemd/system [root@server ~]# vim /etc/systemd/system/dhcrelay.service
修改如下
[Unit]
Description=DHCP Relay Agent Daemon
Documentation=man:dhcrelay(8)
Wants=network-online.target
After=network-online.target
[Service]
Type=notify
ExecStart=/usr/sbin/dhcrelay -d --no-pid 192.168.200.100 #只修改了这一行
[Install]
WantedBy=multi-user.target
重载配置信息
[root@server ~]# systemctl --system daemon-reload
3、重新启动DHCP中继服务
[root@server ~]# systemctl restart dhcrelay.service
[root@server ~]# systemctl enable dhcrelay.service
4.7 配置客户端
将PC1和PC2的IP地址配置方式设置成DHCP。在研发部主机PC1上测试,结果如下图:
在市场部主机PC2上测试,结果如下图:
测试两台DHCP客户端的通信情况。
五、总结
在做DHCP中继过程中,为保证DHCP中继代理和DHCP服务器之间能够正常单播通信,不论在什么设备上配置,都要配置好路由。