DHCP Server 與Client 的運作過程
DHCP 服務中可以把DHCP Server 和DHCP Client 的運作過程可分為4 個階段:(UDP Port)
1.廣播DHCP Discover請求所有的DHCP伺服器給予IP位址。
2.伺服器回應DHCP Offer,給予IP位址及租用時間。
3.用戶端會選擇最好的,並回播DHCP Request,確認IP位址。
4.伺服器回應DHCP ACK給予IP位址。
1.租約的索取:
DHCP 租約的程序開始於DHCP Client 開始透過廣播DHCP Discover 的信息以尋找位於網路上的DHCP Server。在這個階段時,DHCP Client 本身尚未擁有IP 位址也未知DHCP Server 的IP 位址,所以會以0.0.0.0當作來源位址(Source Address),而以255.255.255.255 作為目的地位址(Destination Address)在整個網路上廣播。在這個DHCP Discover 封包中會包含此DHCP Client 的MAC Address(Media Access Control Address),和Host Name。
(在 Windows 的預設情形下,Dhcpdiscover 的等待時間預設為 1 秒﹐也就是當客戶端將第一個 Dhcpdiscover 封包送出去之後﹐在 1 秒之內沒有得到回應的話﹐就會進行第二次 Dhcpdiscover 廣播。若一直得不到回應的情況下﹐客戶端一共會有四次 Dhcpdiscover 廣播(包括第一次在內)﹐除了第一次會等待 1 秒之外﹐其余三次的等待時間分別是 9﹑13﹑16 秒。如果都沒有得到 DHCP 伺服器的回應﹐客戶端則會顯示錯誤信息﹐宣告 Dhcpdiscover 的失敗。之後﹐基於使用者的選擇﹐系統會繼續在 5 分鐘之後再重複一次 Dhcpdiscover 的過程。)
2.租約的提供:
當 DHCP Server 收到這個廣播後,DHCP Server 會發出DHCP Offer 的封包回應DHCP Client。目的端是255.255.255.255 以全域廣播對整個網路發送出這個封包。這個封包內除了含有DHCP Client 的MAC Address 以外還含有下面這些資訊(如圖3 所示):
*提供給 DHCP Client 的一個IP 位址
*子網路遮罩
*租約的時間長度
*DHCP Server 的識別資料如IP 位址
(*到伺服器的登錄檔中尋找該用戶之前是否曾經用過某個 IP ,若有且該 IP 目前無人使用,則提供此 IP 給用戶端;
*若設定檔針對該 MAC 提供額外的固定 IP (static IP) 時,則提供該固定 IP 給用戶端;
*若不符合上述兩個條件,則隨機取用目前沒有被使用的 IP 參數給用戶端,並記錄下來。)
3.租約的選擇:
在 DHCP Client 收到DHCP Server 發出的DHCP Offer 封包之後,DHCP Client 會以MAC Address 比對出正確結果後,會發出DHCP Request 的訊息以回應 DHCP Server 它已收到此租約的資訊了。這個封包中會含有提供這個DHCP Offer 訊息的DHCP Server 的識別資料,因此只有符合此識別資料的DHCP Server 才會處理此廣播訊息。
4.租約的回應:
當 DHCP Server 收到DHCP Client 所發出的DHCP Request 封包後,經過相關的檢查,確定
其IP 資訊目前無任何設定衝突時,DHCPServer 就會發出DHCP ACK 的封包以回應DHCP Client 租約已經成功了。
而DHCP Client 收到這個DHCP ACK 封包後就會依據其所提供的資料而組態TCP/IP 的設定並啟動。
CISCO Router DHCP設定
設定DHCP Pool
在路由器上設定DHCP時,步驟大致如下
1.設定DHCP位址的 pool name並進入DHCP pool設定模式
2.指定分配給使用者的網段範圍以及網路遮罩
3.指定DHCP用戶端的預設閘道位址
4.設定DHCP用戶端的網域名稱伺服器位址
5.指定租用的時間
如:
ip dhcp pool ITpool
network 10.10.1.0 255.255.255.0
default-router 10.10.1.254
dns-server 172.16.16.1
Excluding IP Addresses
在設定時,希望其中的某些網段不要分配出去,可以使用ip dhcp excluded-address指令,將之排除。
Router(config)# ip dhcp excluded-address low-address [high-address]
顯示DHCP位址分配 (Address
binding)
router#sh ip dhcp binding
若想將DHCP位址分配資料刪除,可使用下列指令:
Router# clear ip dhcp binding address
DHCP Relay Agent
重建損壞的DHCP伺服器
備份DHCP伺服器的設定
netsh dhcp server dump
不在那台伺服器前時,使用
netsh dhcp server ipaddress dump
把螢幕顯示資訊,輸出導向一個ASCII文字檔裡
netsh dhcp server dump > dhcpbackup.txt
其他台DHCP伺服器
netsh exec dhcpbackup.txt
雖無法復原租用資訊,但是其他東西都可以復原回來:類別、選項、領域、保留區等。
Windows DHCP Server(以windows server 2000為例)
logging檔案位置
\winnt\system32\dhcp
資料庫備份
DHCP 資料庫檔案位於 WINNT\System32\dhcp 資料夾中。
Dhcp.mdb:DHCP server 的資料庫檔案
Dhcp.tmp:資料庫索引維護操作期間,由 DHCP 資料庫用作交換檔的暫存檔。系統失敗後,此檔案有時會保留在 WINNT\System32\Dhcp 目錄下
J50.log 及 J50#####.log:所有資料庫異動的紀錄檔,是 DHCP 資料庫必要時用來回復資料的
J50.chk:檢查點檔案
DHCP server 在指派 DHCP 用戶端或釋出 TCP/IP 設定參數時,會更新資料庫。
DHCP 資料庫是集中式資料庫,備份資料庫只要將該目錄下的檔案備份即可。可以使用Windows備份工具,也可以使用檔案總管,不過都必須先停止 DHCP 伺服器服務。
DHCP server 也會每隔 60 分鐘將 DHCP 資料庫自動複製到 Backup 子資料夾下。如果想要修改間隔,可執行 regedt32.exe,在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DHCPServer\Parameters 變更 BackupInterval 值
資料庫還原
當 DHCP 資料庫損毀或遺失狀況時,Windows Server 會提供一組連續式修復選項,供還原及修復伺服器電腦上的 DHCP 資料之用。
首先我們可以將圖中的 RestoreFlag 改為 1,然後再重新啟動 DHCP 服務,此時 DHCP server 就會還原原先自動備份的資料庫。
壓縮、修復DHCP資料庫(以windows server 2000為例)
我們可以使用 Jetpack.exe 公用程式執行離線壓縮
Jetpack database_name temporary_database_name
Ex: 點選[開始]->[程式集]->[附屬應用程式]->[命令提示字元],輸入
cd winnt\system32\dhcp
net stop dhcpserver
jetpack dhcp.mdb tmp.mdb
net start dhcpserver
將 DHCP 資料庫移到其他伺服器(以windows server 2000為例)
如果我們想把 DHCP server 中資料庫移到另外一台 DHCP 上繼續服務,除了必須做資料夾移置外,還必須複製所對應的機碼。
在欲停用的 DHCP server 上則是執行下面步驟
步驟一:停止 DHCP 伺服器。(點選 DHCP server,按滑鼠右鍵彈出選單,選擇[所有工作]->[停止],或在命令提示字元下輸入 net stop dhcpserver)
步驟二:在服務清單中的 [DHCP 伺服器] 服務改為停用。這可避免 DHCP 伺服器在轉移資料庫之後啟動。若要執行此工作,請使用 [電腦管理],再從其清單中選取要停用的 [DHCP Server] 服務。
步驟三:將 DHCP 伺服器樹狀目錄 (即 WINNT\System32\Dhcp),複製到新的 (目的地) DHCP 伺服器上的暫存位置。例如,將樹狀目錄複製到 C:\Temp\System32\Dhcp。
步驟四:啟動 [登錄編輯器] (Regedt32.exe) 並找到下列子機碼: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DHCPServer
步驟五:選取[DHCPServer] 項目後,再點選[登錄]->[另存子目錄],將指定的機碼存成文字檔。
步驟六:在來源伺服器上,刪除 DHCP 伺服器資料庫資料夾。
步驟七:解除安裝 DHCP 伺服器,以將其從該伺服器上移除。
在新的 DHCP server 上則是執行下面步驟
步驟一:如果您尚未安裝 DHCP 伺服器軟體,請先安裝,然後再重新啟動伺服器電腦。
步驟二:停止 [DHCP 伺服器] 服務。
步驟三:將暫存資料夾 (如 C:\Temp\System32\Dhcp 目錄) 中的 System.mdb 檔案更名為 System.src。
步驟四:將 DHCP 伺服器樹狀目錄從暫存資料夾複製到 WINNT\System32\Dhcp,以取代現存的 DHCP 伺服器目錄。
步驟五:啟動 [登錄編輯器] (Regedt32.exe) 並到下列子機碼: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DHCPServer,選取 DHCPServer 機碼 (位於 Services 機碼下)。點選[登錄]->[還原],在 [還原機碼] 中的 [檔案名稱] 下,指定在‘備份 DHCP Server 資料庫’步驟五中所存檔的檔案資訊 (ex:WINNT\System32\Dhcp\Backup\Dhcpcfg)
步驟六:出現警訊,按[是]以覆蓋機碼
步驟七:結束 [登錄編輯器]。
步驟八:啟動 [DHCP 伺服器] 服務。
步驟九:開啟 DHCP 管理工具,並使用 [調解所有領域],將 DHCP 伺服器資料庫調解成還原的資訊 (現已合併到 Windows 2000 登錄中的)。
參考、來源
HurryKen
沒有留言:
張貼留言