Iptables
Linux iptables 根據 mac 地址丟棄流量
我正在使用一個 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
發布輸出以查看實際載入的內容也將有所幫助。