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

我遇到过有关以下内容的文章:

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

还有一些人指出上述方法不起作用,iptables只支持使用--multiport选项的多个端口声明。

有没有一个正确的方法来打开许多端口与iptables?

这是正确的方法:

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

举个例子。 来源于此 。

你被告知是正确的,虽然你写错了(你忘记了 – --dport )。

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

-m multiport --dports只在你想打开的范围不连续时才需要,例如-m multiport --dports 80,443 ,它只会打开HTTP和HTTPS – 不是中间的那个。

请注意,规则的sorting是重要的,(正如Iain在他的评论中暗示的那样),确保您添加的任何规则处于有效的位置是您的工作。

TL; DR但…

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

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

…和多端口多variables范围的变化(是的,这也是可能的): 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 iptables -A INPUT -p tcp -m multiport ! --dports 0:999,2001:65535 -j ACCEPT

有phun。

谢谢,斯文,我为这个问题表示抱歉。 BloodMans的第一个例子在我的情况下为我工作。 我添加了-s和一个CIDR与所需的位,并列出一个减号或破折号分隔,没有空格似乎在IPTables工作。 在我的例子中,我添加了一个CDR,-s只允许2个IP地址范围到我的特定端口。

你可以调整这个,只允许一个IP地址或者更多的IP地址到你想要的端口。

 iptables -I INPUT -p tcp --dports 5222-5223 `-s xxx253/31 xxx253-xxx254` -j ACCEPT 

我希望这有帮助。