Linux

SSH 隧道 - 將本地埠暴露給遠端機器的性能替代方案?

  • May 24, 2021

我在運營商級 NAT 環境中在家中執行伺服器 A。因此,我無法直接在路由器中打開埠。我在雲託管提供商上也有伺服器 B,它有一個可以打開埠的靜態公共 IP 地址。兩台機器都執行 Ubuntu linux。

到目前為止,對我來說最好的解決方案是 SSH 隧道,但它有一個稱為 TCP-over-TCP 的性能缺陷。

我嘗試了幾種解決方案,每個解決方案都有一些問題:

  1. OpenVPN/Wireguard:我不想將伺服器 A 的全部流量路由到遠端伺服器,隻公開幾個埠(同時讓它們也可以從 LAN 訪問)
  2. ngrok:集中式服務,有幾個限制(如最大連接數等)
  3. LocalTunnel:僅限 HTTP(S)。我想轉發 TCP 流量。
  4. SSH隧道:上面討論過
  5. 大多數其他解決方案:僅集中式(非自託管)或 HTTP(S)

我還需要通過伺服器B訪問埠的客戶端的原始IP地址對伺服器A可見。我應該嘗試什麼軟體?

我想我找到了完美的工具——frp

似乎正是我想要的。

實施 IPv6。將 A 放在一個面向外部的 /64 網中。根據需要在防火牆中允許。

Internet 上的任何 IPv6 主機都可以直接訪問 A。

IPv4 更複雜。可以通過第 7 層技巧、HTTD Forwarded 標頭或 PROXY 協議獲取客戶端 IP 地址。但是您仍然需要一些方法來遍歷從 B 的代理到 A 的後端的 NAT。

引用自:https://serverfault.com/questions/1064418