如果我省略 iptables 规则中的“-m state”,会发生什么?

如果我省略 iptables 规则中的“-m state”,会发生什么?

它会自动接受来自所有州的数据包吗?那么,以下两者之间有什么区别:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

建议日常使用什么?

另外,我发现有些人使用“-p tcp -m tcp”表示法,而有些人只输入“-p tcp”。在指定协议后立即输入“-m tcp”是否正确?

这是我第一次配置 iptables,我希望对自己所做的每一件事保持清醒的认识。

答案1

-m <match>iptables 命令中,您指定该命令可以使用该模块中的函数来测试/匹配数据包的某些属性。-m state也许是最常见的,但也有iptables 中提供了一些有趣的匹配器,用于执行诸如速率限制、配额等操作,您可以找到可用内容的概述这里,按匹配器名称组织。

您将找到以下描述-m tcp-m 状态在同一文件中,-m 连接跟踪部分很好地描述了状态名称的含义。简而言之,NEW,ESTABLISHED表示传入的连接请求,以及与双向流量(即已建立的连接)相关的传入数据包。如果您根本没有指定任何 --state,iptables 将不会区分NEW,ESTABLISHED和其他状态INVALID,RELATED,UNTRACKED,而只是允许所有传入数据包进入端口 22。

对于常规使用,我喜欢精确地了解我允许通过的内容,这就是我通常使用的原因--state NEW,ESTABLISHED,尽管在我看来这不是完全必要的。

对于-m tcp,您可以从链接的文档中看到它为您提供了其他与 TCP 相关的匹配器,例如--tcp-flags。据我所知,您不需要它--source-port/--sport--dest-port/--dport,因此在大多数情况下它是多余的。

相关内容