引言:DHCP服务器在企业网络应用中发挥着举足轻重的作用,是用户正常接入网络的重要条件,如何对其进行有效保障是每个网络管理人员应该重视的问题。本文结合某单位实际网络架构,打造了一套异地DHCP同步系统,实现了良好的投入产出比,供各位同行参考。
某单位属于A和B两地办公,其中数据中心建立在A地,所有业务系统均部署在A地的数据中心,Internet线路出口也部署在A地,A和B之间通过租用运营商的一条10Mbps的专线进行连接,B地的员工通过这条10M专线访问业务系统和Internet服务,整体的网络架构如下图1所示。
由于用户数量较多,为方便维护和管理,网络采用了DHCP的方式对内部用户主机进行IP地址分配;考虑到A和B两地专线带宽有限,为减少非业务流量对专线带宽的占用,在A和B两地各部署了一台DHCP服务器,供本地用户主机的IP地址分配,两台DHCP服务器均采用Windows server 2008R2自带的DHCP服务组件为用户提供服务,通过在两地的核心交换机上配置DHCP中继IP,使各个VLAN的用户均能获取到DHCP服务。半年前,由于部门业务整合,B地员工数量显著增多,专线的日常带宽使用率大幅增加,带宽的平均占用率达到70%以上,特别是两地召开视频会议时,专线利用率甚至达到90%以上,严重影响了B地用户的业务访问和上网体验。为彻底解决专线带宽的问题,单位租用了运营商的一条千兆裸光缆,取代了这条10M专线,这样就彻底消除了专线的带宽瓶颈问题,B地用户的体验得到大幅提升,但是不久前发生的一起网络故障,引起了网络管理人员的重视:某天早上8:00,A地的DHCP服务器的硬盘突然故障,无法启动,导致A地用户主机无法联网;而恰好库房里没有该型号的硬盘可以更换,供货商也需要两个小时才能送货到现场。由于DHCP服务器平时并没有进行备份,网络管理人员只能在匆忙中找一台PC服务器重新进行手动配置,一直等到1个多小时后,网络才基本恢复正常,但是很多的保留地址(如网络打印机IP)仍然无法恢复,需要逐个重新核实绑定,这样又耗费了1个小时,网络才全部恢复正常。
图1 某单位网络架构图
发生该起故障后,网络管理人员做了深刻的反思,出现此次网络故障的表面原因是DHCP服务器硬件故障,根本原因还是DHCP服务器没有备机,但是如果有备机,备机的状态与主服务器状态不能保持同步,那么在故障发生时,备机将无法有效顶替主服务器,进而造成应急响应失败,无法达到理想的灾备效果。所以下一步改进的主要工作就是建立A和B两地DHCP服务器的同步备机,保证主备服务器数据的一致性,消除两地DHCP服务器的单点故障问题,主要有以下两种解决方案:
1.为A和B两地的DHCP服务器各自建立一台备机,然后编写配置同步脚本,定期对主备服务器进行配置自动同步,保证每一台主服务器均配备一台配置定期同步的备机;如果A或B主服务器发生故障,通过修改用户各个VLAN的DHCP中继地址,可将服务切换到相应的备用服务器上,网络即可恢复。
2.A和B两地的DHCP服务器互为备机,通过配置同步脚本进行同步,将各自的DHCP作用域配置同步到另一台服务器上,使A和B两地DHCP服务器配置一致;正常情况下,A地DHCP服务器只负责A地用户的IP地址分配,B地的DHCP服务器也只负责B地用户的IP地址分配;如果任意一台服务器故障,均可通过修改对应VLAN的DHCP中继地址将故障服务器的用户切换到另外一台服务器上。
方案一属于比较常规的备机方案,实施起来相对简单,但是需要额外投资两台DHCP备机,费用较高,不适合IT投资预算紧张的企业;方案二不需要新增任何服务器,只需要在现有的两台DHCP服务器上做相应的调整,不涉及到任何投资费用问题,而且由于两台DHCP服务器身处异地,这种方案还能够起到异地灾备的效果,与方案一相比,唯一的缺点在于出现故障时将所有用户切换到同一台DHCP服务器后,A和B两地专线的带宽使用将会有所增加,特别是工作日早晨,大量用户主机会在同一时间段向异地DHCP服务器发送request请求,专线带宽会承受较高压力;不过A和B两地专线已经升级为千兆裸光缆,带宽瓶颈问题已经得到彻底解决,所以在实际环境中,带宽问题完全可以忽略。综合上述分析,方案二比方案一更适合单位的实际情况,故采取方案二进行实施。
由于A和B两地的DHCP服务器上仅有各自本地的作用域信息,所以要按照方案二的方式将二者改造成互为备份的关系,首先就需要将各自的作用域同步到对方的配置数据库中,这就需要将配置先导出,然后再导入到另一台DHCP服务器上,具体方法如下(DHCP_A代表A地DHCP服务器,DHCP_B代表B地DHCP服务器):
1.将DHCP_B上的作用域配置利用netsh命令导出来,然后将配置文件远程拷贝到DHCP_A对应的目录下,具体命令如下:
Netsh dhcp server export desB SListB //导出DHCP_B上的作用域配置信息,其中desB为DHCP_B上配置文件的存放位置,SListB为DHCP_B上作用域列表
Copy desB \DHCP_A_IPdesA //将导出的配置文件远程拷贝到DHCP_A对应的目录下,其中DHCP_A_IP为DHCP_A服务器IP,desA为DHCP_A上配置文件的存放位置
将上述两条命令写入BAT脚本文件,命名为export-dhcp-B.bat。
2.将DHCP_A上的作用域配置利用netsh命令导出来,然后将配置文件远程拷贝到DHCP_B对应的目录下,具体命令如下:
Netsh dhcp server export desA SListA //导出DHCP_A上的作用域配置信息,SListA为DHCP_A作用域列表
Copy desA \DHCP_B_IPdesB //将导出的配置文件远程拷贝到DHCP_B对应的目录下,其中DHCP_B_IP为DHCP_B服务器IP
将上述两条命令写入BAT脚本文件,命名为export-dhcp-A.bat。
3.将导出的DHCP_A的作用域配置导入DHCP_B。由于利用netsh命令导入配置时,目的配置数据库中不能存在与源配置文件中同名的作用域名称,否则就会报错并中止操作,所以导入配置前,需要将目的配置数据库中可能存在的同名作用域删除,具体命令如下:
Netsh dhcp server delete scope scope1 dhcpfullforce //强行删除DHCP_B上与DHCP_A重复的作用域scope1,如果重复作用域有多个,则重复使用该命令进行删除
Netsh dhcp server import A_file //将步骤2中备份下的DHCP_A作用域配置导入DHCP_B中,其中A_file为DHCP_A的作用域配置文件
将这些命令写入BAT脚本文件,命名为importdhcp-B.bat。
4.将导出的DHCP_B的作用域配置导入DHCP_A,导入之前同样需要先将DHCP_A上可能与DHCP_B上重复的作用域删除,具体命令如下:
Netsh dhcp server delete scope scope1 dhcpfullforce //强行删除DHCP_A上与DHCP_B重复的作用域scope1,如果重复作用域有多个,则重复使用该命令进行删除
Netsh dhcp server import B_file //将步骤2中备份下的DHCP_B作用域配置导入DHCP_A中,其中B_file为DHCP_B的作用域配置文件
将这些命令写入BAT脚本文件,命名为importdhcp-A.bat。
上述四个脚本文件,实现了DHCP_A和DHCP_B的配置导入和导出功能,通过合理的调配,可以实现两地DHCP服务器的配置同步功能,打造出DHCP异地同步系统,实现两者互为备份的目标。可以利用Windows系统自带的“计划任务”功能对四个脚本文件进行调配,其 中export-dhcp-A.bat和export-dhcp-B.bat必须在另外两个脚本文件前面执行,而且由于在进行配置导入导出的过程中,DHCP服务会停止响应,所以必须在非工作时间进行任务调用,否则会影响用户正常使用网络。综上,网络管理人员制定的任务计划如下所示。
通过制定上述的的任务计划,每天晚上DHCP_A和DHCP_B会定时执行同步脚本程序,包括地址租约、保留地址、作用域配置等在内的所有DHCP配置数据库中的内容都会进行同步,保证了A和B两地的DHCP服务器互为备份的关系。一旦某台DHCP服务器发生故障,另外一台服务器即可随时接管,保证在最短时间内恢复网络的正常运转,比如DHCP_A发生故障,通过将A地核心交换机上各个用户VLAN的DHCP中继地址修改为DHCP_B的IP,即可恢复A地网络的正常运行,待DHCP_A故障修复后,再将对应的DHCP中继地址修改回来,即可将DHCP服务重新切换回DHCP_A上,修改A地核心交换机CoreA的命令如下:
上述命令中,XX代表用 户 VLAN,DHCP_A_IP代表DHCP_A的IP地址,DHCP_B_IP代表DHCP_B的IP地址;如果有多个用户VLAN,在VLAN接口配置模式下,重复输入上述命令即可。可以看出,主备DHCP服务器的切换操作非常简单,完全能够满足DHCP服务器故障应急响应的要求。
本文所提出的DHCP异地同步方案不需要进行任何费用投资,打破了冗余备份需要额外投资的传统,最大限度利用了现有服务器资源。改造完成后,A和B两地DHCP服务器真正达到了配置数据按日自动同步的目的,不需要人工干预,故障切换方法简单有效,避免了单点故障问题。
同时,这种解决方案的思路可以进行推广延伸,不局限于DHCP服务,其他各类服务器的配置同步、备份等操作均可参照实施。