Linux
IPTables - 埠到另一個 ip 和埠(從內部)
我目前有一個 NAS 盒子在 80 埠下執行。為了從外部訪問 NAS,我將 8080 埠映射到 NAS 上的 80 埠,如下所示:
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 10.32.25.2:80
這就像一個魅力。但是,這僅在我從網路外部(在工作中、在不同的房子等)訪問網站時才有效。因此,當我輸入 時
mywebsite.com:8080
,IPTables 可以正確完成工作,並且一切正常。現在,我遇到的問題是,如何從網路內部重定向此埠?我的域名
mywebsite.com
從內部(10.32.25.1)指向我的路由器(我的 linux 伺服器),但我想從內部將埠 8080 重定向到 10.32.25.2 上的埠 80。有什麼線索嗎?
編輯#1
為了幫助解決這個問題,我把這張圖放在一起。如果它不正確或歪曲您正在尋找的內容,請隨時更新。
iptables | .---------------. .-,( ),-. v port 80 | .-( )-. port 8080________ | | ( internet )------------>[_...__...°]------------->| NAS | '-( ).-' 10.32.25.2 ^ 10.32.25.1 | | '-.( ).-' | | | | '---------------' | | __ _ [__]|=| /::/|_|
我終於找到了方法。首先,我必須添加
-i eth1
到我的“外部”規則(eth1 是我的 WAN 連接)。我還需要添加另外兩個規則。最後我帶來了什麼:iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 8080 -j DNAT --to 10.32.25.2:80 iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to 10.32.25.2:80 iptables -t nat -A POSTROUTING -p tcp -d 10.32.25.2 --dport 80 -j MASQUERADE
您還忘了提到應該啟用包轉發才能執行目標 NAT。預設情況下,它通常是關閉的,因此 iptables 規則將不起作用。可以通過發出以下命令啟用它:
echo 1 > /proc/sys/net/ipv4/ip_forward