使用 iptables 将出站流量重定向到内部 IP

使用 iptables 将出站流量重定向到内部 IP

我正在尝试使用 iptables 将出站流量重定向到外部 IP 地址,就像它是入站流量一样。我的设置如下;

         NET A          NET B      
|------|       |------|       |--|
|SERVER|<----->|DD-WRT|<----->|FW|<--> WAN
|------|   |   |------|       |--|
           |
|------|   |
| COMP |<--|
|------|

其中SERVER和COMP都是网络A上的计算机,DD-WRT是连接网络A和B的路由器,FW是连接网络B和WAN的大型防火墙。

我在 DD-WRT 路由器和大型防火墙上正确设置了端口转发,以便在外部计算机尝试连接到 FW 时将数据包转发到服务器。但是,当 COMP 尝试连接到 FW 时,数据包会被丢弃,因为 FW 无法识别内部发往 WAN 地址的数据包需要根据外部规则进行路由。

因此,我想以某种方式路由从 COMP 发出并发往 FW 的 WAN 地址的数据包,使其在 DD-WRT 中显示为好像它们的目的地是它的网络 B 地址,因为我知道它能够正确路由这些类型的数据包。

如果其他人有更好的建议,我当然很高兴听到!

答案1

我猜您正在对从 NET A 到 NET B 的流量进行 NAT,在这种情况下,您需要添加一条规则来排除从 NET A 发往 DD-WRT 的 NET B 地址的流量 - 类似于:

iptables -t nat -I POSTROUTING -s <net.a.ip.block/mask> -d <dd-wrt.net.b.address> -j ACCEPT

或者你可以像这样重写地址:

iptables -t nat -I PREROUTING -s <net.a.ip.block/mask> -d <dd-wrt.net.b.address> -j DNAT --to <SERVER.net.a.address>

编辑:正确地重读这个问题,你将需要第二种方法的变体:

iptables -t nat -I PREROUTING -s <net.a.ip.block/mask> -d <fw.wan.add.ress> -j DNAT --to <server.net.a.address>

相关内容