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

Pau*_*ley 68 linux iptables linux-networking

我遇到过以下建议的文章:

iptables -A INPUT -p tcp 1000:2000 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

其他人则表示上述方法不起作用,iptables 仅支持带有该--multiport选项的多个端口声明。

有没有用iptables打开许多端口的正确方法?

Nat*_*n C 73

这是正确的方法:

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

举个例子。来源在这里

  • 如果你不知道规则集的状态,`-I` 比 `-A` 更安全一些。 (6认同)
  • @Iain 然而,一些规则集在开始时也有过滤或速率限制数据包的规则,所以值得指出的是,如果你不知道规则集,`-I` 并不*总是*安全。 (4认同)
  • @jayhendren 我想你刚刚做了,还注意到我说的有点不是_总是_。 (3认同)
  • @jayhendren 许多规则集将在 INPUT 和其他表的末尾有一个默认的删除所有规则,例如`-A INPUT -j REJECT --reject-with icmp-host-prohibited`。使用 `-A` 在表格的末尾添加规则,在最终规则之后,因此它永远不会被视为 netfilter 在第一场比赛获胜的基础上工作。使用`-I` 将规则插入到表的开头,因此它将始终被考虑。 (2认同)

Mad*_*ter 63

你被告知的是对的,虽然你写错了(你已经忘记了--dport)。

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

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

请注意,规则的顺序很重要,并且(正如 Iain 在其他地方的评论中提到的),您的工作是确保您添加的任何规则都在有效的地方。

  • 这是正确答案;它更彻底。 (4认同)

小智 12

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

有奔。