Clash 混合連接埠與區域網路共享:讓同一 Wi-Fi 下的裝置共用代理伺服器

說明 mixed-port、allow-lan 與 bind-address 的用途,涵蓋電視、遊戲主機與手機的代理設定,以及防火牆放行重點。

混合連接埠接收哪些流量

mixed-port 是 Clash 與 mihomo 設定中的本機入站連接埠。它能在同一個 TCP 連接埠上辨識 HTTP 代理與 SOCKS5 代理協定。電腦上的瀏覽器可以將它設為 HTTP 代理,支援 SOCKS5 的應用程式也能連線到同一連接埠,不必分別維護 portsocks-port

常見設定會將混合連接埠設為 7890。如果執行 Clash 的電腦位址是 192.168.1.20,區域網路裝置需要填寫的代理位址就是 192.168.1.20:7890。這裡填的是主機在家庭網路中的 IPv4 位址,不是 127.0.0.1,也不是 Clash 節點伺服器的位址。

mixed-port: 7890
allow-lan: true
bind-address: '*'
mode: rule
log-level: info

external-controller: 127.0.0.1:9090

mixed-port、port 與 socks-port 的差異

欄位 協定 典型用途
mixed-port HTTP 與 SOCKS5 用一個連接埠相容手機、電視與桌面應用程式
port HTTP 僅提供傳統 HTTP 代理入口
socks-port SOCKS5 供明確支援 SOCKS5 的應用程式連線

同一份設定沒有必要同時將三個欄位都設為 7890。同一連接埠不能被多個監聽器重複占用。需要相容多類裝置時,保留 mixed-port: 7890 即可;需要分開稽核兩種協定時,再分別使用不同的 portsocks-port

allow-lan 與 bind-address 的實際作用

allow-lan: true 允許其他主機存取 Clash 的代理入站。它解決的是「是否接受區域網路連線」這一層。只開啟圖形客戶端中的「系統代理」,通常只會修改目前電腦的系統代理設定,不會自動讓電視或手機透過這台電腦。

bind-address 決定入站監聽哪些網路位址。'*' 表示監聽可用介面,適合位址可能隨 DHCP 變動的家庭網路。部分客戶端產生的執行設定會將它轉換為等效的監聽方式。若只想綁定固定網卡,也可以填寫電腦的區域網路位址,例如 192.168.1.20,但位址變更後需要同步修改設定。

最基本的可用檢查清單

  1. 在 Clash 設定中確認 mixed-port 已指定連接埠,例如 7890
  2. 啟用區域網路存取,對應的設定值為 allow-lan: true
  3. 確認監聽位址不是僅限迴環位址 127.0.0.1
  4. 重新載入設定或重新啟動核心,讓修改後的入站監聽設定生效。
  5. 在主機電腦執行 ipconfigip addr 或檢視網路設定,記錄目前的 IPv4 位址。
  6. 確認主機電腦與目標裝置連線到同一個家庭網路,且路由器未啟用用戶端隔離。

先確認 Clash 是否確實監聽區域網路

Windows 可在 PowerShell 中執行 Get-NetTCPConnection -LocalPort 7890 -State Listen。若 LocalAddress 顯示 0.0.0.0 或主機的區域網路位址,表示該連接埠可從對應介面接收連線;如果只顯示 127.0.0.1,其他裝置便無法連入。

Linux 可執行 ss -lntp | grep 7890,macOS 可執行 lsof -nP -iTCP:7890 -sTCP:LISTEN。排查時先檢查監聽狀態,再檢查防火牆。客戶端介面顯示「允許區域網路」不代表系統防火牆已允許入站連線。

手機、電視與遊戲主機如何設定代理

區域網路共享的核心是手動代理。目標裝置仍透過原本的 Wi-Fi 取得 IP、閘道與 DNS,只將支援代理的應用程式請求交給 Clash。主機電腦必須保持開機並連線,且確認 Clash 核心正在執行。電腦進入睡眠後,其他裝置會立即失去這個代理入口。

Android 與 iPhone

Android 常見路徑是「設定」→「網路和網際網路」→「Wi-Fi」→目前網路→「修改」→「進階選項」→「代理伺服器」→「手動」。iPhone 與 iPad 的路徑是「設定」→「Wi-Fi」→目前網路右側的資訊按鈕→「設定代理伺服器」→「手動」。伺服器填寫主機電腦位址,例如 192.168.1.20,連接埠填寫 7890

系統層級的 Wi-Fi 代理主要使用 HTTP 代理機制。多數瀏覽器和遵循系統網路設定的應用程式會生效,但部分應用程式會自行建立連線、繞過系統代理,或使用無法透過 HTTP 代理承載的 UDP 流量。出現「網頁可以開啟,但某個應用程式仍直接連線」的情況,不代表 mixed-port 設定失效,應先確認該應用程式是否遵循系統代理。

Android TV、Google TV 與智慧電視

Android TV 的選單名稱因製造商而異,常見路徑是「設定」→「網路和網際網路」→已連線的 Wi-Fi→「代理伺服器設定」→「手動」。代理主機名稱填寫電腦的區域網路 IP,代理連接埠填寫 7890。如果電視只提供「主機名稱」輸入框,直接填寫數字 IP,不要加入 http://,也不要把連接埠併入同一個輸入框。

部分電視系統沒有手動代理入口,或只有瀏覽器會遵循代理設定。此時無法只靠 Clash 的 mixed-port 接管整台電視。需要涵蓋所有應用程式時,應改用具備透明代理能力的路由器、旁路閘道,或在支援的裝置上直接執行客戶端。

PlayStation、Nintendo Switch 與其他遊戲裝置

PlayStation 網路設定中可在自訂連線流程裡找到「代理伺服器」,位址和連接埠仍填寫主機電腦 IP 與 7890。Nintendo Switch 可在「系統設定」→「網際網路」→「網際網路設定」→目前網路→「變更設定」→「代理伺服器設定」中設定伺服器與連接埠。

遊戲流量經常包含 UDP、點對點連線和嚴格 NAT 偵測。手動 HTTP 代理通常只能涵蓋帳號登入、商店頁面、下載介面等 TCP 請求,不能等同於整機透明代理。連線配對、語音聊天或 NAT 類型,不會因為填入 HTTP 代理就必然改變。若目標是轉送整台裝置的 TCP 與 UDP 流量,應使用路由器端的透明代理方案,而不是繼續調整 mixed-port。

Windows、macOS 與 Linux 防火牆放行

區域網路連線抵達電腦網卡後,還要通過作業系統防火牆。建議只允許家庭子網路存取代理連接埠,不要直接對所有遠端位址開放。以下範例假設家庭網段為 192.168.1.0/24,混合連接埠為 7890

Windows 入站規則

Windows 圖形介面路徑為「Windows 安全性」→「防火牆與網路保護」→「進階設定」→「輸入規則」→「新增規則」。選擇「連接埠」,協定選 TCP,特定本機連接埠填寫 7890,設定檔只勾選目前使用的「私人」。在範圍設定中,可將遠端 IP 限制為家庭子網路。

也可以使用系統管理員 PowerShell 建立限定子網路的規則:

New-NetFirewallRule `
  -DisplayName "Clash mixed-port LAN" `
  -Direction Inbound `
  -Action Allow `
  -Protocol TCP `
  -LocalPort 7890 `
  -RemoteAddress 192.168.1.0/24 `
  -Profile Private

如果 Wi-Fi 被 Windows 識別為「公用網路」,而規則只套用於「私人」,連線仍會遭到封鎖。使用家庭路由器時,可在「設定」→「網路與網際網路」→「Wi-Fi」→目前網路中檢查網路設定檔。不要為了測試而直接關閉所有防火牆;先核對規則、連接埠與網路類型。

macOS 與 Linux

macOS 可在「系統設定」→「網路」→「防火牆」→「選項」中確認 Clash 客戶端允許接收入站連線。不同客戶端的應用程式名稱各異,實際負責監聽連接埠的可能是客戶端主程式,也可能是獨立的核心程序。升級或更換核心檔案後,系統可能再次詢問是否允許連線。

使用 UFW 的 Linux 主機可以執行以下規則,只允許指定的家庭網段連線至 TCP 7890:

sudo ufw allow from 192.168.1.0/24 to any port 7890 proto tcp
sudo ufw status numbered

若系統使用 firewalld、nftables 或雲端主機安全群組,應在實際生效的防火牆層設定,而不是同時堆疊多套規則。家庭區域網路共享也不需要在路由器上設定連接埠轉送;連接埠轉送會將內部監聽服務暴露到路由器外側,與同一 Wi-Fi 內的共享不是同一回事。

連線失敗時,按網路層逐項排查

第一步:確認裝置之間可以互相連通

在手機或另一台電腦存取代理前,先確認兩台裝置位於相同子網路。例如主機為 192.168.1.20/24,手機為 192.168.1.36/24,通常可以直接通訊。如果一台位址是 192.168.1.x,另一台是 192.168.50.x,需要檢查是否連線到訪客 Wi-Fi、Mesh 隔離網路或不同 VLAN。

許多路由器的「訪客網路」、「AP 隔離」或「無線用戶端隔離」會阻止 Wi-Fi 裝置存取區域網路主機。此時裝置可以上網,卻無法連線到 192.168.1.20:7890。應將兩台裝置切換到一般家庭網路,或在路由器中允許對應網段互相存取。

第二步:測試連接埠,不要先測試節點

另一台電腦可使用 Test-NetConnection 192.168.1.20 -Port 7890 測試 Windows 主機,也可使用 nc -vz 192.168.1.20 7890。如果 TCP 連線失敗,問題位於監聽位址、防火牆或區域網路隔離,不需要先更換代理節點。

連接埠連通後,可從支援命令列代理的裝置執行:

curl -x http://192.168.1.20:7890 https://example.com/
curl --socks5-hostname 192.168.1.20:7890 https://example.com/

第一條指令驗證 mixed-port 的 HTTP 代理入口,第二條指令驗證 SOCKS5 入口。使用 --socks5-hostname 時,網域名稱解析請求會由 SOCKS5 代理端處理,適合區分本機 DNS 與代理鏈路問題。

第三步:檢查 Clash 日誌與規則命中情況

連接埠可以連線但目標網站無法開啟時,查看客戶端的連線清單或日誌。如果完全沒有新增連線,通常是目標裝置未儲存代理設定,或應用程式繞過了系統代理。若日誌顯示已有連線但最後走了 DIRECT,應檢查目前模式與規則匹配;若命中代理群組後逾時,再檢查代理群組選擇與節點狀態。

  • 連線遭拒:Clash 沒有監聽該位址,或連接埠填寫錯誤。
  • 連線逾時:防火牆、用戶端隔離或網段路由阻止存取。
  • 有日誌但網頁失敗:檢查規則、DNS、代理群組與上游節點。
  • 瀏覽器正常但應用程式失敗:應用程式可能不讀取系統代理,或主要使用 UDP。
  • 過一段時間失效:主機 DHCP 位址變更、電腦進入睡眠,或客戶端更新設定後關閉了區域網路存取。

長期使用時的位址與存取控制

手動代理依賴主機 IP。若路由器每次分配不同位址,手機和電視中的代理設定就會失效。建議在路由器 DHCP 設定中為主機電腦建立位址保留,例如固定分配 192.168.1.20。這比直接在電腦上填寫靜態 IP 更容易維持閘道、DNS 與網段參數一致。

共享連接埠只應在可信任的區域網路中開放。mihomo 支援為入站代理設定驗證,適合人員較多或無法完全信任裝置的網路:

mixed-port: 7890
allow-lan: true
bind-address: '*'

authentication:
  - "livingroom:change-this-password"

啟用驗證後,電視或遊戲主機必須提供代理使用者名稱與密碼輸入欄位;不支援驗證的裝置將無法使用此入口。在家庭環境中,也可以透過防火牆將遠端位址限制為特定裝置,例如只允許 192.168.1.36192.168.1.48,縮小同一網段其他裝置的連線範圍。

區域網路共享適合暫時為手機、電視或少量裝置提供 HTTP 與 SOCKS5 代理。若需要讓整個住家中的裝置自動接管、涵蓋不支援代理的應用程式,或處理遊戲 UDP 流量,應將代理能力部署到路由器或獨立閘道。mixed-port 是明確的應用程式代理入口,不是透明閘道,也不會取代路由轉送與 NAT 設定。

下載Clash客戶端 查看各平台安裝套件