DHCP服務器多宿主的建立和配置
對于DHCP服務器來說,我們可以進行多宿主的設置。那么如何使用多宿主DHCP服務器,連接多個獨立的子網呢?下面我們就主要講解一下這方面的問題。
(1)使用多宿主DHCP服務器,連接多個獨立的子網。
/NIC1:192.168.1.1---交換機組1---子網1
DHCP server/
\NIC2:10.0.0.1---交換機組2---子網2
(2)使用DHCP relay
如果 DHCP server有多個 DHCP 作用域,網關 IP 地址字段 (GIADDR) 中的地址會標識將從哪個 DHCP 作用域提供 IP 地址租約。
那就是說A子網的client向子網B的DHCP server請求IP時,會向A本地子網發送255.255.255.255的廣播,路由器的端口或DHCP中繼服務器的網卡接收到廣播,將該報文加入GIADDR段(即路由器將接收報文的端口地址加到報文里,DHCP中繼服務器將自身IP加到報文里),最后將該報文轉發給子網B的DHCP server,DHCP server根據GIADDR來給client分配何子網作用域的IP。
了解中繼代理中繼代理是在不同子網上的客戶端和服務器之間中轉 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 中繼不可行或不可能,您可以通過安裝 DHCP 中繼代理服務來配置運行 Windows NT Server 4.0 或更高版本的計算機充當中繼代理。
大多數情況下,路由器支持 DHCP/BOOTP 中繼。如果您的路由器不支持,則應與路由器制造商或供應商聯系以查明是否有軟件或固件升級提供對該功能的支持。
中繼代理的工作原理
中繼代理將它連接的其中一個物理接口(如網卡)上廣播的 DHCP/BOOTP 消息中轉到其他物理接口連至的其他遠程子網。下圖顯示了子網 2 上的客戶端 C 是如何從子網 1 上的 DHCP 服務器 1 獲得 DHCP 地址租約的。
DHCP 客戶端 C 使用眾所周知的 UDP 服務器端口 67 在子網 2 上以“用戶數據報協議 (UDP)”的數據報廣播 DHCP/BOOTP 查找消息 (DHCPDISCOVER)。端口 67 是 BOOTP 和 DHCP 服務器通信所保留和共享的。
中繼代理,在 DHCP/BOOTP 允許中繼的路由器的情況下,檢測 DHCP/BOOTP 消息頭中的網關 IP 地址字段。如果該字段有 IP 地址 0.0.0.0,代理文件會在其中填入中繼代理或路由器的 IP 地址,然后將消息轉發到 DHCP 服務器所在的遠程子網 1。
遠程子網 1 上的 DHCP 服務器 1 收到此消息時,它會為該 DHCP 服務器可用于提供 IP 地址租約的 DHCP 作用域檢查其網關 IP 地址字段。
如果 DHCP 服務器 1 有多個 DHCP 作用域,網關 IP 地址字段 (GIADDR) 中的地址會標識將從哪個 DHCP 作用域提供 IP 地址租約。
例如,如果網關 IP 地址 (GIADDR) 字段有 10.0.0.2 的 IP 地址,DHCP 服務器會檢查其可用的地址作用域集中是否有與包含作為主機的網關地址的類別 A IP 網絡匹配的地址作用域范圍。在這種情況下,DHCP 服務器將對 10.0.0.1 和 10.0.0.254 之間的地址作用域進行檢查。如果存在匹配的作用域,則 DHCP 服務器從匹配的作用域中選擇可用地址以便在對客戶端的 IP 地址租約提供響應時使用。
當DHCP 服務器 1 收到 DHCPDISCOVER 消息時,它會處理 IP 地址租約 (DHCPOFFER) 并將其直接發送給在網關 IP 地址 (GIADDR) 字段中標識的中繼代理。
路由器然后將地址租約 (DHCPOFFER) 轉發給 DHCP 客戶端。
客戶端的 IP 地址仍舊無人知道,所以它必須在本地子網上廣播。同樣,根據 RFC 1542,DHCPREQUEST 消息從客戶端中轉發服務器,而 DHCPACK 消息從服務器轉發到客戶端。