Switch – Block DHCP Broadcast

Loading

兩台 Switch 上皆有 DHCP Server (同網段,使用不同的 IP Range),串接在一起就打架了,有什麼辦法可以串再一起又不會影響彼此的 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 IPv4 UDP package

設定前先來了解一下 DHCP 與 BOOTP (Bootstrap Protocol) 使用哪一種協定.
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 阻擋起來即可.

  1. DHCP Client (Source Port 68) 到 DHCP Server (Destination Port 67)
  2. DHCP Server (Source Port 67) 到 DHCP Client (Destination Port 68)

IP extended ACL
回到 Switch Web 設定 ES4650 / ACL configuration / Name ACL (numeric ACL 一樣可以設定,但名稱須為數字) / Extended name ACL / IP extended ACL.
同一 ALC (name 名稱或是 numeric 數字),可以同時設定多個規則.

  1. DHCP Client (Source Port 68) 到 DHCP Server (Destination 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 :
  2. DHCP Server (Source Port 67) 到 DHCP Client (Destination 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 direction : in
  • Operation type : Add

設定完成, Port ethernet 1/1 將無法使用 DHCP .可以透過 tcpdump – https://benjr.tw/96904 觀察一下封包,在試過都沒問題之後要記得 Switch basic Configuration / Switch basic configuration / Save current running-configuration Apply Save current running-configuration.

如果只是簡單要避免使用者把自己的 DHCP Server 接上 Switch ,只需針對 DHCP UDP Source Port 67 阻擋起來即可,詳細說明請參考 https://benjr.tw/102036 .

ip access-list extended DHCP (used 1 time(s))
deny udp any-source s-port 67 any-destination 

DHCP IPv6 UDP package

作法一樣,只是需要阻擋的 UDP Port (埠) 不一樣.來看一下 Client 端是如何透過 DHCPv6 來獲得 IPv6 的.

類似於 IPv4 的 DHCP ,客戶端主要使用 UDP port 546 而服務器端使用 UDP port 547 .雖類似於 DHCPv4 但不同的是 IPv6 已經不使用 Broadcast 的方式.

假如 Server 的 link-local address 是 fe80::0011:22ff:fe33:5566/64
以及 client 的 link-local address 是 fe80::aabb:ccff:fedd:eeff/64

主要會透過下面的步驟讓 Client 得到 IP (v6).
過程中會使用 IPv6 multicast addresses
ff02::1:2 – All DHCP servers and relay agents on the local network segment (defined in RFC 3315)

  1. DHCPv6 client sends a Solicit from [fe80::aabb:ccff:fedd:eeff]:546 for [ff02::1:2]:547.
  2. DHCPv6 server replies with an Advertise from [fe80::0011:22ff:fe33:5566]:547 for [fe80::aabb:ccff:fedd:eeff]:546.
  3. DHCPv6 client replies with a Request from [fe80::aabb:ccff:fedd:eeff]:546 for [ff02::1:2]:547.
  4. DHCPv6 server finishes with an Reply from [fe80::0011:22ff:fe33:5566]:547 for [fe80::aabb:ccff:fedd:eeff]:546.

照上面的設定方式將以下兩個 UDP 埠阻擋起來即可.

  1. DHCP Client (Source Port 546) 到 DHCP Server (Destination Port 547)
  2. DHCP Server (Source Port 547) 到 DHCP Client (Destination Port 546)

另外一個與 IPv6 位址分配相關的服務是 RADVD (Router Advertisement Daemon) ,詳情請參考 https://benjr.tw/94906 ,該服務使用 ICMPv6 協定,需一併阻擋起來 (但可能會有其他副作用).

DHCP snooping

Switch 有一個功能是 DHCP snooping 的功能,還沒試過.

沒有解決問題,試試搜尋本站其他內容

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料