詳述DHCP中繼代理
在中繼代理方面,我們不能忽略DHCP的強大功能。這里我們就針對這方面的知識來進行一下說明。中繼代理是在不同子網上的客戶端和服務器之間中轉 DHCP/BOOTP 消息的小程序。根據征求意見文檔 (RFC),一種描述協議設計和相關操作的標準文檔,DHCP/BOOTP 中繼代理是 DHCP 和 BOOTP 標準和功能的一部分。
DHCP/BOOTP 路由器支持
在 TCP/IP 網絡中,路由器用于連接稱作“子網”的不同物理網段上使用的硬件和軟件,并在每個子網之間轉發 IP 數據包。要在多個子網上支持和使用 DHCP 服務,連接每個子網的路由器應符合 RFC 1542 中所描述的 DHCP/BOOTP 中繼代理能力。
要符合 RFC 1542 并提供中繼代理支持,每個路由器必須能識別 BOOTP 和 DHCP 協議消息并相應處理(中轉)這些消息。由于路由器將 DHCP 消息解釋為 BOOTP 消息(例如通過相同的 UDP 端口編號發送并包含共享消息結構的 UDP 消息),具有 BOOTP 中繼代理能力的路由器中轉網絡上發送的 DHCP 數據包和任何 BOOTP 數據包。
如果路由器不能作為 DHCP/BOOTP 中繼代理運行,則每個子網都必須有在該子網上作為中繼代理運行的 DHCP 服務器或另一臺計算機。在不切實際地或不可能地配置路由器以支持 DHCP/BOOTP 中繼的情況下,您可以配置運行 Windows NT Server 4.0 或更高版本的計算機通過安裝 DHCP 中繼代理服務來充當中繼代理。
大多數情況下,路由器支持 DHCP/BOOTP 中繼。如果您的路由器不支持,則應與路由器制造商或供應商聯系以查明是否有軟件或固件升級提供對該功能的支持。
中繼代理的工作原理
中繼代理將它連接的其中一個物理接口(如網卡)上廣播的 DHCP/BOOTP 消息中轉到其他物理接口連至的其他遠程子網。下例顯示了子網 2 上的客戶機 C 如何從子網 1 上的 DHCP 服務器 1 獲得 DHCP 地址租約。
1.DHCP 客戶機 C 在子網 2 上使用眾所周知的 UDP 服務器端口 67 以用戶數據報協議 (UDP) 數據報形式廣播 DHCP/BOOTP 探索消息 (DHCPDISCOVER),服務器端口號 67 是為 BOOTP 和 DHCP 服務器通信保留和共享的。
2.中繼代理,在 DHCP/BOOTP 允許中繼的路由器的情況下,檢測 DHCP/BOOTP 消息頭中的網關 IP 地址字段。如果該字段有 0.0.0.0 的 IP 地址,則此代理程序填入中繼代理或路由器的 IP 地址并將此消息轉發到 DHCP 服務器所在的遠程子網 1。
3.遠程子網上 1 的 DHCP 服務器 1 接收到此消息時,會檢查 DHCP 服務器用于提供 IP 地址租約的 DHCP 作用域的網關 IP 地址字段。
4.如果 DHCP 服務器 1 有多個 DHCP 作用域,則網關 IP 地址字段 (GIADDR) 中的地址標識將提供 IP 地址租約的 DHCP 作用域。
例如,如果網關 IP 地址 (GIADDR) 字段有 10.0.0.2 的 IP 地址,則 DHCP 服務器檢查其地址作用域范圍的可用地址作用域集合,地址作用域范圍與包含作為主機的網關地址的 A 類 IP 網絡匹配。在這種情況下,DHCP 服務器將對 10.0.0.1 和 10.0.0.254 之間的地址作用域進行檢查。如果存在匹配的作用域,則 DHCP 服務器從匹配的作用域中選擇可用地址以便在對客戶端的 IP 地址租約提供響應時使用。
5.當 DHCP 服務器 1 接收到 DHCPDISCOVER 消息時,它處理并直接將 IP 地址租約 (DHCPOFFER) 發送給在網關 IP 地址 (GIADDR) 字段中標識的中繼代理。
6.路由器然后將地址租約 (DHCPOFFER) 轉發給 DHCP 客戶端。
客戶端的 IP 地址仍舊無人知道,所以它必須在本地子網上廣播。同樣,根據 RFC 1542,DHCPREQUEST 消息從客戶機轉發到服務器,DHCPACK 消息從服務器轉發到客戶機。