解决iptables DNAT不生效

DNAT不生效,如果命令都是正确的,那么问题就出在操作不完整,只做了DNAT配置的一部分。完整步骤如下

0、场景介绍

192.168.1.81:ip81服务器上,启了一个nginx,端口80

192.168.1.57:ip57服务器,在这台上添加防火墙规则,让其他服务器能够通过ip57的800端口访问ip81的web服务

192.168.1.222:ip222服务器为同一内网中的验证服务器,验证DNAT是否配置成功

以下操作均在ip57上执行

1、打开内核转发功能

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

2、添加PREROUTING链规则

ip81 ----------------- ip57 <--------修改这个方向----------- ip222

iptables -t nat -A PREROUTING -p tcp -d 192.168.1.57 --dport 800 -j DNAT --to 192.168.1.81:80

注:DNAT、SNAT分别有一个--to-destination和--to-source的选项,但都可以简写为--to

3、添加POSTROUTING链

必须还要做一个SNAT,让目标服务器能够把数据传回来

ip81 <--------修改这个方向----------- ip57 ----------------- ip222

iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.81 --dport 80 -j SNAT --to 192.168.1.57

4、验证

登录到验证服务器ip222

curl 192.168.1.57:800

如果按照本文配置,那么改命令已经能返回网页数据了,且从ip81上查看日志, 客户端是ip57

猜你喜欢

转载自blog.csdn.net/CHEndorid/article/details/107139022