Ssh

使用 OpenSSH 創建覆蓋 IPv6 網路

  • January 31, 2019

如果有這樣的 SSH 設置:

主機 A -> 主機 B <- 主機 C

如果主機 C 位於 NAT/防火牆後面,則打開一條到主機 B 的反向隧道,主機 A 通過主機 B (ProxyCommand) 連接到主機 C。一切都只是 IPv4。

是否有一種簡單的方法可以在主機 A 和主機 C 之間建立 IP(v6) 連接,而無需在任何這些主機上進行廣泛的 root 訪問和侵入性方法?

編輯:基本上類似的東西

hostC$ ssh -R 1234:localhost:22 hostB # establis remote hole for host C on host B
hostA$ ssh -o"ProxyCommand=ssh hostB nc localhost 1234" # Connect via HostB to Host C 
hostA$ ping6 &lt;ipv6&gt; # this would validate the connectivity to HostC

我們的想法是讓 IP(v6) 網路盡可能瞬態。應該可以從 HostA 訪問在 HostC 上偵聽 :::1 的服務。

您似乎將 SSH 埠轉發與 VPN 混淆了。這些是具有不同功能的非常不同的概念。

SSH 埠轉發讓一個伺服器(IP 和埠)偽裝成另一台伺服器(IP 和埠)。從您的圖表來看,這會讓主機 A 認為它正在與主機 B(埠 1234)交談,而實際上它正在與主機 C(埠 22)交談,因為主機 B 正在轉發流量。注意主機 A 永遠不知道主機 C 的存在。

我認為您實際上追求的是 VPN,主機 A 可以與主機 C 通信(知道它正在與主機 C 通信),並且所有流量都通過主機 B 發送。

你不能單獨使用 ssh 來做到這一點。通常所有主機(A、B 和 C)都需要安裝相同的 VPN 軟體(例如 OpenVPN)。B 將被設置為 VPN 伺服器,A 和 C 作為客戶端。

有一個例外。sshuttle會讓 ssh 伺服器充當 VPN 伺服器,只要你在客戶端有 sshuttle,伺服器就不需要知道。但是,它可能不適用於您所追求的配置。它可能不會讓主機 A 和 C 相互交談。

引用自:https://unix.stackexchange.com/questions/497872