DHCP数据库异常解决方法
一.问题简述:
1.���}主�}:
在windows2008StandardR2DHCPServer手���客�舳私�定IP地址出�e,同�r有的用�綦��XIP地址�]有任何原因出�e。
2���}描述
1)在DHCPserverconsole介面,在Vlan115�W段��MAC地址��b8ac6f626d61手�咏�定ip出�F���}�D片中的���},
但是�⒃�mac地址�定到其他vlan就OK,�似�F象出�F了4次。
2)今天eric的��X�]有任何原因出�F���}�D片(2)中的�@示�e�`。
3���}�D片
1)如下�D,
2)
二.问题分析:
是dhcpdatabasecrash,也就是dhcpdatabase出现异常,正常情况下在命令提示符下导出的database文件dhcp.txt和dump.txt文件包含的内容是一样的,但是因database导出的dhcp.txt只能在UI界面显示,而无法修复dhcp.txt(直接打开dhcp.txt文件会显示乱码)里的数据,而导出的dump.txt文件可以直接打开修改相关异常数据,故修改了dump.txt文件的内容后再导入到dhcp中,也就是修改了dhcpdatabase里的内容。
1.将DHCPdatabase导出,但是导出的此文件无法打开,只能在UI界面可以打开,导出命令为:
在命令提示符下C:\Users\gzpadmin>netshdhcpserverexportd:\dhcp.txtall
2.导出DUMP文件,此文件包含了DHCPscope里所有详细的信息(比dhcp在UI界面看到的详细),导出命令为:
在命令提示符下C:\Users\gzpadmin>netshDHCPserverdump>d:\dump.txt
3.根据有问题的vlan的ip地址和mac地址查看dump.txt文件里的异常信息,将异常的信息删除后保存为dump2.txt
4.将dump2.txt重新导入到dhcp中,导入命令为:
在命令提示符下C:\Users\gzpadmin>netshexecd:\dump2.txt
5.导入dump2.txt文件后,刷新dhcp,不需要重启dhcpservice,就可以解决此问题了。
附:具体情况如下:
情况一:
为mac地址为082e5f0a5214绑定vlan124网段的ip地址出现如下异常:
原因是这个mac地址在vlan124网段已经分配了124.18这个ip地址,在同一个vlan中不可以给一个mac地址分配2个ip地址。
情况二:
在dhcpUI界面看到这种类型的异常,如下图:
可能原因有当dhcp为client分配了ip地址为114.15后,在网络中有其他的client手动设定114.15的ip地址,就会出现这种情况。
MS回复:收到BAD_ADDRESS的信息,是因为客户端申请IP地址时,如果自己通过ARP检测到这个IP地址已经被别的机器用了,那他就会发NACK包给DHCPserver,DHCPserver收到后就会把这个IP地址标记成BAD_ADDRESS。
这种情况处理方法:删除此ip地址,刷新DHCP,重新绑定ip地址即可。
情况三:
为mac地址为f46d04791032绑定vlan115网段的ip地址出现如下异常,只要是在vlan115网段为此mac地址分配任何一个ip都会出现如下界面,但是在其他vlan为此mac地址分配ip就OK。
这种情况是dhcpdatabasecrash,也就是dhcpdatabase异常造成的。
也就是说在vlan115网段的database中已经为此mac绑定过ip地址,但是在UI界面是看不到的。处理方法如下:
1.导出dhcpdatabase文件,导出方法如下:
在命令提示符下C:\Users\gzpadmin>netshDHCPserverdump>d:\dump.txt
2.打开此dump.txt文件,查看是不是已经存在了f46d04791032这个mac地址,如下图:
说明dhcpdatabase文件中已经为f46d04791032这个mac地址绑定了ip地址为10.132.115.151,不可能在同一个vlan中为一个mac地址绑定多个ip地址,所以在vlan115中为此mac地址绑定任何一个ip都是不成功的。
3.根据情况将异常的信息删除后保存为dump2.txt,将dump2.txt重新导入到dhcp中,导入命令为:在命令提示符下C:\Users\gzpadmin>netshexecd:\dump2.txt
,这步的操作也是修改dhcpdatabase的内容。导入dump2.txt文件后,刷新dhcp,不需要重启dhcpservice,就可以解决此问题了。
DHCPdatabasecrash原因分析
对于DHCPdatabasecorrupt的问题,因为问题已经发生,我们没有办法追溯到问题发生之前的状态,如果没有办法还原发生之前的状态,并重现一次问题,即使我们有您在DHCPdatabasecorrupt时的database,我们也很难启用audit,给出rootcause,但是通常我们遇到这样的问题,我们建议您对DHCPdatabase做一个定期的维护,您可以参照以下的步骤做一个定期的维护操作:
1.Toreconcileascope:
Reconcile操作方法:http://technet.microsoft.com/zh-cn/library/dd145311(v=WS.10).aspx
http://technet.microsoft.com/zh-tw/library/dd183579(v=ws.10).aspx
Reconcile的操作可以在线操作,对dhcpserver和client没有任何影响
a.OpentheDHCPManagementsnap-in.
b.ExpandtheDHCPserverobjectandhighlighttheapplicablescope
c.OntheActionmenu,clickReconcile
d.IntheReconciledialogbox,clickVerify.Inconsistenciesfoundwillbereportedinthestatuswindow
e.Ifthescopeisnotconsistent,selectthedisplayedaddressesthatneedtobereconciled,andclickReconciletorepairtheinconsistencies.
2.ToreconciletheDHCPdatabase:
a.OpentheDHCPManagementsnap-in.
b.HighlightorselecttheapplicableDHCPserverobject.
c.OntheActionmenu,clickReconcileAllScopes
d.IntheReconcileAllScopesdialogbox,clickVerify.Inconsistenciesfoundwillbereportedinthestatuswindow.
e.Ifthedatabaseisnotconsistent,selectthedisplayedaddressesthatneedtobereconciled,andclickReconciletorepairtheinconsistencies.
3.Makesurethatthecustomerhasthe%systemroot%\system32\dhcpand%systemroot%\system32\dhcp\backupfolderssetasanexceptionforAnti-Virusapplicationscanningengines.
4.UsetheMicrosoftJetpack.exeutilitytocompactorrepairtheWindowsDHCP.mdbdatabase.
jetpack.exe操作方法:http://support.microsoft.com/kb/145881
jetpack.exe程序是一个字符型的命令程序,必须手工进行操作。
Cd\winnt\system32\dhcp(进入DHCP目录)
Netstopdhcpserver(让dhcp服务器停止运行)
Jetpackdhcp.mdbtemp.mdb(dhcp.mdb是dhcp数据库文件,temp.mdb是用于调整的临时文件)
Netstartdhcpserver(让dhcp服务器开始运行)
5.RestoringtheDHCPserverdatabaseisusefulinsituationswherethedatabasehaseitherbecomecorruptedorlost.Inordertosuccessfullyrestorethedatabase,youneedtobackupthedatabaseonaregularbasis.Bydefault,DHCPperformssynchronousbackupsthatoccurautomaticallyata60minuteintervaltothefolderlocation%systemroot%\System32\Dhcp\Backup,butyoucanalsoperformmanualbackups,orusebackupsoftwaretocopythedatabasetootherlocations.YoucanrestoretheDHCPdatabasefromabackupcopyofthedatabasefile,Dhcp.mdb,usingtheRestorecommandontheActionmenuintheDHCPconsole.WhenyourestoretheDHCPdatabasefromabackupcopyofDhcp.mdb,thefollowinginformationisconfiguredontheserver:
Allscopes,includingsuperscopesandmulticastscopes
Reservations
Leases
Alloptions,includingserveroptions,scopeoptions,reservationoptions,andclassoptions
Allregistrykeysandotherconfigurationsettings(forexample,auditlogsettingsandfolderlocationsettings)setinDHCPserverproperties
Note:TheDNSdynamicupdatecredentials(username,domain,andpassword)thattheDHCPserveruseswhenregisteringDHCPclientcomputersinDNSarenotbackedupwithanybackupmethod;thereforetheyarenotrestoredduringtherestoreprocedure.AfterrestoringtheDHCPdatabase,configurecredentialsfortheserver.
A:reconcile协调机制是什么,是协调dhcpdatabase和注册表的设置?还是协调dhcpserver和client之间的信息?
您说当dhcpdatabase老化,也就是dhcpdatabase的设置和相关内容与注册表(还是client)不一致时,reconcile操作会使其一致?
Q:主要是DHCPdatabase自己检查简单的语法问题和逻辑问题,和注册表不能说完全没有关系,但是基本不会有易动,只是常规的检查以下。这里的语法问题或逻辑问题包括:1).ipaddress对应的host信息不正确,比如hostname丢失,错误;2).ipaddress丢失,比如4段ip10.132.126.80,变成了3段ip10.132.126.;3).dhcpdatabasecrash;
A:是不是dhcpserver的任何设置或修改都会写到注册表中?
Q:不是,注册表里存的是DHCP的一些全局配置,DHCPdatabase里存的是信息。
A:您说dhcp为client分配ip地址的动作也会写到注册表中?
Q:这个不会.
A:Jetpack.exe的机制是什么,具体是如何优化数据库的?先压缩后释放是什么意思?
此操作除了需stopdhcpservice之外,对dhcp还有没有其他的影响?
Q:类似于磁盘碎片整理。在database数据表中有很多数据块,当某些数据块不再使用就空出了数据表,这样有数据的数据表和没有数据的数据表很分散,通过Jetpack.exe会整理数据表,将有数据的数据表整理到一起,没有数据的数据表整理到一起,这样达到释放空间的作用。请避开高峰操作。
A:我们通常删除ip地址的方法是选择ip右键删除。这种删除实际上该ip在database里还是存在的。
请教我们这种操作是正确的吗,还是说要用其他方法删除ip?能否麻烦您告知正确删除ip的方法?可以在UI的同时也在database里删除
Q:DHCPlease的删除只有在DHCPmanager里面可以删,您不用担心UI和我们上次所说的database不同步的问题,上次没有显示在UI界面,是偶然现象,是因为DHCPdatabasecorrupt掉导致的,不会经常发生。请您放心。
技术链接可供参考:
-------------------------------------------
173396HowtoRestoreaCorruptedDHCPDatabaseFile
http://support.microsoft.com/default.aspx?scid=kb;EN-US;173396
283251HowtousetheJetpackutilityonaclusteredWINS/DHCPdatabase
http://support.microsoft.com/default.aspx?scid=kb;EN-US;283251
145881HowtoUseJetpack.exetoCompactaWINSorDHCPDatabase
http://support.microsoft.com/default.aspx?scid=kb;EN-US;145881
另外根据我们的经验,可以提供可能造成DHCPdatabasecorrupt的possiblecause:
-----------------------------------------------------------------------------------------------------------
1.三方的应用程序和服务干扰了DHCPdatabase的读写操作。
2.检查磁盘读写是否正常,需要具体检查一下您的磁盘。
3.是否安装了三方安全软件,可以控制安全软件的扫描程序,将DHCP服务排除在外,以防干扰。
另外对于您的第二个问题,这里需要解释的就是,我们前面所提供的cleanboot加二分法的步骤,就是可以定位具体是哪个三方服务可能干扰DHCPservice。还有造成这个问题的rootcause跟第一个问题DHCPdatabasecorrupt肯定不相关,如果要追踪这个新问题,我们需要您上一个新case继续跟踪,同时您可放心,SA的客户可以免费上无限个case,不会对您有额外的收费要求,谢谢您一直以来的耐心和配合。