摘 要:针对中、大型以太网络中因网络划分而带来的DHCP广播无法到达的问题,文中规划设计了一种基于eNSP的DHCP中继代理的实施方案。首先分析了DHCP服务应用场景及其面临的问题,然后对DHCP中继的实现原理进行了分析,最后在eNSP模拟软件中设计了一个生产生活中常见的网络应用拓扑进行实施应用,测试结果表明,该设计方案完全达到了预期目标。
关键词:eNSP;DHCP;中继代理
中图分类号:TP393 文献标识码:A 文章编号:2096-4706(2021)06-0073-04
Principle Analysis and Application of DHCP Relay Agent Based on eNSP
ZHANG Qingtao
(Hebei Petroleum University of Technology,Chengde 067000,China)
Abstract:Aimming at the problem that the DHCP broadcasting cant reach because of the network division in the medium and large Ethernet,in this paper,an implementation scheme of DHCP relay agent based on eNSP is designed. Firstly,it analyzes the application scenarios of DHCP service and the problems it faces,then analyzes the implementation principle of DHCP relay,and finally designs a common network application topology in production and life by eNSP simulation software for application. The test results show that the design scheme fully achieves the expected goal.
Keywords:eNSP;DHCP;relay agent
0 引 言
笔者所在单位中大量的终端设备(计算机、移动智能终端等)需要从网络中自动获取IP地址,以连接办公网络和互联网。但这些终端又被分散在校园网不同的子网络中,简单的DHCP模型并不能跨子网分配IP地址,如何为这些跨子网终端自动分配IP地址成了迫切需要解决的问题。
DHCP是动态主机配置协议的缩写,DHCP服务用以为终端设备自动分配IP地址和其他网络参数,可以简化企业组网的配置流程,减轻网络管理员的工作负担,降低终端用户接入企业网络的配置难度。DHCP服务在工作时的数据包多为广播数据,尤其是在终端或网络刚刚启动时更是如此。在同一个广播域内,利用广播报文DHCP客户端可以方便地找到DHCP服务器,并获得为其分配的网络参数。
然而,在多IP子网的大、中型企业网络中,为了抑制广播风暴限制广播流量对网络带来的负面影响,需要对网络进行逻辑或物理子网划分,常用的做法是利用三层设备对广播域进行隔离。但这在提高网络安全性和可靠性的同时,也阻隔了所有的广播数据流量,影响了DHCP服务的正常工作,而在连接多个子网的三层设备上开启DHCP中继代理服务则可以很好地解决这个问题。
1 DHCP中继原理
中继代理在网络拓扑结构中位于DHCP客户端和DHCP服务器之间,是DHCP握手报文的中转站。当DHCP中继代理收到DHCP客户端發来的广播报文后,将其转换为单播报文并通过IP网络转发给DHCP服务器;当DHCP中继代理收到DHCP服务器返回的单播报文后,再反向转换成广播报文发送给DHCP客户端;经过DHCP中继代理的中转后,DHCP广播报文就可以穿过三层设备到达另一个子网,其工作原理如图1所示。
2 DHCP中继代理的实施与应用
DHCP中继代理在企业中有着广泛的应用,DHCP中继代理服务器往往处于两个或多个不同的子网之间。下面设计一个日常中企业应用较多的DHCP中继代理组网拓扑。
2.1 DHCP中继代理组网方案
多数路由器和三层交换机都支持DHCP中继代理功能,如图2所示的拓扑图是DHCP中继代理的典型组网方案。
在组网方案中,DHCP中继代理被部署在连接192.168.1.0/ 24、172.21.16.0/24和10.10.0/24这3个子网络的路由器上。需要进行DHCP转发的是G0/0/0和G0/0/2端口。这里DHCP服务器被架设在路由器上,服务端口是G0/0/0。
在上述拓扑中,DHCP中继代理和DHCP服务器是直接相连的,然而在大型拓扑中,它们中间往往还间隔着多台路由设备,但是这并不妨碍DHCP中继代理的正常工作。因为经过DHCP中继代理的DHCP广播报文已经被转换成了普通单播报文,故只要链路中路由器的路由选择策略正确,被转换的DHCP报文依然可以正常往返于DHCP客户端和DHCP服务器之间。
2.2 DHCP中继代理配置实施
配置DHCP中继代理路由器上G0/0/0、G0/0/1和G0/0/2接口的IP地址。
从系统视图进入接口视图,以便对接口进行进一步的配置,例如IP地址、子网掩码等。按照规划,G0/0/0接口连接192.168.1.0/24网络,G0/0/2接口连接172.21.16.0/24网络,G0/0/1接口连接DHCP服务器可以使用命令:
[dhcp-relay]interface g0/0/0
[dhcp-relay-GigabitEthernet0/0/0]ip address 192.168.1.1 24
[dhcp-relay-GigabitEthernet0/0/0]interface g0/0/1
[dhcp-relay-GigabitEthernet0/0/1]ip address 10.10.0.1 24
[dhcp-relay-GigabitEthernet0/0/1]interface g0/0/2
[dhcp-relay-GigabitEthernet0/0/2]ip address 172.21.16.1 24
必须启用路由器的DHCP服务后才能启用端口的中继转发功能可以使用命令:
[dhcp-relay]dhcp enable
在G0/0/0端口上启用DHCP中继转发功能,启用后该端口如果收到了客户端广播的DHCP请求报文,将会接收并转换为指向DHCP服务器的单播报文进行三层转发。默认情况下,未进行特殊配置的三层接口会直接抛弃收到的广播报文可以使用命令:
[dhcp-relay]int g0/0/0
[dhcp-relay-GigabitEthernet0/0/0]dhcp select relay
指定DHCP服务器IP地址,当该端口收到DHCP广播数据包时将转发到该IP可以使用命令:
[dhcp-relay-GigabitEthernet0/0/0]dhcp relay server-ip 10.10.0.2
在G0/0/2端口上启用DHCP中继服务并指定DHCP服务器地址可以使用命令:
[dhcp-relay]int g0/0/2
[dhcp-relay-GigabitEthernet0/0/2]dhcp select relay
[dhcp-relay-GigabitEthernet0/0/2]dhcp relay server-ip 10.10.0.2
2.3 DHCP服务器配置
这里DHCP服务器使用的是eNSP中的一台路由器,对应的服务端口号是G0/0/0。在路由器等三层设备中,采用了一种被称作地址池(pool)的对象来定义DHCP服务可以使用的IP地址段,一般一个地址段是一个子网络。在地址池中还可以定义默认网关、DNS地址等可选参数。这些参数将随IP地址和子网掩码一同分配给DHCP客户端。
地址池分为接口地址池和全局地址池两种。接口地址池不需要专门定义,只要在相应的接口配置视图下,配置完IP地址后,使用命令“dhcp select interface”启用即可。接口地址池配置相对比较简单,但也存在一定弊端,例如不能为多个子网客户端分配IP地址,当接口IP地址修改后,接口地址池会被自动清除而不是跟随变化。
全局地址池需要使用“ip pool<地址池名>”命令专门定义,可以多地址池并存。接口如果要使用全局地址池可以使用命令“dhcp select global”启用,端口收到dhcp请求后,会自动判断客户端所在子网络所属网段,然后选择与之匹配的全局地址池中空闲IP地址进行选择分配。
跨网段分配IP地址不能使用接口地址池,因此这里的DHCP服务器使用全局地址池。
启用dhcp服务并配置全局地址池pool-1可以使用命令:
[dhcp-server]dhcp enable
创建pool-1地址池可以使用命令:
[dhcp-server]ip pool pool-1
配置pool-1所属网络号和子网掩码可以使用命令:
[dhcp-server-ip-pool-pool-1]network 192.168.1.0 mask 24
配置默認网关可以使用命令:
[dhcp-server-ip-pool-pool-1]gateway-list 192.168.1.1
配置全局地址池pool-2可以使用命令:
[dhcp-server]ip pool pool-2
[dhcp-server-ip-pool-pool-2]network 172.21.16.0 mask 24
[dhcp-server-ip-pool-pool-2]gateway-list 172.21.16.1
配置G0/0/0 的IP地址为10.10.0.2/24,并启用全局地址池可以使用命令:
[dhcp-server-GigabitEthernet0/0/0]ip address 10.10.0.2 24
[dhcp-server-GigabitEthernet0/0/0]dhcp select global
添加到192.168.1.0/24网络的静态路由可以使用命令:
[dhcp-server]ip route-static 192.168.1.0 24 10.10.0.1
[dhcp-server]ip route-static 172.21.16.0 24 10.10.0.1
这两条静态路由的功能是使DHCP服务器返回的Offer和ACK数据包能够找到发送路径。否则客户端DHCP请求可以到达DHCP服务器,但是DHCP服务器无法向客户端做出回应。因为192.168.1.0/24网段和172.21.16.0/24网段并非DHCP服务器的直连网段,所以,对于这两个网段的路由在没有启用任何动态路由协议的情况下不能自动生成。
2.4 验证
通过eNSP的配套抓包工具Wireshark对DHCP服务器的端口进行抓包分析,如图3所示,可以看出DHCP服务的Discovery、Offer、Request和ACK四次握手全部成功完成。分别位于192.168.1.0/24网络和172.21.16.0/24网络的两台DHCP客户端都通过DHCP中继代理成功获取到了外网段DHCP服务器提供的IP地址。
查看DHCP服务器地址池使用情况,如图4所示。
图4 DHCP服务器地址池使用情况
图中的“used:2”说明全局地址池pool-1和pool-2总共有2个地址被分配出去。这与实验拓扑中DHCP客户端的数量吻合。
作为DHCP客户端的PC1已经通过DHCP中继从位于外网段的DHCP服务器处成功获取到了IP地址192.168. 1.254/24和默认网关192.168.1.1。如果查看其中一个客户端的IP地址,则结果如图5所示。
图5 客户端IP地址
2.5 故障排查
如果某些客户端无法获取到IP地址,应该从以下几方面着手排查故障:
(1)检查各端口IP地址配置是否正确;
(2)检查DHCP客户端的网络工作模式是否是自动获取IP地址,即“DHCP”模式;
(3)检查DHCP服务器中是否已经配置了相应的全局地址池,并且配置了正确的子网网段;
(4)检查DHCP服务器上是否配置了正确的静态路由或者启用了RIP、RIPv2、OSPF等动态路由协议。如果是使用动态路由协议,则在DHCP中继代理上也应启用相一致的动态路由协议;
(5)检查DHCP中继代理是否在相应的端口上启用了DHCP中继功能;
(6)检查DHCP中继代理是否指向了正确的DHCP服务器地址。
3 结 论
因为默认情况下DHCP广播无法穿透三層设备,所以实验环境下传统的部署方案通常把DHCP服务器部署在连接各子网的三层交换机上,使DHCP服务器和各子网都直接相连,这和现实生产环境存在较大差异。在中、大型企业的以太网络中,在各子网边界间的路由器或三层交换机上启用DHCP中继服务可以很好地解决三层设备隔离DHCP广播报文的问题。文中采用DHCP中继技术,成功利用一台DHCP服务器为多个IP子网中的DHCP客户端分配了IP地址,这台DHCP服务器可以方便地部署在企业网络的核心机房中,管理相对简便。文中在eNSP模拟环境下使用了一台路由器担任DHCP服务器角色,而在实际生产环境下应该使用更专业的DHCP服务器。
参考文献:
[1] 欧坤,陈玲.Intranet中DHCP服务应用与仿真实验设计 [J].河池学院学报,2018,38(5):72-80.
[2] 谢芳.DHCP技术在校园网络中的应用 [J].电子技术与软件工程,2021(9):9-10.
[3] 梁宾,宋蓓蓓.VLAN之间通信方案设计与仿真实验 [J].电子测试,2019(Z1):88-90.
[4] 边胜琴,王洪泊,崔晓龙.DHCP实验的设计与实现 [J].电子测试,2020(1):77-80.
[5] 惠震.基于DHCP协议的高校宿舍网络规划 [J].科教导刊(下旬),2017(5):22-23.
[6] 杨礼.基于eNSP的DHCP原理设计与分析 [J].新疆师范大学学报(自然科学版),2019,38(1):85-90.
[7] 周娟.基于eNSP的DHCP网络实验的设计与实施 [J].电脑知识与技术,2021,17(8):34-36+48.
[8] 辛伟伟,郝继升,张成.基于Wireshark的DHCP网络故障定位分析 [J].延安大学学报(自然科学版),2018,37(1):34-36.
作者简介:张清涛(1980.01—),男,汉族,河北邯郸人,讲师,硕士,研究方向:计算机网络技术和云计算技术。