iptables - 允许按设置转发规则

iptables - 允许按设置转发规则

我正在构建一个强制门户(是的,只是另一个;)),现在我正在尝试处理核心功能,即 iptables 规则。基于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已经添加了模块,但现在计算了来自客户端的“上传”流量,我如何(在单独的计数器中)也计算下载流量?

答案1

在第一个规则集中,您只允许指定的传出流量-i $LAN:因此回复将被过滤掉。只需删除 -i $LAN` 就可以工作?

但在这种情况下,将统计整个流量(上传+下载)如果您想单独统计上传和下载,您可能需要创建两个标记策略:

  • 一个用于上传,其中源代码mac 已标记
  • 一个用于下载,在哪里目的地mac 已标记。

相关内容