IPtables:不重定向特定 IP

IPtables:不重定向特定 IP

我正在尝试使用以下方法将所有网络流量重定向到计算机:

iptables -t nat -A PREROUTING -p tcp  –destination-port 80 -j REDIRECT –to-port 1000

它可以工作,但我想添加一条规则以便不将流量重定向到特定的目标 IP(例如:facebook.com)

在 Google 上找不到。提前致谢!

答案1

我注意到,您给出的示例目标 IP 实际上不是 IP 地址(这才是关键iptables),而是一个完全合格的域名。但是,让我们假设您确实引用了一个 IP 地址,并且假设它是198.51.100.1 (符合我们的有关示例 IP 地址的建议)。

如果只有一个地址需要豁免,您可以将其作为明确豁免添加到规则中:

iptables -t nat -A PREROUTING -p tcp --dport 80 \! -d 198.51.100.1 -j REDIRECT --to-port 1000

请注意使用反斜杠来保护否定 ( !) 免受 shell 的攻击。如果您有更多地址需要豁免,那么更简单的方法是编写与这些地址匹配的明确规则,并使用无害的处置目标完成处理,然后在最后留下一个包罗万象的规则来处理其他所有事情:

iptables -t nat -A PREROUTING -p tcp --dport 80 -d 192.0.2.0/24 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 80 -d 198.51.100.0/24 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 80 -d 203.0.113.0/24 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 1000

请注意,顺序在 iptables 规则中始终很重要。这些规则在链中的位置很重要,您需要小心谨慎才能正确执行。

编辑:您问,如果数据包与目标规则匹配ACCEPT,即豁免数据包,会发生什么情况。一旦它们匹配ACCEPT,它们将脱离PREROUTINGnat 链,并且不会对它们进行进一步处理在那个链中。他们的最终命运将由他们随后经过的其他链条中的规则和政策决定。

相关内容