返回部落格

在不使用 VPN 的情況下使用 SOCKS 隧道路由網路流量

在不使用 VPN 的情況下使用 SOCKS 隧道路由網路流量

當談到保護您在網路上的足跡時,您可能聽說過 VPN,對吧?VPN 充當您的電腦與網際網路之間的中介。所有的流量都會通過 VPN 伺服器,從而有效地隱藏您的 IP 地址和位置。

然而,VPN 並不是唯一的 代理伺服器。SOCKS (Socket Secure) 是一種相似的網路協定,它透過代表用戶端路由網路流量,允許透過防火牆與伺服器進行通訊。與 VPN 相比,SOCKS 在網路設定上提供了更多的彈性與控制。當您無法安裝 VPN 用戶端或不信任 VPN 提供商時,它非常有用。

本指南將 示範如何建立 SSH SOCKS 5 代理通道,並透過該通道路由您的網路流量。

先決條件

為了進行示範,我們使用了一台執行 Ubuntu 桌面版的本機電腦和一台 執行 Ubuntu 伺服器版的遠端機器。您需要先 設定好 SSH 才能使其順暢運作。由於我們使用的是 SOCKS 代理,為了測試連線,我們需要一個可以使用它的應用程式。 Firefox 是一個完美的例子。它是一款支援 SOCKS 5 代理通道的現代網頁瀏覽器。

如果您使用的是 Windows,那麼您可以使用 WSL (Windows Subsystem for Linux) 來設定本機 Linux 環境,或者使用 PuTTY,這是一款可以實作 Telnet、rlogin 等各種網路協定的開放原始碼應用程式。

設定 SOCKS 通道

  • 設定 SOCKS 通道 (macOS/Linux)

在本機電腦上,我們需要設定 SSH 金鑰以確保安全連線。該 SSH 金鑰也必須註冊到遠端系統。這篇關於 設定基於 SSH 金鑰的驗證 的指南詳細介紹了該過程。

以下 SSH 指令將建立到遠端伺服器的 SOCKS 通道:

讓我們來拆解這個指令:

  • -i:它告訴 SSH 連線要使用哪個 SSH 金鑰。

  • -D:它告訴 SSH 我們想要建立一個 SOCKS 通道。至於連接埠,我們使用的是連接埠 1024。這不是一個固定值。您可以選擇介於 1024 與 65536.

  • -f:SSH 程序將在背景分叉(fork)執行。

  • -C:SSH 在將資料傳送到遠端伺服器之前會先進行壓縮。這既可以節省數據消耗,又能提高有效頻寬。

  • -q:以安靜模式執行該工具。

  • -N:它告訴 SSH 在建立通道後,不會傳送任何指令。

執行後,我們可以驗證程序是否正常啟動。以下指令將列印所有執行中 SSH 程序的資訊:

Routing grep ssh

現在,您可以安全地關閉終端機視窗。SSH 程序將在背景按預期運作。

  • 設定 SOCKS 通道 (Windows)

對於 Windows 使用者,使用 PuTTY 是一個更簡單的解決方案。首先,您需要 下載 PuTTY:

Routing download putty

安裝完成後,啟動 PuTTY:

Routing putty screen1

從左側面板的 Session 索引標籤,輸入您伺服器的 Host Name (or IP address)。至於 Connection type,選擇 SSH。接下來,前往 Connection >> SSH >> Tunnels。在這裡,在 Destination 欄位下,選擇螢幕截圖中顯示的選項:

Routing putty screen2

接下來,按一下 Open。將彈出一個終端機視窗以透過 SSH 連線到遠端伺服器。登入遠端伺服器:

Routing putty screen 3

套用 SOCKS 通道

通道現在已設定完成。任何支援 SOCKS 的應用程式都可以使用該通道。為了進行示範,Firefox 是一個極佳的例子。

首先,開啟 Firefox。從右上角按一下功能表圖示。前往 Settings:

ubuntu screen1

接下來,搜尋 proxy。按一下 Settings (位於 Configure how Firefox connects to the internet:

firefox preferences

)之後,選擇 Manual proxy configuration。至於 SOCKS Host,使用 localhost127.0.0.1。然後,在連接埠欄位中,輸入我們為 SOCKS 通道專門配置的連接埠。別忘了選擇 SOCKS_v5:

firefox proxy conf

最後,勾選 Proxy DNS when using SOCKS_v5 選項。按一下 OK 以繼續。

接下來,開啟一個新分頁並嘗試存取任何網頁。例如,您可以從 CheckMyIP.

還原代理設定

當您不再需要指向 SSH 隧道的代理伺服器連線時,可以安全地從 Firefox 代理伺服器設定中將其停用:

Routing firefox reverting proxy conf

在視窗中,選擇 使用系統代理設定 並按一下 確定.

關閉 SOCKS 隧道

  • 在 macOS/Linux 上關閉隧道

要關閉隧道,我們需要手動終止 SSH 程序。我們需要 SSH 程序的 PID(程序識別碼)。以下命令將顯示所有執行中的 SSH 程序的 PID:

記下與建立隧道命令一起執行的 SSH 程序。終止該程序:

如果未定義任何選項, kill 命令將傳送一個通用的 SIGTERM 訊號給目標程序。您可以從以下內容深入了解 這篇教學課程中的 Linux 程序管理.

  • 在 Windows 上關閉隧道

關閉 PuTTY 視窗應該會關閉隧道連線。

疑難排解

以下是您在嘗試使用 SOCKS 路由流量時可能會遇到的一些常見問題。

  • 防火牆

如果您因為防火牆限制而無法建立連線,那麼防火牆很可能被設定為封鎖與連接埠 22 的連線。這是 SSH 用於連線到遠端系統的預設連接埠。某些連接埠預設保持開放,例如連接埠 80 (一般網路流量)和連接埠 443 (TLS,安全網路流量)。

如果 SSH 伺服器未提供網頁內容,那麼我們可以使用其中一個預設連接埠( 80443 )來代替連接埠 22。建議使用連接埠 443 ,因為它預設預期加密流量。它也會對傳出流量進行加密。若要進行此變更,我們需要修改 SSH 設定檔。在文字編輯器中開啟該檔案:

SSH 可以使用多個連接埠來達到其目的。向下捲動設定檔並找到 port(連接埠)區段:

Routing sshd config

變更完成後,儲存檔案並關閉編輯器。重新啟動 SSH 服務以套用變更:

若要驗證新連接埠是否正常運作,請嘗試使用新連接埠連線到遠端伺服器:

如果連線成功,我們可以安全地使用連接埠 443 來進行 SSH 隧道傳輸。以下是建立 SOCKS 隧道的修正後命令:

在這裡,旗標 -p 會指示 SSH 使用連接埠 443.

結語

在當今時代,隱私與安全是人們最關心的問題之一。當您處於不安全的網路環境中時,有許多方法可以安全地進行瀏覽。在大多數情況下,使用 VPN 就能為您的網路流量提供足夠的安全保障。另一方面,如果您無法或不信任 VPN,SOCKS 隧道將為您提供必要的安全性。擁有 SOCKS 隧道還能讓您完全控制相關設定。

祝您電腦使用愉快!

author

Pranay Kapgate

作者 · CloudSigma

Preslav Dobrev 是 CloudSigma 的創意設計師,專注於透過傳統與創新行銷渠道建立一致的企業形象。他擅長將藝術願景與策略行銷相融合,創造具有影響力的品牌敘事。

留言

目前尚無留言。成為第一個留言的人吧。