最近遇到一个DHCP服务器升级的需求,从Windows升级到Windows Server 2012 R2。搜集、测试总结了两种方法,第一种是采用微软的最佳实践,使用Windows 迁移工具迁移DHCP角色到Windows上,第二种是使用Netsh将DHCP配置信息直接导出导入;
【正文】
微软最佳实践
安装前准备
- 在Windows服务器上安装如下PowerShell和.Net Framework;Windows PowerShell 1.0 本地化为 Windows Server 2003 和 Windows XP 的安装程序包http://support.microsoft.com/kb/926140Windows PowerShell 2.0 Windows Management Framework Core 程序包提供了适用于 IT 专业人员的已更新管理功能。(KB968930)http://www.microsoft.com/zh-cn/download/details.aspx?id=4045Microsoft .NET Framework 3.5 SP1http://www.microsoft.com/zh-cn/download/details.aspx?id=25150
安装迁移工具
- 在Windows Server 2012上安装DHCP角色和Windows迁移工具;
在Windows上打开运行Windows Server迁移工具,创建部署包;进入ServerMigrationTools目录,运行cd c:\Windows\system32\ServerMigrationTools
创建迁移包
查看创建部署文件夹方法:.\SmigDeploy.exe /?
创建一个可复制到运行Windows Server 2003计算机的迁移工具部署包:
.\SmigDeploy.exe /package /architecture x86 /os WS03 /path c:\SMIGDeploy
拷贝创建包
- 将创建好的迁移工具部署包复制到window Server 2003上,打开运行SmigDeploy.exe;
注:第一次运行SmigDeploy.exe正常,如果再次运行的时候就会报错,需要先撤销Windows服务器迁移工具在该服务器上的注册信息;
C:\SMIGDeploy\SMT_ws03_x86\SmigDeploy.exe /unregister
- 导出Windows Server 2003上DHCP的配置数据;查看Windows上可以迁移的功能角色:Get-SmigServerFeature
运行命令导出DHCP设置(自行设置迁移数据秘钥)
Export-SmigServerSetting –FeatureId dhcp -path c:\DHCPData –Verbose
导入迁移包完成迁移
- 将导出的DHCP数据拷贝到Windows上,运行命令导入DHCP配置数据;
在Windows上打开PowerShell,运行以下命令导入迁移工具命令:
Add-PSSnapin microsoft.Windows.Servermanager.migration
运行以下命令导入DHCP配置数据,然后启动DHCP服务:
Import-SmigServerSetting -FeatureId DHCP -Force -Path C:\DHCPData
注:在Windows上导入DHCP数据的时候可能会遇到以下错误,这是因为Windows和Windows Server 2012上默认的系统用户界面语言设置不一致。
查看系统默认UI语言,在Windows上可用命令(dism /online /get-intl)查看,在Windows上可在注册表
HKEY_LOCAL_MACHINE\SYSTEM\Controlset001\control\nls\language中查看installLanguage值,0409表示英文,0804表示中文
解决方法,可以修改Windows Server 2012上的系统UI语言,与Windows保持一致,当然也可以修改Windows Server 2003的系统UI语言,不过需要重新导出DHCP数据。
操作,确保Windows Server 2012上安装了中文和英文语言包,然后在注册表HKEY_LOCAL_MACHINE\SYSTEM\Controlset001\control\nls\language中修改installLanguage值,保持与Windows Server 2003一致,重启服务器后再进行DHCP数据导入操作;
使用Netsh迁移DHCP数据
- 因为Windows Server 2003和Windows Server 2012中DHCP类发生了改变,所以无法直接使用Netsh导出、导入DHCP配置文件;
- 在Windows Server 2003上删除DHCP配置文件中的“添加类”;使用命令导出DHCP配置:netsh dhcp Server dump >c:\dump_2003.txt
打开导出的配置文件,找到“添加类”,在cmd中运行命令删除5项默认的类别:
Netsh dhcp Server delete class "默认路由和远程访问类别" "远程访问客户端的用户类别" 525241532e4d6963726f736f6674 0 b
Netsh dhcp Server delete class "默认 BOOTP 的类别" "BOOTP 客户端的用户类别" 424f4f54502e4d6963726f736f6674 0 b
Netsh dhcp Server delete class "Microsoft Windows 2000 选项" "Windows 2000 客户端的 Microsoft 供应商特定选项" 4d53465420352e30 1 b
Netsh dhcp Server delete class "Microsoft Windows 98 选项" "Windows 98 客户端的 Microsoft 供应商特定选项" 4d534654203938 1 b
Netsh dhcp Server delete class "Microsoft 选项" "适用于 Windows 98 和 Windows 2000 客户端的 Microsoft 供应商特定选项" 4d534654 1 b
导出配置文件
使用命令重新导出配置文件,确认DHCP中默认类已删除;
- 在Windows Server 2003上,将Windows Server 2012中DHCP配置文件的“添加类”添加到服务器中;在Windows Server 2012中使用命令导出DHCP配置文件:
打开导出的配置文件,找到“添加类”,在Windows Server 2003 cmd中运行命令添加Windows Server 2012 DHCP中6项默认的类别:
Netsh dhcp Server Add Class "默认路由和远程访问类" "远程访问客户端的用户类" 525241532e4d6963726f736f6674 0 b
Netsh dhcp Server Add Class "默认的网络访问保护级别" "受限访问客户端的默认特殊用户类" 4d5346542051756172616e74696e65 0 b
Netsh dhcp Server Add Class "默认 BOOTP 类" "BOOTP 客户端的用户类" 424f4f54502e4d6963726f736f6674 0 b
Netsh dhcp Server Add Class "Microsoft Windows 2000 选项" "针对 Windows 2000 及更高版本客户端的 Microsoft 供应商特定选项" 4d53465420352e30 1 b
Netsh dhcp Server Add Class "Microsoft Windows 98 选项" "Windows 98 客户端的 Microsoft 供应商特定选项" 4d534654203938 1 b
Netsh dhcp Server Add Class "Microsoft 选项" "适用于所有 Windows 客户端的 Microsoft 供应商特定选项" 4d534654 1 b
在Windows上使用命令重新导出配置文件,确认DHCP中默认类已添加;
导入配置文件
- 使用Netsh命令导出、导入DHCP配置文件;
在Windows Server 2003上使用命令导出DHCP配置文件:
netsh dhcp Server export c:\dhcpdb all
在Windows Server 2012上使用命令导入DHCP配置文件:
netsh dhcp Server import c:\dhcpdb all