多端口扩展对可指定的端口有限制 (15)。
但是我需要在单个规则中指定更多端口号,因此我尝试在一个规则中使用多个多端口,例如:
iptables -A INPUT -p tcp -m multiport --destination-ports 59100 -m multiport --destination-ports 3000 -m state --state NEW -j REJECT --reject-with tcp-reset
iptables -L INPUT -n
的结果是
Chain INPUT (policy ACCEPT)
target prot opt source destination
REJECT tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 59100 multiport dports 3000 state NEW reject-with tcp-reset
但事实证明,当我尝试从客户端连接时,这两个端口都没有被拒绝。
版本为v1.4.2-rc1。
是否有解决方法,或者当我需要在一条规则中指定超过 15 个端口时该怎么办。
最佳答案
作为解决此限制的方法,我使用两条规则来涵盖所有情况。
例如,如果我想允许或拒绝这 18 个端口:
465,110,995,587,143,11025,20,21,22,26,80,443,3000,10000,7080,8080,3000,5666
我使用以下规则:
iptables -A INPUT -p tcp -i eth0 -m multiport --dports 465,110,995,587,143,11025,20,21,22,26,80,443 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 -m multiport --dports 3000,10000,7080,8080,3000,5666 -j ACCEPT
上述规则也适用于您的场景。如果您在第一条和第二条规则上都达到 15 个端口限制,则可以创建另一条规则。
关于iptables 在一条规则中设置多个多端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6384817/