用iptables改变目的地址

我使用Debian(Linux),并尝试更改从端口80传入数据包的目的地。这里的设置:我有我的防火墙有两个地址和Web服务器有两个地址。

例:

防火墙

Internal adress: 10.3.3.13 External adresss: 206.167.200.213 

networking服务器

 Internal adress: 10.3.3.6 External adress: 206.167.200.206 

我需要将传入的连接从防火墙上的端口80redirect到Web服务器上的端口80。

这里是我在Debian中使用的命令行:

 iptables -t nat -A PREROUTING -i eth0 -p tcp -d 10.3.3.6 --dport 80 -j DNAT --to 10.3.3.6 iptables -A INPUT -p tcp -m state --state NEW --dport 80 -i eth0 -j ACCEPT 

为什么这个命令不工作? 当我input防火墙的外部地址时,redirect不起作用,最终导致防火墙的默认网页。

我find了解决办法,下面是做到这一点的方法:

 # Redirect incoming connexion to port 80 on the web server iptables -t nat -A PREROUTING -p tcp -d $FIREWALL_INT_IP --dport 80 -j DNAT --to-destination $SERVER_INT_IP:80 iptables -t nat -A POSTROUTING -p tcp -d $SERVER_INT_IP -j SNAT --to $FIREWALL_INT_IP iptables -A FORWARD -p tcp -i eth0 -d $SERVER_INT_IP --dport 80 -j ACCEPT iptables -A FORWARD -p tcp -o eth0 -s $SERVER_INT_IP --sport 80 -j ACCEPT 

试试这个

 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 10.3.3.13:80 -j REDIRECT --to-port 10.3.3.6:80 iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 206.167.200.213:80 -j REDIRECT --to-port 206.167.200.206:80