Iptables

iptables - 允許通過集合轉發規則

  • July 15, 2021

我正在建構一個強制門戶(是的,只是另一個;))現在我嘗試處理核心功能,即 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

這應該工作,但它沒有!所以,如果我將預設FORWARDACCEPT更改為並將規則更改為反向:

$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。

引用自:https://unix.stackexchange.com/questions/658488