linux服務器NAT后無法在內網通過外部IP訪問內部服務的問題


場景一:

將外網訪問192.168.100.10的80端口轉發到192.168.75.5:8000端口。
# iptables -t nat -A PREROUTING -d 192.168.100.10 -p tcp --dport 80 -j DNAT --to-destination 192.168.75.5:8000

 問題一:

我們將192.168.75.5端口為8080的服務映射至192.168.100.10的端口80上,此時192.168.100.*網段可以正常訪問到192.168.75.5:8080服務

但是無法在內網通過外部映射出去的ip和端口進行訪問

為了解決這個問題我們理清一下思路,在內網本地訪問外網映射出去ip和端口時,這時源地址必然是發生了轉換,且流量一定是流經網卡的,

那么我們可以不讓他流經網卡,讓內核來處理呢

我的思路:將本機出去的流量直接轉發到本地的8080不就能解決這個問題嗎,由於在網絡設備不支持回流的情況下,所以才想了這個方式,經過測試成功解決此問題

將本機訪問80端口的轉發到本機8080
# iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j DNAT --to 127.0.0.1:8080
# iptables -t nat -A OUTPUT -p tcp -d 192.168.100.10 --dport 80 -j DNAT --to 127.0.0.1:8080

 

原因:因為NAT后網絡回流造成內網無法通過公網IP訪問應用服務器,如果服務器是放在dmz區 也就是另一個網段就不會有這個問題 

參考:https://blog.csdn.net/lllcfr/article/details/42023411


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM