从具有 ip 和端口范围的 iptable 规则中排除带有端口的特定 IP

从具有 ip 和端口范围的 iptable 规则中排除带有端口的特定 IP

需要帮助创建一个 iptable 规则,它将 ip 范围 172.16.0.1 到 172.16.0.120(端口范围 20-8081)的所有请求重定向到侦听端口 22215 的 localhost 服务,但此规则不应捕获端口 443 的 ip 172.16.0.111(即 172.16.0.111:443 应直接通过互联网访问)。

iptables -t nat -A OUTPUT -p tcp --match multiport --dport 20:8081 -m iprange --dst-range 172.16.0.1-172.16.0.120 -j DNAT --to-destination 127.0.0.1:22215
iptables -t filter -A INPUT -p tcp --match multiport --dport 20:8081 -m iprange --dst-range 172.16.0.1-172.16.0.120 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 20:8081 -m iprange --dst-range 172.16.0.1-172.16.0.120 -j ACCEPT

应用上述规则后,所有 IP 和端口在上述范围内的请求都将重定向到 127.0.0.1:22215。但我不知道如何排除具有端口 443 的 ip 172.16.0.111。

答案1

防火墙规则是从上到下处理的。将特定规则放在顶部,将通用规则(包罗万象的规则)放在底部。无论你想做什么172.16.0.111:443,它的规则都必须放在最上面(在你发布的三个规则之前)

iptables -I INPUT --src 172.16.0.111 -p tcp --dport 443 -j ACCEPT
iptables -I OUTPUT --src 172.16.0.111 ACCEPT
iptables -t nat -A OUTPUT -p tcp --match multiport --dport 20:8081 -m iprange --dst-range 172.16.0.1-172.16.0.120 -j DNAT --to-destination 127.0.0.1:22215
iptables -t filter -A INPUT -p tcp --match multiport --dport 20:8081 -m iprange --dst-range 172.16.0.1-172.16.0.120 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 20:8081 -m iprange --dst-range 172.16.0.1-172.16.0.120 -j ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

注意:您可能希望通过提供源或目标端口号来收紧规则 #2。

相关内容