前言:對於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;
我們可以稱他為地址映射,端口轉換。