連接埠轉送到後端伺服器

連接埠轉送到後端伺服器

我正在我的 VPS 上使用公用 IP 來運行 openvpn 伺服器。有一個連接到 VPN 的後端伺服器。這些是 VPN 上的 IP:VPS:10.8.0.1 後端伺服器:10.8.0.2。 eth0是公共接口,tun0是VPN接口

現在,我想將後端伺服器上的連接埠 22 轉送到 VPS 上的連接埠 2200。這是我在 VPS 上所做的(基於幾個教程和已經提出的問題):

  1. 開放2200端口
  2. 啟用 IPv4 轉送
  3. 將其放入 /etc/ufw/before.rules (是的,我正在使用 ufw 並且它工作正常):

    *nat

    :預路由接受[0:0]

    : 後路由接受 [0:0]

    -A PREROUTING -i eth0 -p tcp --dport 2200 -j DNAT --to-destination 10.8.0.2:22

    -A POSTROUTING -d 10.8.0.2 -p tcp --dport 22 -j SNAT --to-source VPS-public-IP:2200

    -A 後路由 -s 10.8.0.0/24 -o eth0 -j 偽裝

  4. 重新加載 ufw 甚至重新啟動一切...

  5. 嘗試了其他解決方案,註解掉一些行(例如上面的第一個 POSTROUTING 規則)。顯然,沒有任何幫助。

的輸出nmap VPS-public-IP -p 2200表示端口已“過濾”,當我嘗試ssh 到端口2200 時,它只是掛起並且不執行任何操作,我什至沒有收到任何錯誤- 當我嘗試從VPS ssh 到後端伺服器時也會發生這種情況通過 VPN(通常有效)。我缺什麼?

答案1

對於那些可能仍在尋找解決方案的人。

取決於您的 FORWARD 策略(假設其 DROP)

iptables -t nat -A PREROUTING -p tcp -d xx.xx.xxx.xxx --dport 80 
         -j DNAT --to-destination yyy.yyy.yy.yy:80
iptables -A FORWARD  -p tcp -d yyy.yyy.yy.yy --dport 80 -j ACCEPT
Result:  x:80 --> X --y:80--> Y

iptables -t nat -A POSTROUTING -p tcp -d yyy.yyy.yy.yy --dport 80
         -j SNAT --to-source xx.xx.xxx.xxx
Result:  x:80 --> X <--y:80--> Y

iptables -A FORWARD  -p tcp -s yyy.yyy.yy.yy --sport 80 -j ACCEPT
Result:  x:80 <--> X <--y:80--> Y

也可以為本機啟動的連線新增此規則:x --> x:80

iptables -t nat -A OUTPUT -p tcp --dport 80 -d xx.xx.xxx.xxx
         -j DNAT --to-destination yyy.yyy.yy.yy:80  
Result:       
  x:80 ->- X <--y:80--> Y
     |_____V

相關內容