在iptables中打开一系列端口的正确方法是什么


Answers:


60

这是正确的方法:

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

举个例子。来源在这里


5
如果您不知道规则集的状态,则状态会-I-A
user9517支持GoFundMonica 2014年

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

2
@jayhendren许多规则集都有一个默认的丢弃所有规则,例如-A INPUT -j REJECT --reject-with icmp-host-prohibited在INPUT和其他表的末尾。-A在最终规则之后,using 将规则添加到表的末尾,因此不会被视为netfilter在第一个比赛获胜的基础上起作用。使用-I将规则插入到表ans的开头,因此将始终考虑该规则。
user9517支持GoFundMonica 2014年

4
@Iain但是,某些规则集的开头也有过滤或速率限制数据包的规则,因此值得指出的是,如果您不知道规则集,-I它并不总是更安全。
jayhendren 2014年

3
@jayhendren我想你刚刚做了,还请注意我说的并不总是如此
user9517支持GoFundMonica 2014年

54

尽管您写错了(忘记了--dport),但被告知的是对的。

iptables -A INPUT -p tcp --dport 1000:2000 将打开到TCP端口1000到2000的入站流量。

-m multiport --dports仅在您要打开的范围不是连续的范围时才需要,例如-m multiport --dports 80,443,这将打开HTTP和HTTPS,而不会打开两者之间的范围。

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


1
如果您需要的话,我也可以在这里暗示;)
user9517支持GoFundMonica 2014年

1
嘻嘻嘻!继续,然后,该消息值得重复!
MadHatter 2014年

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

10

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

...以及带负号的等效多端口多范围示例: iptables -A INPUT -p tcp -m multiport ! --dports 0:999,2001:65535 -j ACCEPT

有朋。

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.