我使用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