iptablesredirect范围和排除

我有这个iptables和工作。

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 0:20 -j REDIRECT --to-port 8080 #bypass SSH iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 23:442 -j REDIRECT --to-port 8080 #bypass SSL iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 444:2082 -j REDIRECT --to-port 8080 #Cpanel SSL iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2084:2086 -j REDIRECT --to-port 8080 #WHM SSL 

任何想法都可以通过更简单的规则将其变为以下条件:

将所有stream量redirect8080

如果目标端口匹配22,443,20832087 ,则排除redirect

谢谢。

更新:

多端口支持多达15个独立的端口Ref: Iptables包过滤笔记

所以,我用另一种方法来直接接受定义的端口,例如whois(port43)

 iptables -t nat -A PREROUTING -i eth0 -p tcp -m multiport \ --dports 43 \ -j ACCEPT 

有人可能会认为这可能是为了简化规则而努力,但不能按预期工作。

 iptables -t nat -A PREROUTING -i eth0 -p tcp -m multiport --dports ! 22,443,2083,2087 -j REDIRECT --to-port 8080 

“selecta,b”的条件相当于“select一个ORselectb”,这正是从单个选项中生成的4个规则。 但是,如果“!-option a,b”被解释为“NOT(-option a OR -option b)”,那实际上是“(not -option a)AND(not -option b)”,分解成两个规则。