Clash mixed-port 與 allow-lan 設定:讓區域網路手機、電視共用電腦代理
從 mixed-port、allow-lan 設定到防火牆放行、查詢區域網路 IP,以及手機和電視的手動代理設定,並說明如何限制可連線的網段。
共享代理的條件:監聽連接埠、區域網路可連線、應用程式支援代理
讓手機或電視使用電腦上的 Clash,通常只要開放一個區域網路代理連接埠,再到裝置的 Wi-Fi 設定中填入電腦位址和連接埠即可。電腦在此扮演代理伺服器,不需要同時充當路由器。裝置先與電腦建立連線,再由電腦上的規則和策略決定流量要直接連線,或轉送至代理節點。
本文以 7890 作為混合連接埠範例,並假設電腦的區域網路 IPv4 位址為 192.168.1.10。這些僅供設定參考,並非適用所有網路的固定值。操作前請先查出電腦目前的位址,並確認該連接埠未被其他程序占用。
- 電腦、手機和電視必須位於彼此可連線的區域網路中。連上相同的 Wi-Fi 網路名稱,不代表裝置之間一定能互相連線。
- 電腦上的用戶端必須保持執行,並先在電腦本機確認所選設定和節點可正常使用。
- Wi-Fi 手動代理主要適用於遵循系統 HTTP 代理設定的應用程式,不等於接管整部裝置的流量。
- 電腦進入睡眠、關機、切換網路或 IP 位址變更後,裝置原先設定的代理可能就無法使用。
mixed-port 與 allow-lan 的實際設定
三個欄位各自的用途
| 欄位 | 範例值 | 用途 |
|---|---|---|
mixed-port | 7890 | 讓同一個監聽連接埠接受 HTTP 和 SOCKS 代理連線。 |
allow-lan | true | 允許區域網路裝置存取代理監聽服務。 |
bind-address | 192.168.1.10 | 綁定指定的本機網卡位址;該位址必須確實存在。 |
以下片段適用於已有可用設定的情況。請將欄位合併到 YAML 頂層,與 rules、proxies 同一層;不要縮排到任何策略群組中,也不要重複設定相同的鍵。
mixed-port: 7890
allow-lan: true
bind-address: 192.168.1.10
mode: rule
這不是完整的獨立設定檔,未包含節點、策略群組和規則。請保留原本可用的設定,再進行合併。mode: rule 表示共用代理的請求仍依照電腦上的規則分流;啟用區域網路共享不會自動將規則模式改成全域代理。
綁定所有網卡與固定位址的差異
bind-address: '*' 是監聽所有位址的常見寫法,但會擴大可存取的網路介面範圍。如果電腦同時連接乙太網路、Wi-Fi 和虛擬機網路,建議優先綁定要用來共享的區域網路位址,並搭配防火牆限制來源。綁定 127.0.0.1 僅供電腦本機使用,手機無法透過此位址連線到電腦。
圖形介面用戶端可能在啟動時重新產生核心設定。請使用用戶端提供的持久化設定覆寫或合併功能,不要只修改暫存的執行檔。不同用戶端的選單名稱不盡相同。儲存並重新載入後,請以實際執行的設定和監聽狀態為準;更新訂閱後,也要再次確認這三個欄位仍然生效。
查詢電腦的區域網路 IP,並確認 7890 正在監聽
Windows:辨別目前使用的網卡與虛擬網卡
在 PowerShell 或命令提示字元中執行 ipconfig,找到目前連線的「無線區域網路介面卡 WLAN」或乙太網路介面卡,查看 IPv4 位址和子網路遮罩。請勿選擇 VPN、虛擬機或已中斷連線的網卡。若電腦位址為 192.168.1.10、遮罩為 255.255.255.0,對應的網段是 192.168.1.0/24。
ipconfig
接著檢查連接埠。以下命令適用於 Windows PowerShell,結果中的 LocalAddress 應為預期的區域網路位址,或代表所有 IPv4 介面的 0.0.0.0。若只顯示 127.0.0.1,表示服務目前僅供本機存取。
Get-NetTCPConnection -State Listen -LocalPort 7890 |
Select-Object LocalAddress, LocalPort, OwningProcess
macOS 與 Linux:確認網路介面和程序
在 macOS 中,前往「系統設定」→「網路」,選取目前的連線,再進入「詳細資訊」→「TCP/IP」查看 IP 位址。可在終端機執行以下命令檢查監聽程序;若程序資訊不完整,再視需要使用 sudo。
lsof -nP -iTCP:7890 -sTCP:LISTEN
Linux 可分別查詢 IPv4 位址與 TCP 監聽狀態:
ip -4 addr show
ss -lntp 'sport = :7890'
建議在路由器的 DHCP 設定中為電腦保留位址,讓同一張網卡長期使用相同的 IP。若未確認 DHCP 位址池和閘道設定,請勿任意為電腦設定靜態位址,以免與其他裝置發生衝突。
防火牆只允許可信任來源,不要關閉整部電腦的防護
allow-lan: true 不會自動為作業系統建立防火牆規則。若監聽正常但連線逾時,請先檢查電腦的輸入連線防火牆規則,以及路由器是否啟用了用戶端隔離。針對本文的 Wi-Fi HTTP 手動代理,只要先允許 TCP 7890 即可,不必一併開放 UDP 或外部控制連接埠。
Windows:僅允許私人網路與指定來源網段
以下範例僅適用於可信任的家庭網路。請先確認目前的網路設定檔為「私人」,再以系統管理員身分開啟 PowerShell。此命令會將存取限制在本機 192.168.1.10 的 TCP 7890,且來源僅限 192.168.1.0/24:
New-NetFirewallRule `
-DisplayName "Clash LAN TCP 7890" `
-Direction Inbound `
-Action Allow `
-Protocol TCP `
-LocalAddress 192.168.1.10 `
-LocalPort 7890 `
-RemoteAddress 192.168.1.0/24 `
-Profile Private
不再共享時,可使用對應的顯示名稱刪除這條規則:
Get-NetFirewallRule -DisplayName "Clash LAN TCP 7890" |
Remove-NetFirewallRule
如果已存在適用於用戶端程式、範圍較廣的輸入連線允許規則,新增較嚴格的規則不會自動收緊舊規則。請一併檢查「Windows Defender 防火牆(進階安全性)」中的現有輸入規則,避免其他允許規則仍讓更多來源連接埠。
macOS 與 Linux:使用系統現有的防火牆機制
在 macOS 中,前往「系統設定」→「網路」→「防火牆」→「選項」,確認實際接收連線的用戶端或核心程式是否允許傳入連線。內建應用程式防火牆主要透過介面管理程式;若要依來源網段進一步限制,可搭配下方 mihomo 的存取控制欄位。
若 Linux 已啟用 UFW,可新增以下來源限制規則。未使用 UFW 的系統,請在現有防火牆機制中設定,不要為了這一條命令臨時啟用另一套規則管理工具。
sudo ufw allow from 192.168.1.0/24 to 192.168.1.10 port 7890 proto tcp
在手機和電視設定 HTTP 手動代理
iPhone 與 iPad
- 前往「設定」→「Wi-Fi」,點選目前 Wi-Fi 網路右側的資訊按鈕。
- 進入「設定代理伺服器」,選擇「手動」。
- 「伺服器」填入
192.168.1.10,「連接埠」填入7890。 - 若未設定代理驗證,請關閉「驗證」,儲存後使用 Safari 開啟網頁測試。
伺服器欄位只填電腦 IP,不要加上 http://、路徑,也不要將連接埠併入位址。此設定僅適用於目前的 Wi-Fi;切換到行動網路或其他 Wi-Fi 後,不會自動沿用。
Android 手機
通常可前往「設定」→「網路和網際網路」→「網際網路」,進入目前 Wi-Fi 的編輯頁面,再於「進階選項」中將「代理伺服器」改為「手動」。不同品牌的系統可能將入口放在「WLAN」或「修改網路」中;要填寫的欄位相同:
- 代理伺服器主機名稱:
192.168.1.10。 - 代理伺服器連接埠:
7890。 - 略過代理的位址:初次測試時可先留空,避免測試目標被排除。
Android TV 與其他電視系統
如果電視的網路設定提供「代理伺服器設定」→「手動」,請填入相同的位址和連接埠。有些系統需要重新編輯或重新連線目前的 Wi-Fi;有些電視則完全沒有系統代理設定。這種情況下,光靠本文提到的兩個欄位無法完成連線,必須使用支援代理的應用程式,或另外規劃閘道方案。
Wi-Fi 設定中的代理通常是 HTTP 代理。mixed-port 同時支援 HTTP 和 SOCKS,不代表此處需要選擇 SOCKS。HTTPS 網頁通常透過 HTTP 代理的 CONNECT 通道連線,不需要在手機上安裝解密憑證。
mihomo:只允許指定網段或指定裝置連線
在 mihomo 中,可使用 lan-allowed-ips 和 lan-disallowed-ips 進一步限制來源。這兩個欄位應以所用核心的設定文件為準,不要假設舊版原版 Clash 或所有衍生用戶端都支援。以下範例允許一個 IPv4 網段,並排除其中一台裝置;拒絕清單的優先順序高於允許清單。
mixed-port: 7890
allow-lan: true
bind-address: 192.168.1.10
lan-allowed-ips:
- 192.168.1.0/24
lan-disallowed-ips:
- 192.168.1.50/32
若只要讓一台手機和一台電視共用,可將允許清單縮小為兩個單一位址,而非整個網段。例如手機是 192.168.1.21,電視是 192.168.1.31:
lan-allowed-ips:
- 192.168.1.21/32
- 192.168.1.31/32
/32 代表單一 IPv4 位址,/24 則涵蓋此範例中的整個子網路。也應透過 DHCP 保留來源位址,確保位址維持穩定,否則手機 IP 變更後可能會失去存取權限。若使用 IPv6 或監聽所有介面,還應另外檢查 IPv6 的監聽和存取規則,不能將 IPv4 限制誤當成完整的雙協定安全防線。
也可使用 authentication 設定 HTTP/SOCKS 使用者名稱和密碼,但部分手機和電視的系統代理介面不支援驗證。請勿在訂閱分享截圖中放入帳號密碼;若只供家庭裝置使用,應優先設定網段限制、單一位址限制和防火牆規則。
依連線流程排除問題:監聽、連線、代理、規則
先確認電腦本身的代理連線正常
在電腦上明確指定代理並送出請求,可排除瀏覽器快取或系統代理開關造成的干擾。Windows 請使用 curl.exe,避免舊版 PowerShell 中 curl 別名造成差異:
curl.exe -I --connect-timeout 5 --max-time 15 --proxy http://192.168.1.10:7890 https://example.com/
macOS 與 Linux 可將命令中的 curl.exe 替換為 curl。若命令收到 HTTP 回應,表示這次請求已透過指定的代理入口完成;但這本身無法證明最終使用了遠端代理節點,因為規則也可能選擇 DIRECT。
接著從另一台區域網路裝置測試連線
如果有第二台 Windows 電腦,可執行以下命令測試 TCP 是否連通。TcpTestSucceeded 顯示 True 只代表連接埠可連線,不代表節點、網域名稱解析和目標網站都正常。
Test-NetConnection -ComputerName 192.168.1.10 -Port 7890
| 現象 | 優先檢查項目 |
|---|---|
| 連線遭拒 | 核心是否正在執行、連接埠是否填錯,以及是否只綁定了迴路位址。 |
| 連線逾時 | 輸入連線防火牆、訪客網路隔離、VLAN 隔離,以及電腦是否進入睡眠。 |
| 收到 HTTP 407 | 代理是否要求驗證,以及裝置是否填入相符的使用者名稱和密碼。 |
| 連接埠可連線,但網頁無法開啟 | 電腦本機節點是否可用、日誌中的解析錯誤,以及規則命中的策略群組。 |
| 瀏覽器可用,但電視應用程式失敗 | 應用程式是否遵循系統代理,以及是否依賴未被接管的 UDP 或獨立網路連線。 |
最後,請在用戶端的連線清單或日誌中查找手機、電視的來源 IP,確認請求是否進入核心、命中了哪條規則,以及選用了哪個策略。若要驗證代理出口,請使用確定會經過代理的測試目標,並搭配連線記錄判斷;不要只因網頁能開啟,就認定所有裝置的流量都已透過代理。
排除問題時一次只修改一個項目。先確認電腦本機代理運作正常,再檢查其他裝置能否連上連接埠,最後才處理特定應用程式。這樣可以將問題範圍縮小到監聽、防火牆、應用程式的代理支援或規則選擇,而不是同時重設所有設定。
停止共享與維護設定
停止使用時,先將手機或電視的 Wi-Fi 代理改回「關閉」或「無」,避免電腦關機後裝置仍向不存在的代理送出請求。接著將電腦設定中的 allow-lan 改為 false,重新載入設定,並刪除不再需要的防火牆允許規則。
若要長期共享,請保留三項資訊:電腦的 DHCP 保留位址、實際使用的混合連接埠,以及允許連線的裝置位址。更新訂閱、升級用戶端或切換網卡後,請重新檢查執行中的設定和監聽狀態。欄位基本說明請參閱 進階設定;初次安裝和匯入設定可從 使用教學 開始。
設定參考資料
- mihomo 文件:入站設定,可用來確認混合連接埠、區域網路存取、綁定位址和驗證欄位。
- Microsoft Learn:New-NetFirewallRule,可用來確認輸入規則、來源位址和網路設定檔參數。