具有-m和-p参数的iptables


8

我的iptables中有以下规则:

iptables -A INPUT -p tcp -m tcp --dport 9191 -j DROP

我真的需要“ -m tcp”吗?我已经在使用“ -p tcp”了,所以我应该使用“ -m tcp”更安全吗?

Answers:


9

使用该-p tcp选项,tcp模块已经加载,因此它有点多余,并且不是必须使用该-m tcp选项,我看不出使用此选项会使规则更安全的任何原因。

请参阅iptables手册页以获得更好的理解和比较:

-p,-protocol [!]协议

规则或要检查的数据包的协议。指定的协议可以是tcp,udp,icmp或所有协议之一,也可以是代表这些协议之一或不同协议的数字值。还允许/ etc / protocols中的协议名称。一个 ”!” 协议反转测试之前的参数。数字零等于全部。协议全部将与所有协议匹配,并且在省略此选项时将其作为默认值。

...

比赛扩展

iptables可以使用扩展的数据包匹配模块。它们以两种方式加载:隐式地,当指定-p或--protocol时,或者使用-m或--match选项,后跟匹配的模块名称;之后,取决于特定的模块,可以使用各种其他命令行选项。您可以在一行中指定多个扩展匹配模块,并且可以在指定模块后使用-h或--help选项来接收特定于该模块的帮助。

有关可用选项的列表,请-p tcp参见此处:

http://ipset.netfilter.org/iptables-extensions.man.html#lbCF

如上所述,通过使用-m选项,可以添加扩展模块,然后可以使用更多匹配选项。例如cpu模块

中央处理器

[!] --cpu号

匹配处理此数据包的cpu。cpus的编号从0到NR_CPUS-1。可以与RPS(远程数据包导向)或多队列NIC结合使用,以将网络流量分布在不同的队列上。

例:

iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 0 -j REDIRECT --to-port 8080

iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 1 -j REDIRECT --to-port 8081

自Linux 2.6.36起可用。

iptables-extensions的完整列表


OP的另一个问题:我不明白-m匹配什么。什么弦 -m tcp匹配什么?它试图在哪里找到“ tcp”一词?

答:-m是为了匹配模块名称而不是字符串。通过使用特定的模块,您可以获得某些匹配的选项。请参阅上面的cpu模块示例。随着-m tcp模块tcp被加载。tcp模块允许某些选项:--dport, --sport, --tcp-flags, --syn, --tcp-option在iptables规则中使用。但是使用-p tcp已经启用的tcp模块,这就是为什么即使不使用也可以使用那些选项的原因-m tcp。希望它能消除您的所有困惑。


非常感谢您,但是请您告诉我-m匹配什么?例如,正常的TCP连接-m将与什么字符串匹配?您能否提供一个字符串示例
Samul,2016年

1
别客气。如您所见,-moption实际上是用于加载的extension modules,它提供了额外的选项。例如,请参阅我的更新答案和链接。
钻石

谢谢!:)最后一个想法:我认为就我而言,我应该保持“ -m”正确吗?看到以下内容:iptables -A INPUT -p tcp -m tcp --dport 9191 -j DROP我使用“ --dport”,我认为只有在使用-m正确的情况下才可以使用--ddport吗?
Samul

@Samul,不是。您可以不-m tcp选择使用它。--dport是tcp模块的一部分,-p tcp仅可使用。请再次参考我的答案。
钻石

您非常友善,谢谢!但是请参阅:我不明白-m的含义。什么弦 -m tcp匹配什么?它试图在哪里找到“ tcp”一词?
Samul
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.