iptables 重定向范围和排除

iptables 重定向范围和排除

我有这个 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

有没有想法可以用更简单的规则将其改为以下条件:

将所有流量重定向至8080

如果目标端口匹配则排除重定向22,443,20832087

谢谢。

更新:

多端口支持最多 15 个独立端口参考:Iptables包过滤笔记

因此,我使用另一种方法直接接受定义的端口,例如 whois(port43)

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

答案1

有人可能会争辩说,这可能有助于简化规则,但它不会像预期的那样起作用。

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

条件“-option a,b”等同于“-option a OR -option b”,这恰好是从单个规则生成的 4 条规则。但是,如果将“!-option a,b”解释为“NOT (-option a OR -option b)”,则实际上是“(NOT -option a) AND (NOT -option b)”,这根本无法分解为两个规则。

相关内容