为什么我需要与 iptables 中的默认行为相同的额外规则?

为什么我需要与 iptables 中的默认行为相同的额外规则?

我正在尝试了解以下 iptables 配置文件:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
# Allow WiFi AP traffic over 80 & 8080
-A INPUT -i p2p0 -p tcp --dport 80 -j ACCEPT
-A INPUT -i p2p0 -p tcp --dport 8080 -j ACCEPT
# Drop any traffic to port 80 & 8080
-A INPUT -p tcp -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m tcp --dport 8080 -j DROP
-A INPUT -i wlan0 -p tcp --dport 1502 -j DROP
COMMIT

我的问题是,如果默认的 INPUT 链是接受的,那么为什么我需要这两个其他规则来接受 WIFI 连接?

另外关于这一行:

-A INPUT -p tcp -m tcp --dport 80 -j DROP

'-m tcp' 的用途是什么?如果我这样做会有什么不同:

-A INPUT -p tcp --dport 80 -j DROP

先感谢您。

答案1

规则按顺序处理。如果没有相关ACCEPT规则,p2p0则无论链的默认设置如何,数据包都会与后续规则匹配并被丢弃INPUT

-m tcp加载 TCP 模块;iptables否则不知道 TCP 端口号和其他此类协议详细信息。如果您添加规则而不添加,-m tcp则 iptables 将为-p tcp规则添加该规则:

[root@localhost]~# iptables -A INPUT -p tcp --dport 12345 -j DROP
[root@localhost]~# iptables-save | grep 12345
-A INPUT -p tcp -m tcp --dport 12345 -j DROP
                ^^^^^^

顺便说一句,您可能希望允许环回接口上的流量。

相关内容