先分清混合連接埠、電腦 IP 位址與路由器閘道
手機和電視不一定要各自安裝代理用戶端。電腦上的 Clash 系列桌面用戶端可以開放區域網路代理入口,其他裝置將請求送到電腦,再由電腦上的核心依目前設定選擇直連或代理。前提是電腦保持開機、用戶端核心正常運作,而且裝置之間可以直接通訊。
本文主要以使用 mihomo 核心的 Clash 系列桌面用戶端為例。不同用戶端的選項名稱可能是「允許區域網路連線」、「允許區域網路」或「Allow LAN」;連接埠也可能由圖形介面設定覆寫。操作時請以目前用戶端實際生效的設定為準,不要只看訂閱檔案。
| 參數 | 本文範例 | 設定位置 |
|---|---|---|
| 電腦區域網路 IPv4 位址 | 192.168.1.20 | 手機或電視的代理伺服器位址 |
| 混合連接埠 | 7890 | 手機或電視的代理連接埠 |
| 路由器閘道 | 192.168.1.1 | 保留在網路設定中,不作為本文的代理伺服器 |
| 本機迴圈位址 | 127.0.0.1 | 僅供同一台電腦上的程式連線 |
混合連接埠 7890:同一入口辨識 HTTP 與 SOCKS5
mixed-port 讓核心在同一個連接埠接收 HTTP 代理和 SOCKS5 代理請求,並根據連線開頭的協定資料辨識類型。應用程式不必同時啟用兩種代理;支援哪一種就選哪一種,連接埠填同一個即可。
- HTTP 代理:適用於手機系統的 Wi-Fi 代理設定、瀏覽器等情境。瀏覽 HTTPS 網站時,通常會透過 HTTP CONNECT 建立通道,目標網站的 TLS 連線仍由應用程式與目標伺服器建立。
- SOCKS5 代理:適用於可個別設定代理的應用程式和命令列工具。網域名稱由本機解析或交由代理解析,則取決於應用程式的選項。
- 7890 只是常見預設值:如果介面顯示的混合連接埠是 7897,就使用 7897;HTTP 連接埠、SOCKS 連接埠和混合連接埠不可混為一談。
混合連接埠也不是核心的控制介面。設定中的 external-controller 用於管理核心,不可填入手機的代理連接埠欄位。不要為了共用代理而將控制介面開放給整個區域網路。
混合連接埠不代表自動接管所有流量
手機設定 HTTP 代理後,只有遵循這項設定的應用程式請求會經由電腦傳送。遊戲的 UDP 流量、部分影音應用程式,以及使用自有網路堆疊的程式仍可能直接連線。SOCKS5 雖然提供 UDP ASSOCIATE 機制,但仍須應用程式、核心和防火牆共同支援,不能因為開啟 7890 就認定所有 UDP 流量都能轉送。
同樣地,電腦開啟 TUN 模式,不代表手機也會自動進入 TUN。TUN 接管的是電腦本機路由至虛擬網卡的流量;手機若沒有明確使用代理,仍會透過自己的預設路由連線。
電腦端設定:開放監聽並確認實際生效的連接埠
- 先確認電腦本機可以正常使用。匯入有效的訂閱或設定,選擇規則模式和可用的策略。先確認電腦上的瀏覽器能正常瀏覽目標網站,再設定共用,避免把節點問題誤判為區域網路故障。
- 找到混合連接埠設定。在用戶端的「設定」中查看「連接埠」或「連接埠設定」裡的「混合連接埠」,記下實際數值。如果介面沒有這個欄位,請查看用戶端目前的設定和核心記錄。
- 開啟允許區域網路連線。找到「允許區域網路連線 / Allow LAN」並啟用。部分用戶端需要套用設定或重新啟動核心;切換後請查看記錄,確認沒有監聽失敗的訊息。
- 確認監聽位址。如果有「繫結位址」選項,請勿限制為
127.0.0.1。監聽所有位址會擴大可連線範圍,之後應透過防火牆限制連線來源。
使用 YAML 時,核對以下三個欄位
以下是 mihomo 支援的最精簡相關片段,只列出共用所需欄位,並非完整訂閱,也不應覆蓋原有的節點、代理群組和規則:
mixed-port: 7890
allow-lan: true
bind-address: '*'
allow-lan: true 允許區域網路連線;bind-address: '*' 表示繫結所有位址,實際的 IPv4、IPv6 監聽行為也會受到系統影響。如果只想監聽特定的本機 IPv4 位址,也可以將繫結位址設為電腦該網卡的位址,但位址變更後也要一併更新設定。
查詢電腦 IP,並允許區域網路的輸入連線
Windows:確認網卡與私人網路設定
按下 Win + R,輸入 cmd,執行 ipconfig。找到目前連線的「無線區域網路介面卡 WLAN」或「乙太網路介面卡」,查看 IPv4 位址。請勿選到 TUN 虛擬網卡、虛擬機網卡或已中斷連線的介面卡。
在 Windows 11 中,可透過「設定」→「網路和網際網路」→目前的 Wi-Fi 或乙太網路連線,查看網路設定檔。確認是可信任的家用網路後,才將其設為「私人網路」;不要為了繞過限制,將飯店、學校等共用網路改成私人網路。
防火牆必須允許連入電腦的代理監聽連接埠,而不只是允許用戶端向外連線。可以在「Windows 安全性」→「防火牆與網路保護」→「進階設定」→「輸入規則」中新增連接埠規則:選擇 TCP、本機連接埠 7890、允許連線,並只勾選「私人」。接著開啟規則屬性,在「範圍」中將遠端 IP 限制為「本機子網路」。
熟悉 PowerShell 的使用者,也可以在系統管理員終端機建立相同範圍的規則。以下範例僅適用於實際混合連接埠為 7890 的情況:
New-NetFirewallRule -DisplayName "Clash LAN TCP 7890" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 7890 -Profile Private -RemoteAddress LocalSubnet
一般手機 HTTP 代理測試只需允許 TCP,無須順手開放一大段連接埠。如果之後確實使用 SOCKS5 UDP,再依實際監聽狀態和應用程式需求,另外檢查 UDP 規則。
macOS 與 Linux:先確認位址,再檢查應用程式權限
- macOS:前往「系統設定」→「網路」→目前的連線→「詳細資訊」→「TCP/IP」,查看 IP 位址。再到「系統設定」→「網路」→「防火牆」→「選項」,檢查用戶端或實際核心程序的傳入連線權限;顯示名稱會依用戶端的封裝方式而異。
- Linux:執行
ip -4 addr查看實體網卡位址,再用ss -lntp檢查 7890 是否正在監聽。使用 UFW、firewalld 或其他防火牆時,只允許可信任的網段存取實際連接埠,不要直接清空防火牆規則。
建議在路由器中為電腦設定 DHCP 位址保留。如此一來,電腦重新啟動後仍會取得相同位址,手機和電視就不必一再修改代理伺服器設定。
手機與電視:代理伺服器填電腦位址,連接埠填 7890
iPhone 與 iPad
- 前往「設定」→「Wi-Fi」,點選目前 Wi-Fi 右側的資訊按鈕。
- 開啟「設定代理伺服器」,選擇「手動」。
- 「伺服器」填入電腦的區域網路 IP,例如
192.168.1.20;「連接埠」填入實際混合連接埠,例如7890。 - 若未啟用代理驗證,請保持「認證」關閉;儲存後用 Safari 開啟網頁測試。
這項設定只適用於目前的 Wi-Fi,不會自動套用至行動網路。測試完成後,若離開電腦所在的網路或電腦已關機,記得回到「設定代理伺服器」選擇「關閉」,否則遵循代理設定的應用程式可能無法連線。
Android 手機
常見的原生 Android 路徑是「設定」→「網路和網際網路」→「網際網路」→目前的 Wi-Fi→編輯→「進階選項」→「代理伺服器」→「手動」。部分廠牌會將編輯選項放在網路詳細資訊頁面底部。代理主機名稱填入電腦 IP,代理連接埠填入 7890,IP 設定維持 DHCP。
請勿在主機名稱中加入 http://,也不要將位址和連接埠一起填入同一個欄位。Android 系統的 Wi-Fi 手動代理通常是 HTTP 代理,不是 SOCKS5 代理;若應用程式不讀取系統代理設定,請查看應用程式本身是否提供代理選項。
Android TV 與其他電視系統
在電視的「設定」→「網路和網際網路」→目前的網路中,尋找「代理伺服器設定」。若支援「手動」,同樣填入電腦 IP 和混合連接埠。選單會因系統版本而異,有些電視只有在重新新增 Wi-Fi 時才提供進階設定,也有些系統完全沒有代理設定入口。
找不到設定入口時,別試著修改預設閘道碰運氣。可以改用電視應用程式內建的 HTTP 或 SOCKS5 設定;若應用程式和系統都不支援,就需要另外規劃路由器或閘道端的方案,單靠勾選 Allow LAN 無法解決。
分層測試:先確認連線是否抵達,再檢查規則與節點
別只憑「某個網站打不開」就判定設定失敗。先測試電腦本機代理,再測試另一台裝置能否連上電腦,最後查看 Clash 用戶端的「連線」和「記錄」。以下位址僅供範例,測試時請替換為電腦實際的區域網路位址。
使用 curl 測試 HTTP 與 SOCKS5
先在電腦本機使用迴圈位址測試 HTTP 代理;Windows 請明確使用 curl.exe,避免舊版 PowerShell 中同名的命令別名影響參數解析:
curl.exe -I --connect-timeout 5 --max-time 15 --proxy http://127.0.0.1:7890 https://example.com/
接著在另一台已安裝 curl 的區域網路裝置上測試電腦位址。macOS、Linux 請使用 curl;Windows 可改用 curl.exe:
curl -I --connect-timeout 5 --max-time 15 --proxy http://192.168.1.20:7890 https://example.com/
curl -I --connect-timeout 5 --max-time 15 --proxy socks5h://192.168.1.20:7890 https://example.com/
socks5h 會要求代理端解析目標網域,與由本機解析的 socks5 不同。HTTP 測試中看到 CONNECT 成功,只代表通道已建立,還要確認目標網站的回應。即使收到目標網站的 403,也應配合記錄判斷是網站拒絕存取,還是代理根本沒有連通。
| 狀況 | 優先檢查項目 | 下一步 |
|---|---|---|
| 本機迴圈位址也無法連線 | 核心是否已啟動、連接埠是否衝突 | 查看啟動記錄與實際監聽的連接埠 |
| 本機可用,但手機連線逾時 | Allow LAN、繫結位址、防火牆、裝置隔離 | 確認監聽不限於迴圈位址,並檢查輸入規則 |
| 出現連線遭拒 | 目標 IP 是否正確、該連接埠是否正在監聽 | 重新確認電腦網卡位址與連接埠 |
| 用戶端看得到請求,但無法連線 | 命中的規則、選用的節點、上游 DNS 解析 | 在「連線」中查看策略鏈,再檢查錯誤記錄 |
| 瀏覽器可用,但某個應用程式不行 | 應用程式是否遵循 HTTP 代理設定 | 檢查應用程式的代理選項,確認是否依賴 UDP |
Wi-Fi 名稱相同,也不代表裝置之間一定能互通。訪客網路、AP 隔離、不同 VLAN 都可能阻擋裝置彼此連線。反過來說,電腦使用網路線、手機連接 Wi-Fi,本身並沒有問題,只要兩者所在的網路允許互通即可。Ping 失敗也不能單獨證明 TCP 7890 無法連線,因為 ICMP 可能遭防火牆封鎖。
共享範圍、驗證與使用後還原
允許區域網路連線後,其他裝置便有機會使用電腦的代理入口。即使是家用網路,也應限制防火牆允許的來源;不要在路由器上將 7890 轉送至公網,也不要為了排除問題而關閉整套系統防火牆。如果電腦還有其他網路介面或公網 IPv6 位址,更應確認實際監聽設定和輸入規則。
mihomo 支援透過 authentication 設定 HTTP、SOCKS 代理驗證,但連線端必須能填入並傳送使用者名稱和密碼。部分 Android 系統的 Wi-Fi 代理介面沒有相應欄位,電視的支援情況也不一致;啟用前請逐台確認。代理驗證不能取代加密連線,不應將一般區域網路 HTTP/SOCKS 連線視為 VPN 通道。
- 共用前:確認網路可信任、電腦 IP 固定、連接埠正確,且防火牆只允許必要的來源。
- 共用時:留意用戶端「連線」中的來源位址和流量,確認請求來自預期的裝置。共用裝置通常會沿用同一套規則和策略群組,不會自動各自使用不同的訂閱。
- 共用後:先關閉手機和電視的手動代理,再關閉 Allow LAN。暫時建立的防火牆規則可以停用或刪除。
如果測試後要刪除上文建立的 Windows 規則,可在系統管理員 PowerShell 中執行以下命令;它只會刪除以該名稱建立的規則:
Remove-NetFirewallRule -DisplayName "Clash LAN TCP 7890"
最後記住這個排查順序:電腦本機代理可用 → 區域網路連接埠可連線 → 裝置正確使用代理 → 規則和節點正常。分開檢查這四個環節,比反覆切換全域模式、TUN 和連接埠更容易找出問題。