Iptables

Linux iptables 根據 mac 地址丟棄流量

  • February 25, 2014

我正在使用一個 nic 在我的 linux VM 上進行一些測試,我想將它用作某種防火牆,它可以根據 mac 地址阻止某些客戶端的流量。

客戶端本身將 VM 作為預設網關 (.254),VM 本身將 (.1 實際路由器) 作為預設網關。

這是我目前正在使用的 iptable 腳本。我的客戶端上有網際網路,但 .14 仍然可以上網,使用 mac 地址時,沒有任何內容被阻止。

我錯過了什麼嗎?

   # Generated by iptables-save v1.4.14 on Sun Feb 23 12:16:26 2014
*filter
:INPUT ACCEPT [869:78983]
:FORWARD ACCEPT [1183:197765]
:OUTPUT ACCEPT [644:128360]
# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

# log iptables denied calls (access via 'dmesg' command)
-P FORWARD DROP
-F FORWARD
-A FORWARD -i eth0 -m mac --mac-source 64:20:0c:ac:f4:49 -j DROP
-A FORWARD -i eth0 -s 192.168.1.14 -j DROP
-A FORWARD -i eth0 -j ACCEPT
# Reject all other inbound - default deny unless explicitly allowed policy:
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT
# Completed on Sun Feb 23 12:16:26 2014

您需要將這些規則放在網關 .254 上,該網關由 .14 使用。

如果您需要在 .1 網關級別阻止 .14,則需要確保使用來自 .14 的 MAC 地址的數據包正在到達誰,如果數據包通過 NAT 由 .254 轉發,那麼這些數據包將被重新打包.254 MAC 地址。

我建議您為無法直接連接到 .1 網關的客戶端 .14 創建一個子網。

MAC 地址過濾需要在 PREROUTING 鏈中進行,當數據包到達 FORWARD 鏈時,MAC 地址已經被重寫為(內部)iptables 網橋的地址。

有關更詳細的說明,請參見http://ebtables.sourceforge.net/br_fw_ia/br_fw_ia.html#section8的第 9 段。

在設置預設策略(-F FORWARD 行)後,您還刷新了 FORWARD 鏈,我懷疑您是否想要這樣做(它恢復了預設策略 ACCEPT)。

我不明白為什麼“-A FORWARD -i eth0 -s 192.168.1.14 -j DROP”沒有阻止該源 IP,但無論如何你不應該在那裡需要“-i eth0”。您確定 1.14 使用 254 作為預設 gw 嗎?

iptables -L -v發布輸出以查看實際載入的內容也將有所幫助。

引用自:https://serverfault.com/questions/578013