跳到主要內容

首頁 / 部落格 / 功能詳解

Clash Verge 連接埠設定詳解:混合連接埠、SOCKS、HTTP 和 API 連接埠

Clash Verge 連接埠設定詳解:混合連接埠、SOCKS、HTTP 和 API 連接埠

Clash Verge 設定裡有一堆連接埠:混合連接埠、HTTP 連接埠、SOCKS 連接埠、重定向連接埠、外部控制連接埠。大部分人一輩子不用改,但一旦遇到連接埠衝突或者要配命令列工具,就得知道它們各自是干什麼的。

五個連接埠分別是什麼

連接埠一覽1混合連接埠 Mixed Port一個連接埠同時支援 HTTP 和 SOCKS5,預設 7897,日常用它就夠2HTTP 連接埠只接受 HTTP 代理協議,預設 7890 或關閉3SOCKS 連接埠只接受 SOCKS5,預設 7891 或關閉4重定向連接埠 Redir透明代理用,Linux5外部控制連接埠RESTful API,預設 9090,給面板和腳本用
混合連接埠出現之後,單獨的 HTTP/SOCKS 連接埠基本可以關掉

混合連接埠(Mixed Port)

這是你 99% 情況下要用的那個。

它的特殊之處在於能自動識別協議:用戶端發來 HTTP 請求它就當 HTTP 代理處理,發來 SOCKS5 握手它就當 SOCKS5 處理。所以填地址的時候,不管對方要 HTTP 還是 SOCKS,填同一個連接埠就行。

HTTP 連接埠 / SOCKS 連接埠

歷史遺留。在混合連接埠出現之前需要分開設定。現在保留它們主要是為了相容某些只認固定連接埠的老軟體。

如果不需要,建議關掉(設為 0 或留空)——少開一個連接埠少一份暴露面。

重定向連接埠(Redir Port / TProxy Port)

用於 Linux 和 macOS 上的透明代理(配合 iptables/nftables 規則把流量重定向過來)。桌面使用者基本用不上,做軟路由才需要。

外部控制連接埠(External Controller)

預設 9090。這是 Mihomo 的 RESTful API,Clash Verge 介面本身就是通過它和核心通信的。

第三方面板(metacubexd、yacd)也連這個連接埠。

各類工具該填哪個連接埠

假設你的混合連接埠是 7897

工具設定方式
Windows 系統代理127.0.0.1 : 7897
Chrome / Edge跟隨系統代理,不用單獨配
Firefox設定 → 網路設定 → 手動,HTTP 和 SOCKS 都填 7897
Gitgit config --global http.proxy http://127.0.0.1:7897
npmnpm config set proxy http://127.0.0.1:7897
pippip install --proxy http://127.0.0.1:7897 包名
curlcurl -x http://127.0.0.1:7897 https://example.com
SSH~/.ssh/config 裡加 ProxyCommand(見下)
Docker設定 daemon proxy,或直接開 TUN

SSH 走代理

# ~/.ssh/config
Host github.com
  HostName github.com
  User git
  # Windows(需要裝 ncat 或用 connect.exe)
  ProxyCommand ncat --proxy 127.0.0.1:7897 --proxy-type http %h %p
  # macOS / Linux
  # ProxyCommand nc -X connect -x 127.0.0.1:7897 %h %p

環境變數一次搞定

大部分命令列工具都認這幾個環境變數:

# macOS / Linux
export http_proxy=http://127.0.0.1:7897
export https_proxy=http://127.0.0.1:7897
export all_proxy=socks5://127.0.0.1:7897
export no_proxy="localhost,127.0.0.1,::1,*.local,192.168.0.0/16"
# Windows PowerShell
$env:HTTP_PROXY  = "http://127.0.0.1:7897"
$env:HTTPS_PROXY = "http://127.0.0.1:7897"
$env:NO_PROXY    = "localhost,127.0.0.1,::1,*.local"

連接埠衝突怎麼辦

啟動時報「連接埠被佔用」「address already in use」,說明有別的程式搶先佔了。

找出是誰佔的

Windows:

netstat -ano | findstr :7897
# 拿到最後一列的 PID,再查是什麼程式
tasklist | findstr <PID>

macOS / Linux:

lsof -i :7897
# 或
ss -tlnp | grep 7897

兩條解決路

連接埠衝突的處理查出佔用行程netstat 或 lsof判斷是否必要是不是另一個代理軟體停掉它 或 改 Clash Verge 連接埠二選一重新啟動 Clash Verge驗證
常見的搶連接埠者:另一個代理用戶端、某些国產軟體的內置服務

改連接埠的話,選一個 1024 到 65535 之間、沒被佔用的數字。常用備選:789878991080810809

一個常見誤解:改連接埠不會提速

有人以為換個連接埠能繞過限速。不會的——連接埠只是本機上的一個入口編號,跟你的網路速度、節點品質沒有任何關係。

真正影響速度的是節點線路、頻寬、和你到節點的網路路徑。

關於「允許區域網路連接」和連接埠的關係

打開「允許區域網路連接」後,連接埠的監聽地址會從 127.0.0.1 變成 0.0.0.0

監聽地址的區別127.0.0.1:7897只有本機能連最安全預設設定0.0.0.0:7897區域網路內任何設備都能連需要防火牆配合共享給手機、電視時才開
用 netstat 能直接看到當前監聽在哪個地址上

驗證方法:

netstat -an | findstr 7897

看到 0.0.0.0:7897 說明區域網路可訪問,看到 127.0.0.1:7897 說明只有本機可用。

連接埠相關的排查小技巧

測試代理連接埠是否真的在工作:

curl -x http://127.0.0.1:7897 -I https://www.google.com

回傳 HTTP 狀態碼說明代理通了。報 Connection refused 說明連接埠沒開或者填錯了。

測試外部控制 API:

curl http://127.0.0.1:9090/version

回傳 JSON 裡帶版本號說明核心在正常執行。

這兩條命令在排查「到底是用戶端問題還是節點問題」時特別有用:如果 API 正常但代理請求失敗,問題在節點或規則;如果 API 都連不上,說明核心根本沒起來。

小結

  • 日常只用混合連接埠,HTTP 和 SOCKS 單獨連接埠可以關掉
  • 命令列工具用環境變數,記得配 no_proxy
  • 外部控制連接埠別暴露公網,要暴露就設 secret
  • 連接埠衝突時先查佔用,改連接埠是最後手段

相關:區域網路共享代理日誌與連接頁怎麼看