我曾读过一些文章,建议如下:
iptables -A INPUT -p tcp 1000:2000 -j ACCEPT
其他人指出上述方法不起作用,并且 iptables 仅支持带有--multiport
选项的多个端口声明。
是否有正确的方法使用 iptables 打开多个端口?
答案1
答案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 服务