我遇到过以下文章,建议您这样做: />
是否有使用iptables打开许多端口的正确方法?

评论

相关问题:iptables和多个端口

#1 楼

这是正确的方法:

iptables -A INPUT -p tcp --match multiport --dports 1024:3000 -j ACCEPT

作为示例。来源在这里。

评论


如果您不知道规则集的状态,则-I比-A更安全。

–user9517
14年5月13日在17:11

@Iain,能否请您解释其背后的原因?

– Jayhendren
14年5月13日在19:04

@jayhendren许多规则集将默认删除所有规则,例如-A INPUT -j REJECT --INPUT和其他表的末尾禁止带icmp-host。使用-A将规则添加到表的末尾,即最终规则之后,因此它将不会被视为netfilter在第一个比赛获胜的基础上起作用。使用-I将规则插入表ans的开头,因此将始终考虑该规则。

–user9517
2014年5月13日19:14

@Iain但是,某些规则集的开头也有过滤或速率限制数据包的规则,因此有必要指出-如果您不知道规则集,我并不总是更安全。

– Jayhendren
2014年5月13日19:24



@jayhendren我想您刚刚做了,还请注意我说的并不总是如此。

–user9517
2014年5月13日19:26



#2 楼

被告知的是对的,尽管您写错了(您忘记了--dport)。
仅当您要打开的范围不是连续的时才需要iptables -A INPUT -p tcp --dport 1000:2000,例如-m multiport --dports,它将仅打开HTTP和HTTPS-而不是两者之间。

请注意,规则很重要,而且(正如伊恩在其他地方的评论中所暗示的那样),确保添加的任何规则都在有效的地方是您的工作。

评论


如果您愿意的话,我也可以在这里提及;)

–user9517
14年5月13日在17:28

嘻嘻嘻!继续,那么,该消息值得重复!

– MadHatter
14年5月13日在18:37

这是正确的答案;它更彻底。

–安德鲁·科扎克(Andrew Kozak)
16 Mar 7 '16 at 18:33

#3 楼

TL; DR但是...

不带多端口模块的纯端口范围:
iptables -A INPUT -p tcp --dport 1000:2000 -j ACCEPT

等效的多端口示例:
iptables -A INPUT -p tcp -m multiport --dports 1000:2000 -j ACCEPT

...以及具有多个范围的多端口的变体(是的,这也是可能的): /> iptables -A INPUT -p tcp -m multiport --dports 1000,1001,1002:1500,1501:2000 -j ACCEPT

保持警惕。

#4 楼

根据man iptables-extensions,您可以仅使用--dport开关来定义端口范围。

tcp
如果指定了`--protocol tcp',则可以使用这些扩展名。它提供以下选项:
[!] --destination-port,-dport port [:port]

目标端口或端口范围规范。标志--dport是此选项的方便别名。

因此,这也指定了端口范围:iptables -A INPUT -p tcp --dport 1000:2000 -j ACCEPT