混合連接埠與區域網路共享:讓同網段裝置使用同一個 Clash 代理伺服器

從 mixed-port 與 allow-lan 設定著手,示範如何將電腦代理共享給手機、電視等裝置,並整理防火牆放行與無法連線的排查方法。

mixed-port 與 allow-lan 分別控制什麼

區域網路代理共享的基本架構很簡單:電腦執行 Clash、Clash Meta 或 mihomo 用戶端並監聽代理連接埠,手機、平板或電視則將這台電腦的區域網路 IPv4 位址填入代理伺服器。其他裝置發出的 HTTP 或 SOCKS 請求會先抵達電腦,再由電腦上的核心依照目前規則與策略群組處理。

mixed-port 是混合代理連接埠,同一個連接埠可同時接受 HTTP 代理與 SOCKS5 代理連線。例如設定為 7890 後,支援手動 HTTP 代理的電視可以連線至該連接埠,支援 SOCKS5 的應用程式也能使用同一個連接埠。相較於分別設定 portsocks-port,更適合家庭網路中的簡單共享情境。

allow-lan 決定核心是否接受來自本機以外的區域網路連線。設為 false 時,即使電腦本身的瀏覽器能透過 127.0.0.1:7890 使用代理,手機連線電腦的 192.168.1.20:7890 仍會失敗。要進行共享,通常必須同時確認監聽位址、防火牆與 Wi-Fi 網路隔離狀態,不能只修改一個開關。

設定項目 範例值 實際作用
mixed-port 7890 在單一連接埠接收 HTTP 與 SOCKS5 代理連線
allow-lan true 允許區域網路裝置連線至本機代理監聽連接埠
bind-address '*' 讓代理連接埠監聽可用的網路介面,而不只監聽迴路位址
authentication lanuser:自訂密碼 要求連線代理連接埠的裝置提交使用者名稱與密碼

設定 Clash、Clash Meta 或 mihomo 的監聽連接埠

直接編輯 YAML 設定

使用支援覆寫設定的用戶端時,可以在目前設定或全域覆寫檔案中加入以下內容。不同圖形化用戶端的入口名稱略有差異,常見路徑是「設定」→「參數設定」→「允許區域網路連線」,或「設定檔」→「覆寫」→「全域覆寫」。修改後必須重新載入設定或重新啟動核心,否則舊的監聽狀態不會改變。

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

如果用戶端已自動管理 mixed-port,應優先透過圖形介面的連接埠設定進行修改,避免主設定、覆寫檔案與用戶端偏好設定寫入不同數值。排查時應以用戶端日誌中實際顯示的監聽連接埠為準,而不是只查看訂閱檔案中的欄位。

為共享連接埠新增驗證

mihomo 支援透過 authentication 為 HTTP 與 SOCKS 代理設定驗證。家庭網路中若有訪客裝置,或電腦連線的網路並非完全受控,可以設定獨立的登入憑證。使用者名稱與密碼應自行產生,不要沿用訂閱網站、電子郵件或系統帳戶的密碼。

mixed-port: 7890
allow-lan: true
bind-address: '*'
authentication:
  - "lanuser:請自行替換為範例強密碼"

並非所有電視系統的手動代理頁面都提供使用者名稱與密碼欄位。如果終端裝置不支援代理驗證,可以將防火牆入站範圍限制為指定 IP,例如只允許手機 192.168.1.35 存取 TCP 7890,或在路由器中為可信任裝置分配固定的 DHCP 位址。

找出電腦的區域網路位址並驗證監聽狀態

查看 Windows IPv4 位址

在 Windows 11 中開啟「設定」→「網路和網際網路」→「Wi-Fi」→「目前網路內容」,尋找「IPv4 位址」。也可以在 PowerShell 執行 ipconfig,選擇目前使用中的無線區域網路介面卡,不要誤用 WSL、Hyper-V、Tailscale 或虛擬機器建立的位址。

ipconfig

無線區域網路介面卡 WLAN:
   IPv4 位址 . . . . . . . . . . . : 192.168.1.20
   子網路遮罩  . . . . . . . . . . . : 255.255.255.0
   預設閘道  . . . . . . . . . . . : 192.168.1.1

在這個範例中,其他裝置要填寫的代理伺服器是 192.168.1.20,連接埠是 7890127.0.0.1 永遠代表裝置本身:在手機上填寫它,只會讓手機嘗試連線至手機自己的 7890 連接埠。

查看 macOS 與 Linux 位址

確認位址後,可以檢查連接埠是否正在監聽。Windows PowerShell 使用 Get-NetTCPConnection -LocalPort 7890;Linux 使用 ss -lntp | grep 7890;macOS 可以使用 lsof -nP -iTCP:7890 -sTCP:LISTEN。如果輸出只出現 127.0.0.1:7890,表示監聽仍限於本機;出現 0.0.0.0:7890 或電腦的區域網路位址,才具備接收區域網路連線的條件。

放行 Windows、macOS 與 Linux 防火牆

Windows Defender 防火牆

先在「設定」→「網路和網際網路」→「Wi-Fi」→「目前網路」中,將網路設定檔設為「私人網路」。接著開啟「Windows 安全性」→「防火牆與網路保護」→「進階設定」→「輸入規則」→「新增規則」,選擇「連接埠」,協定選 TCP,特定本機連接埠填入 7890,動作選「允許連線」,設定檔只勾選「私人」。

也可以使用系統管理員 PowerShell 建立只允許本機子網路存取的規則:

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

HTTP 代理與 SOCKS5 的主要連線使用 TCP。只有在用戶端、應用程式與核心都明確使用 SOCKS5 UDP 轉送時,才需要依實際需求額外放行 UDP 7890。不要將「連接埠測試失敗」直接歸因於 UDP,因為手機 Wi-Fi 頁面設定的 HTTP 代理首先依賴 TCP。

macOS 與 Linux

macOS 防火牆以應用程式為單位管理入站連線。路徑是「系統設定」→「網路」→「防火牆」→「選項」,確認目前的 Clash 用戶端或其核心程序已獲准接收入站連線。用戶端升級後,如果核心檔案路徑改變,需重新檢查授權記錄。

使用 UFW 的 Linux 主機可以將來源限制在目前網段。假設區域網路為 192.168.1.0/24

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

手機、平板與電視如何填寫代理

iPhone 與 iPad

  1. 進入「設定」→「Wi-Fi」,點選目前 Wi-Fi 右側的資訊按鈕。
  2. 滑到頁面底部,開啟「設定代理伺服器」並選擇「手動」。
  3. 伺服器填寫電腦的區域網路位址,例如 192.168.1.20
  4. 連接埠填寫 7890;如果設定了驗證,再開啟「驗證」並填寫使用者名稱與密碼。
  5. 儲存後重新開啟瀏覽器,並在 Clash 用戶端的連線清單中檢查新連線。

這項設定只適用於目前的 Wi-Fi。切換到其他無線網路或行動數據後,不會繼續使用這台電腦的代理。部分應用程式會忽略系統 HTTP 代理,部分以 UDP 為基礎的協定也不會被 Wi-Fi 手動 HTTP 代理完整接管,這是終端代理方式的能力限制。

Android 與電視裝置

原生 Android 常見路徑是「設定」→「網路和網際網路」→「網際網路」→「目前 Wi-Fi」→「修改」→「進階選項」→「代理伺服器」→「手動」。不同廠商可能將入口放在「WLAN」→「已連線網路」→「代理設定」。主機名稱填寫電腦位址,代理連接埠填寫 7890,略過清單可保留區域網路網域或內部位址。

Android TV、Google TV 與部分電視盒子的入口通常在「設定」→「網路和網際網路」→「目前 Wi-Fi」→「代理設定」。有些電視只提供 HTTP 代理,不支援 SOCKS5,也不支援使用者名稱與密碼。這類裝置可以使用 mixed-port 的 HTTP 功能,但應用程式是否遵循系統代理仍取決於應用程式本身。

終端方式 適用情境 限制
Wi-Fi 手動 HTTP 代理 瀏覽器、應用程式商店及遵循系統代理的應用程式 無法保證接管 UDP,部分應用程式也會繞過系統代理
應用程式內 SOCKS5 支援獨立填寫 SOCKS5 的下載器或播放器 只影響目前的應用程式
將電腦設為閘道 終端無法設定代理且需要轉送更多協定 還需要 IP 轉送、路由與 NAT,不等同於啟用 allow-lan

TUN 模式為什麼不會自動共享給其他裝置

TUN 模式會在執行 Clash 的電腦上建立虛擬網路介面,並透過系統路由接管本機流量。它解決的是「本機應用程式不讀取系統代理」的問題,不會自動將電腦變成區域網路的預設閘道。手機仍以家庭路由器作為預設閘道時,其流量不會因為電腦啟用 TUN 就繞送至電腦。

區域網路手動代理與 TUN 可以同時使用:電腦自身流量進入 TUN,手機則連線至 192.168.1.20:7890。兩類流量最後都由同一個 mihomo 核心處理,但入口不同。在連線頁面中,區域網路裝置的來源位址通常會顯示為手機或電視的區域網路 IP,可藉此判斷共享請求是否確實抵達核心。

如果目標是讓不支援代理設定的遊戲主機、電視應用程式或 IoT 裝置透明地經過電腦,就需要將電腦設定為閘道、啟用 IPv4 轉送,並設定 NAT、策略路由與 DNS 轉送。Windows 的行動熱點、Linux 的 nftables、軟路由旁路閘道都屬於另一層網路方案。僅加入 allow-lan: true 不會修改其他裝置的預設路由。

連線失敗的分層排查清單

第一層:確認裝置位於可互相存取的同一網路

第二層:確認核心正在正確的介面上監聽

第三層:確認防火牆與代理協定

第四層:判斷是全部失敗還是只有部分應用程式失敗

瀏覽器可以開啟網頁,但某個影片應用程式、遊戲或投放功能失敗,表示代理連接埠與區域網路鏈路大致已可用。此時應檢查該應用程式是否使用 QUIC、UDP、區域網路探索協定或憑證釘選,而不是反覆修改 allow-lan。手動 HTTP 代理不會代理 mDNS 廣播,也無法取代區域網路投放所需的裝置探索。

如果所有網站都失敗,但 Clash 連線清單看得到請求,應查看命中的規則與策略群組。請求命中 REJECT、節點無法使用、訂閱過期或規則提供者載入失敗,都會呈現「已連線代理但頁面無法開啟」。將日誌層級暫時改為 info,記錄目標網域、命中規則與出口策略,再針對結果處理。

穩定共享時的設定建議

  1. 為執行 Clash 的電腦設定 DHCP 位址保留,例如固定分配 192.168.1.20,避免重新啟動路由器後終端代理位址改變。
  2. 只開放實際使用的 mixed-port,並將防火牆來源限制為 LocalSubnet 或明確指定的裝置 IP。
  3. 讓電腦保持喚醒並維持網路連線。電腦休眠、切換 Wi-Fi、關閉用戶端或重新啟動核心時,共享裝置會立即失去代理連線。
  4. 修改設定後先用一台手機驗證,再逐台加入電視與平板,避免同時排查多個終端的差異。
  5. 透過連線清單核對來源位址與命中規則。正常情況下,手機發起請求後,應在數秒內看到對應的區域網路 IP、目標網域與出口策略。

一套易於維護的家庭共享方案通常只需要四項明確資料:電腦區域網路位址、mixed-port 連接埠號碼、允許存取的裝置範圍、目前的防火牆規則。先確保這四項一致,再處理應用程式是否遵循系統代理、UDP 是否需要獨立方案等上層問題,排查路徑會更短。

下載 Clash 依平台選擇用戶端