我正在尝试使用iptables将出站stream量redirect到外部IP地址,就好像它是入站stream量一样。 我的设置如下;
NET A NET B |------| |------| |--| |SERVER|<----->|DD-WRT|<----->|FW|<--> WAN |------| | |------| |--| | |------| | | COMP |<--| |------|
其中SERVER和COMP都是networkingA上的计算机,DD-WRT是连接networkingA和B的路由器,FW是将networkingB连接到WAN的大型防火墙。
当外部计算机试图连接到FW时,我的DD-WRT路由器和大型防火墙上的端口转发设置正确。 但是,当COMP尝试连接到FW时,数据包被丢弃,因为FW不能识别内部发往WAN地址的数据包是按照外部规则路由的。
因此,我想以某种方式将来自COMP发往FW的广域网地址的数据包路由到DD-WRT,就好像它们指向它的networkingB地址一样,因为我知道它能够正确地路由这些types的数据包。
如果有人有更好的build议,我当然会很高兴听到!
我猜你正在为从NET A到NET B的stream量做NAT,在这种情况下,您需要添加一个规则,以排除来自NET A的指向DD-WRT的NET B地址的stream量 – 类似:
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>