■ 安徽工商职业学院 王春苗 刘玥
编者按:本文以企业内部网络的实际需求为出发点,以CentOS 8 虚拟机和华为eNSP 模拟器为系统和网络平台,复现实际的企业内网环境,详细讲解如何部署DHCP 故障转移双活架构DHCP failover peer,并进行故障转移测试和抓包分析。
在桌面云应用中,批量的虚拟机需要自动获取IP 参数,如果获取失败,则虚拟机无法注册到域控制器。在典型的公司企业网络中,办公电脑、移动终端、物联网设备等也需要从DHCP 服务器获取IP 参数,便于网络管理。
由此可见,DHCP 服务器在很多网络环境中是不可或缺的,但是它也存在单点故障的风险。而基于CentOS 8的DHCP failover peer 则是一种健壮稳定的DHCP 高可用解决方案,基本结构如图1 所示。
本文使用华为eNSP 模拟器构建交换网络环境;使用两台CentOS 8 虚拟机系统部署DHCP failover peer双活架构;分别使用一台CentOS 8 和一台Windows 7 虚拟机系统作为DHCP 客户端角色;最后再使用一台CentOS 8 作为网关角色(或使用eNSP 模拟器的路由设备)。
添加虚拟网络:通过 VMware Workstation 的虚拟网络编辑器添加4 个虚拟网络,分别为Vmnet1、Vmnet2、Vmnet3 和Vmnet4。为了能够和eNSP 模拟器实现桥接通信,需要启用主机虚拟适配器连接到4 个虚拟网络,且必须在4 个虚拟网络中禁用VMware Workstation 自带的DHCP 服务,如图2 所示。
图1 基本 DHCP failover peer 拓扑图
为各个虚拟机分配虚拟网络:两台DHCP 服务器自定义分配到Vmnet1 虚拟网络;CentOS 8 客户端自定义分配到Vmnet2 虚拟网络;Windows 7 客户端自定义分配到Vmnet3 虚拟网络;CentOS 8 网关的内网网卡自定义分配到Vmnet4 虚拟网络,外网网卡使用NAT 模式。
为了实现和Vmware 虚拟机的通信,需要在eNSP 模拟器中添加4 个Cloud 设备,分别绑定到Vmnet1~Vmnet4虚拟网络和增加UDP 端口,4 台Cloud 设备设置出入端口编号,启用双向通道,并增加端口映射;添加一台交换机设备,用于连接4 台Cloud设备。
在eNSP 模拟器中使用以太网链路互连交换机和所有Cloud 设备的相应接口,并启动交换机设备。
图2 虚拟网络规划设计
图3 网络拓扑连接
至此,用于复现实际企业公司内部网络的拓扑环境就已成功搭建完成,如图3 所示。
以华为S5700 交换机为例,结合网络拓扑和应用需求,具体配置如下:
(1)创建4 个VLAN 和添加以太网接口
(2)启用全局DHCP 功能
[S5700]dhcp enable
(3)VLAN 接口配置IP 参数、启用DHCP 中继和指定中继服务器地址
VLAN11 接口配置:两台DHCP 服务器属于VLAN11,所以VLAN11 虚拟接口无需启用DHCP 中继功能。
图4 网关内网接口配置
VLAN12 接口配置:CentOS 8 客户端属于VLAN12,所以VLAN12 虚拟接口需要启用DHCP 中继功能并指定两台DHCP 服务器地址。
VLAN13 接口配置:IP 地址为172.16.13.254/24,配置方法同VLAN12 接口,此处略;VLAN14 接口配置:IP 地址为172.16.14.254/24,接口无需启用DHCP 中继功能,配置方法同VLAN11 接口,此处略。
(4)交换机配置默认路由
本文中网关的主要功能是提供源NAT 技术,从而支持内网访问互联网,并且为两台DHCP 服务器配置使用网络yum 仓库源提供连网支持。
本文采用CentOS 8 虚拟机系统作为网关服务器,需要添加两块虚拟网络适配器,并配置内网接口IP 参数、外网接口IP 参数、启用路由转发、配置源NAT 功能、添加到内网各个网段的静态路由。
(1)配置内网和外网接口IP 参数
可以直接运行nmtui 命令,打开“网络管理文本用户接口”工具,利用该工具可以方便的配置IP 参数。
此处配置内网接口IP参数为172.16.14.253/24,配置外网接口通过VMware Workstation 的NAT 模式自带的DHCP 服务获取IP 参数,如图4 和图5 所示。
另外,选择图4 中的“Routing(No custom routes)
(2)启用路由转发
(3)配置firewalld 防火墙并启用源NAT
外网接口ens33 加入external 区域,该防火墙区域连接外网,默认情况下启用了伪装(masquerade)功能,即源NAT,凡是从该接口发出去的数据包,其源IP 地址都会转换为ens33 接口的IP 地址。
图5 网关外网接口配置
(4)添加到内网的静态路由和测试网络连通性
可以通过route 命令添加静态路由。由于最小化方式安装的CentOS 8 系统没有该命令,可以通过yum 方式安装包含该命令的软件包。
确保当前网关服务器能够连接互联网,从华为开源镜像站(https://mirrors.huaweicloud.com/)下载yu m 仓库源配置文件,从而使用华为开源镜像站作为yum 仓库源(也可以使用CentOS 8系统光盘作为仓库源):
清理yum 仓库缓存、重建缓存、查看yum 仓库状态:
通 过yum 安 装nettools 软件包:yum install-y net-tools
安装成功后,通过route命令添加静态路由:
注意,如果希望添加永久路由,则可以通过前面介绍的nmtui 工具配置。
对内网交换机VLAN 接口进行PING 测试:
(1)使用nmtui 工具配置接口IP 参数
(2)使用华为开源镜像站作为yum 仓库源和安装DHCP 服务软件包
Yum 仓库源配置及初始化如前面所述,此处略。
查询和安装DHCP 服务软件包:
(3)DHCP 服务器01 作为主服务器,配置DHCP 区域文件
添加内容如下,然后保存配置文件:
(4)启动dhcpd 服务和添加服务自启
(1)使用nmtui 工具配置接口IP 参数
(2)配置yum 仓库源和安装DHCP 服务软件包(同上)
(3)DHCP 服务器02 作为从服务器,从主服务器拷贝配置文件并进行修改
考虑到SELinux 和Fire walld 防火墙可能会影响DHCP 服务的正常工作,建议两台DHCP 服务器都修改SELinux 的默认模式以及禁用Firewalld 防火墙或设置防火墙放行策略。
DHCP failover peer 双活架构要求两台DHCP 服务器之间的时间误差较小,而在实际的应用中,随着两台服务器的长时间运行,它们之间的时间误差可能会越来越大,所以必须配置相应的时间自动同步策略。
CentOS 8 已经不支持旧版的ntpdate 命令,时间同步通过chrony 的程序来完成。
从显示的结果可以知道chrony 程序后台服务是:
当上述所有配置完成后,在两台DHCP 服务器上重启dhcpd 服务:
此时如果没有任何报错信息,说明服务启动成功,但是不代表两台dhcpd 服务状态同步正确,需要进一步查看服务状态信息:
如果两台DHCP 服务器显示的信息中,都包含“failover peer dhcp:Both servers normal”,则两台dhcpd 服务状态是同步和一致的。
另外,通过在Vmnet1 虚拟网络中抓包,可以发现两台DHCP 服务器之间会定期交换状态信息报文,用于一致性同步。
启动CentOS 8 客户端系统,通过nmtui 工具设置自动获取IP 参数,然后依次禁用网卡和启用网卡:ifdown ens33、ifup ens33
查看获取到的IP 参数:ip addr
分别在两台DHCP 服务器上再次查看服务状态:systemctl status dhcpd
两台服务器显示的结果包含了相同的地址租约信息:
通过类似的方法,测试Windows 7 客户端系统的地址获取情况,并且查看两台服务器的服务状态信息,依然显示相同的地址租约信息。
关闭任意一台DHCP 服务器,如“DHCP 服务器01”,然后查看“DHCP 服务器02”的服务状态信息,显示结果如下:
说明当前状态存活的“DHCP 服务器02”已经检测到伙伴服务器出现故障。
此时,重启两台客户端系统,并查看IP 参数获取情况,发现它们获取到的地址并没有发生改变,即“DHCP failover peer”中的一台服务器故障。
对于DHCP 客户端来说是透明无感知的,故障转移是完全自动进行的,且客户端重启后会继续原有的地址租约不会改变。再次启动“DHCP服务器01”,然后查看“DHCP服务器02”的服务状态信息,显示“failover peer dhcp:Both servers normal”,说明“DHCP failover peer”恢复到正常状态。