我有这个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量redirect到8080
如果目标端口匹配22,443,2083和2087 ,则排除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)”,分解成两个规则。