banner
wling

wling

bilibili

遠程家裡伺服器,用SSH和Clash搞定流量代理

最近遇到一個小困擾,以前在家裡用內網機器的 IP 直接訪問伺服器特別方便,但有時候出門了,只有 SSH 權限。不過,想了一下,用 SSH 來搭橋 Socks5 代理,並透過 Clash 接管流量,好像是個不錯的解決方案。

方案設計#

我決定透過 SSH 來設定一個 Socks5 代理,給客戶端提供一個可以訪問家裡伺服器的通道。然後,使用 Clash 來智能管理流量,檢測 Socks5 是否生效,來決定是否走代理流量。步驟其實不複雜,來看看嗷。

1. 使用 SSH 設定 Socks5 代理#

首先,我透過 SSH 連接到遠程伺服器,並設定一個 Socks5 代理。

ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=3 -o TCPKeepAlive=yes -o ForwardAgent=no -o ForwardX11=no -N -D 127.0.0.1:8080 -p 221 root@*******.cn

解釋一下這個命令的參數:

  • -D 127.0.0.1:8080:在本地端口 8080 上啟動一個動態端口轉發,充當 Socks5 代理的作用。
  • -o ServerAliveInterval=60:每 60 秒發送一個空包,保持連接不中斷。
  • -o ServerAliveCountMax=3:如果連接沒有響應,最多重試 3 次。
  • -o TCPKeepAlive=yes:開啟 TCP 連接的保活機制。
  • -N:只進行端口轉發,不執行遠程命令。
  • -p 221:指定 SSH 連接的端口(如果你的伺服器不是默認的 22 端口,需要指定)。

這樣一來,所有透過本地 127.0.0.1:8080 端口的流量就會被轉發到遠程伺服器。

2. 配置 Clash 進行流量管理#

接下來,我在 Clash 中設定代理規則,來判斷是否走這個 Socks5 代理。Clash 的fallback功能可以幫助我們實現自動切換流量。

節點:

append:
  - name: 'SSH Tunnel'
    type: 'socks5'
    server: '127.0.0.1'
    port: 8080
    username: ''
    password: ''

規則:

prepend:
  - 'IP-CIDR,192.168.10.0/24,Proxy-local,no-resolve'

代理組:

prepend:
  - type: 'fallback'
    name: 'Proxy-local'
    interval: 5
    timeout: 5000
    max-failed-times: 1
    lazy: false
    proxies:
      - 'SSH Tunnel'
      - 'DIRECT'

這段配置的意思是:

  • 在 Clash 中定義了一個 Socks5 代理,指向 127.0.0.1:8080。
  • 使用fallback代理組,當檢測到 Socks5 代理有效時,流量會自動走這個代理,否則就直接連接。
  • 一定要把 lazy 關掉!字如其名就是懶逼,就是不自動檢測是否有效。

你希望使用 SSH 隧道(SSH Tunnel)作為首選代理,當 SSH 隧道不可用時,流量會自動切換到直連(DIRECT)。透過配置 interval 和 timeout,你可以控制檢測的頻率和超時的容忍度。

悄悄滴說#

這套方案的好處是,出門在外時,我只要保持 SSH 連接,其他流量就自動走代理,既方便又不耽誤工作。而且,Clash 的自動切換功能,保證了當代理不可用時,流量也能自動回到直連,不會造成卡頓或連接失敗。

對於喜歡折騰技術的我來說,這種 “遠程辦公” 的方式無疑讓生活和工作變得更加靈活高效。如果你也有類似需求,不妨試試看這個方法吧。

此文由 Mix Space 同步更新至 xLog 原始鏈接為 https://mixspace.crashvibe.cn/posts/default/remote-home-server-ssh-clash-proxy-traffic-management

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。