進階設定 預計閱讀 12 分鐘

Clash 區域網共享代理:mixed-port 與允許區域網路連線設定

說明 mixed-port 與 allow-lan 的用途,示範如何讓同一 Wi-Fi 下的電視、遊戲機或另一台電腦透過本機 Clash 代理上網,並介紹防火牆放行與安全注意事項。

先確認區域網共享代理的運作方式

區域網共享代理是讓一台正在執行 Clash 的電腦充當代理伺服器。電視、手機、平板或另一台電腦仍連線至原本的路由器,只將應用程式產生的 HTTP 或 SOCKS 流量傳送到這台電腦的 Clash 監聽連接埠。Clash 會依規則選擇 DIRECT、代理節點或其他策略組,再將結果回傳給裝置。

這種方式不等於把電腦改造成完整路由器,也不會自動接管同一 Wi-Fi 下的所有裝置。接入裝置必須支援手動填寫代理伺服器,或由瀏覽器、下載工具等應用程式個別設定代理。部分遊戲、語音、UDP 影片與系統更新服務會繞過 HTTP 代理,因此應先確認裝置與應用程式是否支援。

項目 範例值 作用
Clash 主機位址 192.168.1.23 接入裝置可存取的區域網 IPv4 位址
mixed-port 7890 同時接受 HTTP 與 SOCKS5 代理連線
allow-lan true 允許其他主機連線至 Clash 監聽連接埠
bind-address * 在可用網路介面上監聽連線
用戶端代理位址 192.168.1.23:7890 填入電視、手機或另一台電腦

mixed-port、allow-lan 與監聽位址分別控制什麼

mixed-port 合併 HTTP 與 SOCKS5 入口

mixed-port 是混合代理連接埠,可在同一個 TCP 連接埠上識別 HTTP 代理與 SOCKS5 代理請求。設定為 7890 後,支援 HTTP 代理的電視可以連線至 192.168.1.23:7890,支援 SOCKS5 的桌面程式也能使用相同位址。

如果設定中同時存在 port: 7890socks-port: 7891mixed-port: 7890,可能因重複監聽而導致啟動失敗。通常保留一個 mixed-port 就足夠。確實需要分開入口時,再使用不同連接埠,例如 HTTP 使用 7890、SOCKS5 使用 7891。

allow-lan 決定是否接受區域網連線

allow-lan: true 允許其他裝置連線至代理連接埠。設為 false 時,本機應用程式仍可能透過回環位址使用 Clash,但來自 192.168.x.x10.x.x.x 網段的連線會被拒絕。許多圖形化用戶端會將其顯示為「允許區域網路連線」、「LAN 存取」或「Allow LAN」。

bind-address 限定監聽介面

Clash Meta(mihomo)設定可透過 bind-address 指定監聽位址。* 表示在可用介面上監聽,適合家庭區域網測試;指定 192.168.1.23 則只會繫結該位址。主機位址若因 DHCP 變更,寫死的繫結位址可能失效,因此長期使用時可在路由器中為該電腦設定 DHCP 位址保留。

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

不同用戶端儲存設定的位置不完全相同。常見操作路徑是「設定」→「參數設定」→「允許區域網路連線」,接著確認「混合連接埠」是否為 7890。若用戶端提供「設定覆寫」或「全域擴充設定」,應在覆寫層設定這些欄位,避免訂閱更新後被遠端設定覆蓋。修改完成後重新載入設定或重新啟動核心,並觀察記錄中是否出現連接埠監聽錯誤。

找出主機區域網位址並檢查連接埠

Windows 查看 Wi-Fi 位址

開啟「設定」→「網路和網際網路」→「Wi-Fi」→「硬體內容」,找到 IPv4 位址。也可以在 PowerShell 執行:

ipconfig

在目前的無線網卡下找到類似 192.168.1.23 的 IPv4 位址。不要選擇虛擬網卡、TUN 網卡、Docker 網卡,或以 169.254 開頭的自動指派位址。接著使用 PowerShell 檢查 7890 是否正在監聽:

Get-NetTCPConnection -LocalPort 7890 -State Listen

如果輸出中的 LocalAddress0.0.0.0 或主機區域網位址,表示連接埠已在相應介面上監聽。若只顯示 127.0.0.1,應重新檢查 allow-lanbind-address

macOS 與 Linux 查看位址

macOS 可以開啟「系統設定」→「網路」→「Wi-Fi」→「詳細資訊」→「TCP/IP」,查看 IPv4 位址。終端機也可以執行 ipconfig getifaddr en0;如果 Wi-Fi 介面不是 en0,先用 networksetup -listallhardwareports 確認介面名稱。

Linux 桌面可在「設定」→「網路」→「Wi-Fi」→目前連線中查看 IPv4,終端機則執行:

ip -4 address
ss -lntp | grep 7890

確認位址後,在另一台裝置上測試連接埠是否可達。Windows PowerShell 可以執行 Test-NetConnection 192.168.1.23 -Port 7890。macOS 或 Linux 可以執行 nc -vz 192.168.1.23 7890。只有 TCP 測試成功後,才繼續檢查代理規則與節點。

在電腦、手機、電視與遊戲機上填寫代理

另一台 Windows 或 macOS 電腦

Windows 11 路徑為「設定」→「網路和網際網路」→「代理」→「手動設定代理」→「設定」。伺服器填寫 192.168.1.23,連接埠填寫 7890。儲存後先開啟瀏覽器測試,再測試目標應用程式。這裡設定的是系統 HTTP 代理,不保證所有桌面軟體都會讀取。

macOS 路徑為「系統設定」→「網路」→「Wi-Fi」→「詳細資訊」→「代理伺服器」。勾選「網頁代理伺服器(HTTP)」和「安全網頁代理伺服器(HTTPS)」,兩項伺服器都填寫 Clash 主機位址,連接埠皆填 7890。使用完畢後取消勾選,避免主機離線後網路請求持續等待。

Android 與 iPhone

Android 常見路徑為「設定」→「網路和網際網路」→「網際網路」→目前 Wi-Fi →「編輯」→「進階選項」→「代理伺服器」→「手動」。代理主機名稱填寫 192.168.1.23,連接埠填寫 7890。不同廠商的選單名稱略有差異,但設定通常會儲存在目前的 Wi-Fi 網路中。

iPhone 與 iPad 路徑為「設定」→「Wi-Fi」→目前網路右側的資訊按鈕→「設定代理伺服器」→「手動」。伺服器填寫主機的區域網位址,連接埠填寫 7890。HTTP 代理主要影響遵循系統代理設定的應用程式;某些應用程式會自行建立連線,不會經過這個入口。

電視與串流媒體裝置

Android TV 或 Google TV 通常可以在「設定」→「網路和網際網路」→目前 Wi-Fi →「代理伺服器設定」中選擇手動設定。伺服器主機名稱填寫 192.168.1.23,代理連接埠填寫 7890。電視連線成功但應用程式仍提示區域或網路錯誤時,應查看 Clash 記錄中是否出現該電視位址的請求。

代理只會處理應用程式實際傳送到代理連接埠的流量。電視的 DNS 探測、時間同步、區域網投放與部分 UDP 流量可能會直接連線。為避免影響投放,可在 Clash 規則中讓 RFC1918 私有位址與區域網網域維持 DIRECT。

PlayStation、Nintendo Switch 與 Xbox

PlayStation 5 可進入「設定」→「網路」→「設定」→「設定網際網路連線」,選取目前網路後開啟「進階設定」,將「代理伺服器」改為使用,填寫主機位址與 7890 連接埠。Nintendo Switch 可進入「設定」→「網際網路」→「網際網路設定」→目前網路→「變更設定」→「代理伺服器設定」。

遊戲機的代理設定通常只涵蓋下載、商店或部分 HTTP 請求。連線對戰大量使用 UDP,NAT 類型偵測也不會完整經過 HTTP 代理。Xbox 系統沒有通用的手動 HTTP 代理入口時,不能只靠 mixed-port 接管所有流量,需要使用旁路由,或將支援透明代理的裝置設為閘道。

設定防火牆,只允許可信任的區域網

Clash 已監聽 7890,不代表作業系統防火牆一定允許其他裝置存取。正確做法是在家庭或可信任網路設定檔中開放 TCP 7890,並限制來源網段。不要在機場、飯店或校園公共 Wi-Fi 上長期啟用區域網共享。

Windows Defender 防火牆

進入「Windows 安全性」→「防火牆與網路保護」→「進階設定」→「輸入規則」→「新增規則」。選擇「連接埠」,協定選 TCP,特定本機連接埠填 7890;動作選擇允許連線;設定檔只勾選「私人」。在「範圍」中將遠端 IP 限制為家庭網段,例如 192.168.1.0/24

如果 Windows 將目前 Wi-Fi 識別為公用網路,先進入「設定」→「網路和網際網路」→「Wi-Fi」→目前網路,將網路設定檔改為「私人網路」。僅應在可信任的家庭網路執行此操作。

Linux 使用 UFW 限制來源

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

如果家中使用 192.168.50.0/24,命令中的網段也要同步修改。macOS 出現「是否允許傳入連線」提示時,應確認程式是目前使用的 Clash 用戶端或 mihomo 核心,再允許家庭網路連線。

認證、規則與 DNS 的安全設定

多人共用網路時為代理入口加入認證

mihomo 支援透過 authentication 為 HTTP 與 SOCKS 入口設定使用者名稱與密碼。宿舍、合租網路或訪客較多的 Wi-Fi 建議啟用認證,並在用戶端代理設定中填寫相應憑證。

mixed-port: 7890
allow-lan: true
bind-address: "*"
authentication:
  - "lanuser:change-this-password"

認證資訊屬於敏感設定,不要提交至公開儲存庫,也不要直接寫入會被分享的訂閱檔案。部分電視不支援帶認證的代理;遇到這種情況,應優先透過防火牆限制裝置 IP,而不是擴大連接埠的存取範圍。

保留區域網直連規則

共享代理時,印表機、NAS、投放接收器與路由器後台應繼續直連。規則會由上到下比對,可以將私有網段放在通用代理規則之前,並在最後保留 MATCH 作為兜底。

rules:
  - IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
  - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
  - IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - DOMAIN-SUFFIX,local,DIRECT
  - MATCH,PROXY

若使用訂閱提供的規則集,應確認其中已包含私有位址直連規則。不要只看用戶端目前顯示的「規則模式」,還要檢查最終命中的策略。開啟 Clash 連線頁面或即時記錄,從來源位址、目標網域與策略名稱判斷流量是否依預期處理。

DNS 表現取決於用戶端應用程式

HTTP 代理請求通常會攜帶目標主機名稱,Clash 可以在代理端處理網域解析,但接入裝置仍可能自行執行 DNS 查詢。SOCKS5 是否由代理端解析,也取決於應用程式使用遠端解析還是本機解析。瀏覽器存取正常而某個應用程式失敗時,應分別檢查應用程式是否遵循系統代理、DNS 是否可用,以及是否依賴 UDP。

依序排查連線失敗問題

  1. 確認主機在線。執行 Clash 的電腦不能進入睡眠,切換 Wi-Fi 後要重新確認區域網位址。
  2. 確認核心正常。先在主機本機使用 127.0.0.1:7890 測試代理,排除訂閱、節點與規則故障。
  3. 確認監聽範圍。檢查 allow-lan: true,並確認 7890 監聽於 0.0.0.0* 或正確的區域網位址。
  4. 確認第二層網路互通。兩台裝置應位於彼此可互訪的同一網路。路由器的 AP 隔離與訪客網路隔離都會阻止裝置互相連線。
  5. 確認防火牆規則。暫時關閉防火牆只適合短時間定位問題,確認原因後應恢復防火牆,並建立限制網段的輸入規則。
  6. 確認應用程式使用代理。在 Clash 記錄中篩選接入裝置的 IP。如果完全沒有記錄,問題通常出在裝置代理設定或網路隔離,而不是節點。

可以在另一台已安裝 curl 的裝置上執行以下命令。預期結果是成功建立與 Clash 主機 7890 連接埠的連線,並回傳 HTTP 回應標頭:

curl -I -x http://192.168.1.23:7890 https://www.gstatic.com/generate_204

如果提示 Connection refused,通常是連接埠未監聽或 allow-lan 未啟用;如果持續逾時,優先檢查防火牆、訪客網路與 AP 隔離;如果已連線至代理但目標請求逾時,再檢查 Clash 記錄、節點延遲與規則命中結果。

下載Clash 選擇對應平台安裝套件