是否可以使用連接埠轉送透過 AWS 執行個體路由往返於我的本機 PC 的所有流量?

是否可以使用連接埠轉送透過 AWS 執行個體路由往返於我的本機 PC 的所有流量?

我正在嘗試利用 PuTTY 的連接埠轉送功能建立從我的家用 PC(在 Windows 11 上運行)到我已預先配置和設定的 AWS Lightsail 實例(在 Ubuntu LTS 20.04 上運行)的連接。這個想法是透過我的家用電腦使用實例可用的網路連線 - 有點像使用代理伺服器或 VPN 來存取網路。

假設以下參數:

  • AWS執行個體的公用IP位址:x.x.x.x
  • AWS執行個體的私有IP位址:Y.Y.Y.Y
  • SSH 連接埠:22
  • 6088我已經在帳戶級別和實例級別開放了端口
  • 我本地電腦的公用IP位址(路由器IP):a.a.a.a
  • 我本地電腦的私有IP位址:b.b.b.b

到目前為止,我的理論理解是,我應該使用 PuTTY 進行遠端連接埠轉發,將遠端 Lightsail 實例的連接埠 6088 轉發到我家用 PC 對應的本機連接埠 6088。

將家用電腦的代理設定配置為localhost:6088.我最初計劃透過 VNC 用戶端伺服器方案存取遠端實例,但也無法使其運作。

經過一番谷歌搜尋後,我了解到 AWS 還提供了專門用於設定 VPN 網路的實例,而這些實例支援我正在考慮的用例。

誰能建議正確的方法是什麼?

答案1

  1. 您的轉送模式向後。 「遠端」轉送使伺服器成為監聽者;連線將建立到伺服器位址:連接埠(可能來自伺服器內部的 localhost:6088,或可能來自其他主機的 serverip:6088)並轉送至您的用戶端系統。

    您想要做的事情與此完全相反,因此它將涉及更像「本地」轉發模式的內容,其中 SSH客戶是連接埠 6088 的監聽器(與 AWS 伺服器的防火牆規則無關)。

  2. “遠端”和“本地”模式均為固定功能;也就是說,它們不允許應用程式指定它想要連接的位置 - 它們始終僅轉發到指定的目的地。例如,如果您有一個「本地」轉發,其中本機連接埠為 6088,遠端目標為 google.com:443,則每一個與 localhost:6088 的連線將被轉送到 google.com:443,而不是其他地方。

    (這也意味著即使“本地”或“遠端”曾是合適的模式,你不會使用該端口代理人配置 – 您可以直接使用它,就好像它是實際的服務一樣。

    相反,您需要 PuTTY 中的第三種模式——「動態」轉發——它仍然與「本地」屬於同一類別,但它使 PuTTY 充當 SOCKS 代理。透過連接埠 6088 上的「動態」轉發,您可以將瀏覽器設定為使用 localhost:6088 作為 SOCKS 代理,並能夠瀏覽 AWS 伺服器。

  3. PuTTY 只能充當 SOCKS 代理,Firefox 和 Chrome 知道如何使用支援 SOCKS 的代理,但許多其他應用程式不知道;支援「HTTP CONNECT」但不支援 SOCKS 的應用程式相對常見。

    由於 PuTTY 沒有模擬該功能的功能,因此您可能需要運行真實的AWS伺服器上的HTTP代理伺服器(例如Squid或Privoxy),然後使用「本地」轉送透過SSH存取它。 (或者可以像Tor 所做的/過去所做的那樣,在本地運行Privoxy/Polipo 並將其指向PuTTY 的“動態”端口,進入“瀏覽器→HTTP→Privoxy→SOCKS→PuTTY→SSH→AWS”。 )

  4. 以上都只能處理TCP流量;如果您需要 UDP 來做任何事(或即使您想ping被代理),那麼這兩種代理類型都不起作用。

    在這種情況下,您將需要在您的 PC 和 AWS 伺服器之間設定完整的 VPN 隧道。 (SSH 無法在 Windows 上執行此操作,而且通常不太適合它;相反,您可以使用 OpenVPN 或 Tailscale 或 WireGuard 或類似的東西。)您不需要為此目的使用特殊類型的伺服器。

    (有些伺服器類型不適合設定 VPN,即某些提供者提供的極其便宜的“VPS”,它們只是偽裝的 OpenVZ 容器,儘管即使這些伺服器通常至少可以託管 OpenVPN。我不認為AWS 有類似的東西;他們所有的VPS 都是功能齊全的虛擬伺服器。

相關內容