Iptables
iptables - 允許通過集合轉發規則
我正在建構一個強制門戶(是的,只是另一個;))現在我嘗試處理核心功能,即 iptable 規則。基於
ipset
我有一個帶有 name 的有效 MAC 地址列表allow-mac
。所以這是目前的配置(剝離到問題本身):echo 1 >/proc/sys/net/ipv4/ip_forward ipset create allow-mac hash:mac counters ipset add allow-mac XX:XX:XX:XX:XX:XX IPT="/usr/sbin/iptables" WAN="eth0" LAN="eth1" $IPT -P FORWARD DROP $IPT -t nat -A POSTROUTING -o $WAN -j MASQUERADE $IPT -I FORWARD -i $LAN -m set --match-set allow-mac src -j ACCEPT
這應該工作,但它沒有!所以,如果我將預設
FORWARD
鏈ACCEPT
更改為並將規則更改為反向:$IPT -P FORWARD ACCEPT $IPT -I FORWARD -i $LAN -m set ! --match-set allow-mac src -j DROP
我得到了想要的結果,只有列表中具有已知 MAC 地址的客戶端才能轉發。
所以我的問題是,為什麼第一個設置不起作用?我的第二個缺少的功能是,如果已經添加了
counters
模組,但是現在計算來自客戶端的“上傳”流量,我怎麼能(在單獨的計數器中)也計算下載流量?謝謝,沃爾克。
在第一個規則集中,您只允許您指定的傳出流量
-i $LAN
:因此將過濾掉回复。它可能只需刪除 -i $LAN` 就可以工作嗎?但是在這種情況下,將計算整個流量(上傳+下載)如果要分別計算上傳和下載,您可能必須創建兩個標記策略:
- 一個用於上傳,其中src mac 被標記
- 一個用於下載,其中標記了dst mac。