企業網絡常需在單一 DHCP 服務器為多個 VLAN/子網分配地址。本文基於 Fedora 6 實驗環境,詳細記錄雙網卡 Linux 機器作為 DHCP Relay Agent,轉發請求至獨立 DHCP 服務器,實現跨子網(192.168.10.0/24、192.168.20.0/24、192.168.182.0/24)自動分配 IP 的完整配置流程,並深度解析 dhcrelay 關鍵參數與 dhcpd.conf 多作用域寫法。
| 角色 | 主機名 | 介面 | IP | 功能 |
|---|---|---|---|---|
| Relay Agent | Machine A | eth0 | 192.168.10.1 | 面向客戶端子網 |
| eth1 | 192.168.20.1 | 面向 DHCP Server | ||
| DHCP Server | Machine B | eth0 | 192.168.20.254 | 核心分配服務,GW 指向 A.eth1 |
| Client | Laptop | eth0 | DHCP 獲取 | 連接 A.eth0 同網段 |
dhcrelay -i eth0 -i eth1 192.168.20.254
核心參數解析:
-i eth0:監聽客戶端請求的介面(必須)-i eth1:向 DHCP Server 轉發回應的介面(關鍵!缺失會導致無法收到 DHCPOFFER/ACK)192.168.20.254:DHCP Server IP啟動後,Relay 將在 eth0 接收廣播 DHCPDISCOVER,單播轉發給 Server;收到 Server 回應後,從 eth1 發出,經路由返回 eth0 廣播給客戶端。
ddns-update-style interim;
ignore client-updates;
# 全域預設選項
option subnet-mask 255.255.255.0;
option domain-name "corp.local";
option domain-name-servers 192.168.123.247;
option broadcast-address 192.168.20.255;
default-lease-time 86400;
max-lease-time 172800;
# 作用域 1:Relay 所在子網(客戶端實際所在網段)
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.10 192.168.10.100;
option routers 192.168.10.1; # Relay eth0 IP 作為網關
}
# 作用域 2:Server 直連子網
subnet 192.168.20.0 netmask 255.255.255.0 {
range 192.168.20.11 192.168.20.100;
option routers 192.168.20.1; # Relay eth1 IP
}
# 作用域 3:擴展子網(如 VLAN 182)
subnet 192.168.182.0 netmask 255.255.255.0 {
range 192.168.182.10 192.168.182.100;
option routers 192.168.182.1; # 對應 Relay 新增介面 IP
}
DHCP Relay 轉發請求時,會在封包中填充 GIADDR (Gateway IP Address) 字段為接收介面的 IP(如 192.168.10.1)。DHCP Server 收到請求後,根據 GIADDR 落入哪個 subnet 宣告範圍,自動選擇對應作用域分配地址。這就是為什麼 dhcpd.conf 中必須宣告所有可能的子網,且 option routers 必須指向該子網的實際網關(通常是 Relay 在該子網的介面 IP)。
實驗發現,若在 dhcpd.conf 中用 shared-network 包裹多個 subnet:
shared-network mynet {
subnet 192.168.10.0 ... { ... }
subnet 192.168.20.0 ... { ... }
}
會導致 Server 回應封包的 GIADDR 處理異常,Relay 無法正確接收回應,最終客戶端獲取 IP 失敗。結論:跨 Relay 的多子網場景,請直接平鋪多個 subnet 宣告,不要使用 shared-network。
dhcrelay -i eth0 -i eth1 -i eth2 192.168.20.254dhcpd.conf 新增對應 subnet 192.168.182.0 ... 宣告dhcpd 服務dhcpd.conf 中的 deny unknown-clients 或配合 802.1X/portal 認證。dhcrelay -6 支援 DHCPv6 Relay,配合 RA (Router Advertisement) 實現雲原生網絡。DHCP Relay 通過 dhcrelay -i <client_iface> -i <server_iface> <server_ip> 雙介面綁定,配合 Server 端精準的多 subnet 宣告與 option routers 指向 Relay 對應介面 IP,即可優雅解決跨子網 IP 分配難題。核心在於理解 GIADDR 機制、拒絕 shared-network 包裹、做好介面與路由的對應關係。掌握此模式,輕松支撐百個 VLAN 的集中化 DHCP 管理。
Sublime Text 3 Build 3019 新功能亮點:跳轉編輯位置、HTML 自動完成增強、視網膜顯示優化、大檔案載入加速、API 擴展
Linux 下 SSD 優化實戰:TRIM/discard、I/O 調度器、文件系統參數、日誌模式四大維度延壽提速
VMware vCenter Converter Standalone Linux P2V 遷移排錯清單:9 大關鍵檢查點
vi/vim 編輯器完全指南:從模式切換到正則替換的肌肉記憶訓練手冊
Linux 網路硬體配置全攻略:核心模組、乙太網卡、PLIP 與撥號連線