前言:对于Linux服务器而言,一般服务器不会直接提供公网地址给用户访问,服务器在企业防火墙后面,通常只是暴露一个公网给用户,下面已80端口进行实现。
演示环境:VM
(1)host:
172.16.100.6(假设是互联网用户)
(2)提供公网的服务器netfilter:
192.168.31.168 80端口暴露给用户
(3)后端服务器realserver:
192.168.31.167 8080端口提供服务,nginx作为服务器
1、首先我们用我们的宿主机访问8080,验证服务是否正常
服务OK;
2、netfilter添加DSAT转换规则:
iptables -t nat -A PREROUTING -d 192.168.31.168 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.31.167:8080
3.host访问192.168.31.168 80端口,验证是否OK
OK,访问正常。
nginx后端日志可以看到host的访问记录:
很简单的实现了DNAT。
那么我们的宿主机能不能直接访问192.168.31.168:80呢,答案是不可以,这个可以自己下去思考。
总结:防火墙可以实现内部主机对外服务,DNAT:iptables -t nat -A PREROUTING -d 192.168.31.168 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.31.167:8080;
我们可以称他为地址映射,端口转换。