我刚刚注意到 /etc/sysconfig/iptables 中有一个条目,内容如下-A INPUT -p tcp -m tcp --dport 138 -j DROP
我不太清楚为什么这里要有两个开关来匹配 TCP 协议,即-p tcp
和-m tcp
。它们之间有什么区别吗?
答案1
-p要检查的规则或数据包的协议。
指定的协议可以是 tcp、udp、icmp 或 all,也可以是数值,表示这些协议之一或其他协议。也可以使用 /etc/protocols 中的协议名称。协议前的“!”参数会反转测试。数字零相当于 all。协议 all 将与所有协议匹配,并在省略此选项时将其作为默认值。
-m指定要使用的匹配,即测试特定属性的扩展模块。
匹配集构成调用目标的条件。匹配按照命令行中指定的方式从头到尾进行评估,并以短路方式工作,即如果一个扩展结果为假,则评估将停止。
添加信息
-m还匹配指定协议名称的数据包。如果协议名称前面有“!”,则匹配所有不属于指定协议的数据包。有效的协议名称为 icmp、udp、tcp... 可以在文件 /etc/protocols 中找到所有有效协议的列表。所以我认为可以安全地省略-m
来源:IPtables 手册页