企業為落實「一機一碼」審計與安全合規,常需在 DHCP 服務器綁定 MAC 地址與固定 IP。本文記錄思科路由器 (IOS) 環境下,從 hardware-address 失敗轉戰 client-identifier 成功的完整踩坑過程,並給出生產環境可直接套用的最佳實踐模板。
! 原始 DHCP 池 (動態分配 192.168.0.0/24)
ip dhcp pool cisco
import all
network 192.168.0.0 255.255.255.0
default-router 192.168.0.1
dns-server 219.141.136.10 202.106.0.20
lease 6
| 屬性 | hardware-address | client-identifier (推薦) |
|---|---|---|
| 標準依據 | RFC 2131 (BOOTP 遺留) | RFC 2131 / RFC 4361 (DHCPv4 客戶端標識符) |
| 格式 | hardware-address MAC type (type: 1=Ethernet) | client-identifier 01 + MAC (01 表 Ethernet + MAC) |
| Windows 行為 | 不發送 chaddr 對應 MAC,改送 Client-ID | 預設發送類型 01 (Ethernet) + MAC |
| Linux 行為 | 部分發送 chaddr | 多數發送 Client-ID (可配置) |
| 匹配成功率 | 極低 (Windows 不匹配) | 極高 (跨平台一致) |
結論:思科 TAC 明確建議使用 client-identifier,格式固定為 01 + MAC (點分十六進位,每 4 位一組)。
! 1. 靜態綁定池 (每台設備一條)
ip dhcp pool PC-Finance-01
host 192.168.0.101 255.255.255.0
client-identifier 0100.1617.7003.EA ! 01 + 0016.1770.03EA
!
ip dhcp pool PC-Engineer-02
host 192.168.0.102 255.255.255.0
client-identifier 0100.1A2B.3C4D.5E
! ... 以此類推
! 2. 原動態池關鍵調優
ip dhcp pool cisco
lease 0 1 0 ! 租期 0 天 1 小時 0 分 → 強制客戶端頻繁續租,新設備無法佔用固定 IP
! 或 lease 0 0 30 ! 30 分鐘亦可,視安全策略而定
! 3. 防止 IP 地址衝突 (雙重保險)
ip dhcp ping packets 3 ! 分配前發送 3 個 ICMP Echo,確認目標 IP 真空閒
ip dhcp ping timeout 200 ! 等待 200ms 無回應視為空閒
no service dhcp → service dhcp (重置綁定表)。ipconfig /release && ipconfig /renew,Linux dhclient -r && dhclient。show ip dhcp binding 確認每條記錄顯示 client-identifier 而非 hardware-address。ip dhcp pool ... 片段 → 文本編輯器批次替換 → 終端機分批貼上 (每批 50 條間隔 5 秒)。若需在接入層交換機強制綁定 (防止私接路由器、ARP 欺騙),請部署:
ip dhcp snooping
ip dhcp snooping vlan 10,20,30
ip dhcp snooping limit rate 10 ! 非信任埠限速
interface range GigabitEthernet1/0/1 - 48
ip dhcp snooping limit rate 10
spanning-tree portfast
! 上行鏈路設為信任
interface GigabitEthernet1/0/49
ip dhcp snooping trust
! 動態 ARP 檢測 (DAI)
ip arp inspection vlan 10,20,30
配合 DHCP Server 綁定,構建「三層 DHCP 綁定 + 二層 Snooping/DAI」雙層防線,實現真正的「人、機、IP、埠」四元素綁定。