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
扫描二维码关注公众号,回复:
14577348 查看本文章

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