Last Updated on 2024-08-06 by Clay
如果我們手邊剛好有幾台不同 IP 的遠端伺服器,並且希望可以透過不同的 IP 瀏覽網頁(比方說一些服務本地端/本地國家不支援),我們可以選擇透過 SOCKS 代理端口,並設定好讓 Firefox 透過這些代理端口使用遠端伺服器的 IP 進行瀏覽,就不用特地裝其他的 VPN 工具了。
終端機設定
首先我們打開終端機,並透過以下指令連線到遠端伺服器:
ssh -D [LOCAL_PROXY_PORT] [USERNAME]@[REMOTE_SERVER_IP]
這個步驟建議在 tmux 或是 screen 中操作,這樣比較好隨時確認連線有沒有斷掉。
Firefox 設定
首先我們打開 Firefox,點擊右上角的設定按鈕(三條橫線的圖示),打開後點擊 Settings 選項。
拉到最底下看到 Network Settings 區塊,再次點擊 Configure how Firefox connects to the internet 旁邊的 Settings… 選項。
這裡我們勾選 Manual proxy configuration,並使用 SOCKS v5,填寫剛剛我們 ssh
連線時對應的端口(我這裡是使用 55555)。
之後就可以查看瀏覽器所查看 IP 是否有被更新了:
我現在人可不在日本,所以我們使用 Firefox 瀏覽器透過遠端的伺服器位址上網確實成功了。
詳細解釋
當我們使用 SSH 隧道(SSH Tunneling)和 SOCKS 代理來繞過地理限制或增加隱私時,其中的原理涉及以下兩個主要部分:
- SSH 隧道:SSH 隧道利用 SSH 協議在本地機器和遠端伺服器之間創建一個加密通道,這個通道可以用來安全地轉發各種網路流量。當我們建立 SSH 隧道並使用
-D
選項時,我們實際上是在本地機器端口上設置了一個『SOCKS 代理』。 - SOCKS 代理:SOCKS 是一種互聯網協議,通過代理伺服器轉發網路流量,當我們的瀏覽器配置為使用 SOCKS 代理時,所有的網路請求都會發送到這個代理伺服器並由它代轉,此時我們的應用就會顯示是從代理伺服器的 IP 地址發出。
優點
- 安全性:由於 SSH 隧道是加密的,這確保了網路流量在傳輸過程中的安全性
- 靈活性:可以使用不同的遠程伺服器來繞過地理限制,且無需安裝其他 VPN 工具
- 隱私:你的 IP 地址對外顯示為遠程伺服器的 IP 地址,增加了隱私保護
注意事項
- 連接穩定性:確保你的 SSH 連接穩定,因為連接斷開會導致代理無法使用(所以才建議放在
tmux
或是screen
中) - 網路速度:代理的網路瀏覽速度取決於遠程伺服器的網路性能和我們的網路連接品質,所以通常會有些降速
- 安全性:確保遠程伺服器的安全,避免其成為攻擊的目標
最後必須要提的是,其實只要瀏覽器本身有提供 SOCKS 代理功能,都可以把流量導去遠端伺服器,不一定需要 Firefox,只是可能需要找找瀏覽器本身的設定即可。
References
- Create a SOCKS proxy on a Linux server with SSH to bypass content filters
- How to create a SOCKS proxy with ssh?