我到处都看到“-p tcp -m tcp”,但它看起来多余。
如果“-p”已经与协议匹配,为什么还要“-m”?
答案1
首先这似乎是多余的,因为 iptables 已经自动加载了一些模块。您可以-p
指定协议,在其中-m
创建一个匹配参数来检查 TCP 数据包的特定属性。
该文档指定使用 protocol( -p
) 足以加载所有匹配的内容。来源并引用:
...这些匹配在某种意义上是隐式加载的,就像 UDP 和 ICMP 匹配是隐式加载的一样。其他匹配将在本节的后续部分(TCP 匹配部分之后)中查看。
multiport
当您必须过滤多个端口并且您知道匹配项不会以与匹配项相同的方式加载时,使用此匹配项将很有意义tcp
。例子:
# iptables -I INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
长话短说:它们并不多余。它只是一个简写,就像您不需要-t filter
为每个规则声明默认 table( ) 一样。