兩台 Switch 皆有 DHCP Server ,串接在一起就打架了,有什麼辦法可以串再一起又不會影響彼此的 DHCP ,一開始有想過設定 Vlan + Trunk 來隔開,後來找到另外一種更方便的方式 Switch ACL (Access Control List).
測試環境為 Edge-Core ES4650 (Power by Accton) Layer 3 Switch x 2.
兩台 Switch 串再一起的埠,可以透過 Switch ACL 功能來把 DHCP 協定阻擋 ( Deny , Block) 起來即可.
Firewall configuration
需先把 Filter 功能打開,透過 Web 在 ES4650 / ACL configuration / Filter configuration / Firewall configuration / Switch firewall configuration / Packet filtering 設定為 Open (Firewall default action 預設為 accept),不然在 Attach ACL to port 會顯示以下的錯誤訊息.
Warning: firewall is disable, we can't attach ACL for Port
DHCP UDP package
設定前先來了解一下 DHCP 使用哪一種協定.
DHCP Client 向 DHCP Server 要求 IP 時主要的四個動作 ( DHCPDISCOVER , DHCPOFFER , DHCPREQUEST , DHCPACK ),如果能看到這四個動作,這就代表 Client 已經成功獲得 IP ,下面 Client 是正確透過 DHCP 獲取 IP 的過程.
15:42:31.013004 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:02:b3:af:b2:82, length 314 15:42:32.013978 IP 192.10.0.2.67 > 192.10.0.20.68: BOOTP/DHCP, Reply, length 300 15:42:32.014176 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:02:b3:af:b2:82, length 320 15:42:32.039599 IP 192.10.0.2.67 > 192.10.0.20.68: BOOTP/DHCP, Reply, length 300
主要 DHCP Client (Port 68 , 使用廣播封包 broadcast ) 與 DHCP Server (Port 67) 透過四個動作 ( DHCPDISCOVER , DHCPOFFER , DHCPREQUEST , DHCPACK ) 來獲得 IP (使用 UDP).
我們只需要把以下兩個 UDP 阻擋起來即可.
- DHCP Client (Source Port 68) 到 DHCP Server (Destnation Port 67)
- DHCP Server (Destnation Port 67) 到 DHCP Client (Source Port 68)
IP extended ACL
回到 Switch Web 設定 ES4650 / ACL configuration / Name ACL (numeric ACL 一樣可以設定,但名稱須為數字) / Extended name ACL / IP extended ACL.
同一 ALC (name 名稱或是 numeric 數字),可以同時設定多個規則.
- DHCP Client (Source Port 68) 到 DHCP Server (Destnation Port 67)
- Operation type : UDP
- List name : DHCP
- Rule : Deny
- Source address type : Any IP
- Destination address type : Any IP
- Source port : 68
- Source port :
- Destination port : 67
- Destination port :
- DHCP Server (Destnation Port 67) 到 DHCP Client (Source Port 68)
- Operation type : UDP
- List name : DHCP
- Rule : Deny
- Source address type : Any IP
- Destination address type : Any IP
- Source port : 67
- Source port :
- Destination port : 68
- Destination port :
ip access-list extended DHCP (used 1 time(s)) deny udp any-source s-port 68 any-destination d-port 67 deny udp any-source s-port 67 any-destination d-port 68
Attach ACL to port
回到 Switch Web 設定 ES4650 / ACL configuration / Filter configuration / Attach ACL to port (IP ACL , MAC ACL , MAC-IP ACL 至多只能有一條 ACL ,但一條 ACL 裡面可以有多條規則),依據自行需求的埠來設定.
- Port Ethernet : 1/1
- ACL type : IP
- List name : DHCP
- ACL attached durection : in
- Operation type : Add
設定完成, Port ethernet 1/1 將無法使用 DHCP .可以透過 tcpdump – http://benjr.tw/96904 觀察一下封包,在試過都沒問題之後要記得 Save & Exit.
另外一種方式可以用 DHCP snooping 的功能.