它会自动接受来自所有州的数据包吗?那么,以下两者之间有什么区别:
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
,因此在大多数情况下它是多余的。