DHCP數據庫異常解決方法數據庫
一.問題簡述:windows
1.問題主題:安全
在windows2008StandardR2DHCPServer手動為客戶端綁定IP地址出錯,同時有的用戶電腦IP地址沒有任何緣由出錯。服務器
2問題描述網絡
1)在DHCPserverconsole介面,在Vlan115網段為MAC地址為b8ac6f626d61手動綁定ip出現問題圖片中的問題,app
可是將該mac地址綁定到其餘vlan就OK,類似現象出現了4次。dom
2)今天eric的電腦沒有任何緣由出現問題圖片(2)中的顯示錯誤。ide
3問題圖片優化
1)以下圖,ui
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.
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,不會對您有額外的收費要求,謝謝您一直以來的耐心和配合。