如果我省略iptables规则中的“-m状态”会有什么问题?

它会自动接受来自所有状态的数据包吗? 在那张纸上,有什么区别:

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

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

什么是build议日常使用?

另外,我看到有些人使用“-p tcp -m tcp”符号,有些人只是把“-p tcp”。 在指定协议之后立即加上“-m tcp”是否正确?

这是我第一次configurationiptables,我想知道我所做的一切。

如果在iptables命令中使用-m <match> ,则可以指定命令可以使用该模块中的函数来testing/匹配数据包的某些属性。 -m state可能是最常见的,但是在iptables中有很多有趣的匹配器,用于处理速率限制,配额等,您可以在这里find匹配器名称组织的可用概述。

你可以在同一个文档中find-m tcp和-m状态的描述,而-m conntrack部分可以很好地描述状态名称的含义。 简而言之, NEW,ESTABLISHED表示传入的连接请求,以及与双向传输相关的传入数据包,即build立的连接。 如果你没有指定任何–state,iptables将不会区分NEW,ESTABLISHEDINVALID,RELATED,UNTRACKED等其他状态INVALID,RELATED,UNTRACKED只允许所有传入数据包到端口22。

对于经常使用,我喜欢精确地描述我允许的内容,这就是为什么我通常会使用--state NEW,ESTABLISHED ,尽pipe在我看来这不是完全必要的。

对于-m tcp ,您可以从链接的文档中看到,它为您提供了其他与TCP相关的匹配程序,如--tcp-flags 。 正如我所知道的那样,你并不需要它--dest-port/--dport --source-port/--sport或者--dest-port/--dport ,所以在大多数情况下它是多余的。