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

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

我曾读过一些文章,建议如下:

iptables -A INPUT -p tcp 1000:2000 -j ACCEPT

其他人指出上述方法不起作用,并且 iptables 仅支持带有--multiport选项的多个端口声明。

是否有正确的方法使用 iptables 打开多个端口?

答案1

这是正确的方法:

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

举个例子。来源这里

答案2

尽管你写错了(你忘记了--dport),但你所听到的是正确的。

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

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

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

答案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

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

玩得开心。

答案4

还有另一种方法,可以直接在 Iptables 文件中添加条目。位置/etc/sysconfig/iptables

-A INPUT -p tcp -m multiport --dports 1024:3000 -m state --state NEW -j ACCEPT

之后重新启动 iptable 服务

相关内容