使用 iptables 是否可以在一条规则中否定多个 IP 范围?

使用 iptables 是否可以在一条规则中否定多个 IP 范围?

我想记录所有外部(而非我们的 IP 块)到端口的连接。对于单个范围,规则如下:

-A INPUT ! -s 10.20.0.0/16 -p tcp -m tcp --dport 8443 -m state --state NEW  -j LOG --log-level 1 --log-prefix "New 8443 Connection"

8443从逻辑上讲,这个想法是,如果连接来自10.20.0.0/16或 ,则不记录到端口的连接10.30.0.0/16。我是否使用错误的 iptables 逻辑来解决问题?使用 iptables 是否可能做到这一点?

请注意,这些只是示例 IP 范围,而不是我想要停止写入日志条目的 IP 范围。

答案1

您可以使用 ipset:

-A INPUT -p tcp -m tcp --dport 8443 -m set ! --match-set OUR_IP4 src -j LOG

请注意,必须使用单独的工具(包括启动时创建/恢复)来维护 ipset。

您可以使用子链:

-A INPUT -p tcp -m tcp --dport 8443 -j FOOSERVICE

-N FOOSERVICE
-A FOOSERVICE -s 10.20.0.0/16 -j RETURN
-A FOOSERVICE -s 10.30.0.0/16 -j RETURN
-A FOOSERVICE -j LOG --log-prefix "New connection to foo: "
-A FOOSERVICE -j RETURN
   # optional; subchains always return at the end

相关内容