使用 iptables 更改目标地址

使用 iptables 更改目标地址

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

例子:

防火墙

Internal adress: 10.3.3.13
External adresss: 206.167.200.213

网络服务器

Internal adress: 10.3.3.6
External adress: 206.167.200.206

我需要将传入连接从防火墙的端口 80 重定向到 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

为什么这个命令不起作用?当我输入防火墙的外部地址时,重定向不起作用,我最终进入防火墙的默认网页。

答案1

我找到了解决方案,具体方法如下:

# 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

答案2

尝试这个

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

相关内容