mixed-port 與 allow-lan 分別控制什麼
區域網路代理共享的基本架構很簡單:電腦執行 Clash、Clash Meta 或 mihomo 用戶端並監聽代理連接埠,手機、平板或電視則將這台電腦的區域網路 IPv4 位址填入代理伺服器。其他裝置發出的 HTTP 或 SOCKS 請求會先抵達電腦,再由電腦上的核心依照目前規則與策略群組處理。
mixed-port 是混合代理連接埠,同一個連接埠可同時接受 HTTP 代理與 SOCKS5 代理連線。例如設定為 7890 後,支援手動 HTTP 代理的電視可以連線至該連接埠,支援 SOCKS5 的應用程式也能使用同一個連接埠。相較於分別設定 port、socks-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,連接埠是 7890。127.0.0.1 永遠代表裝置本身:在手機上填寫它,只會讓手機嘗試連線至手機自己的 7890 連接埠。
查看 macOS 與 Linux 位址
- macOS:開啟「系統設定」→「網路」→「Wi-Fi」→「詳細資訊」→「TCP/IP」,讀取 IPv4 位址。
- Linux 桌面:開啟「設定」→「網路」→「目前連線」→「詳細資訊」,或執行
ip -4 address。 - 位址通常位於
192.168.0.0/16、10.0.0.0/8或172.16.0.0/12私有網段,但仍應以目前網路實際分配的結果為準。
確認位址後,可以檢查連接埠是否正在監聽。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
- 進入「設定」→「Wi-Fi」,點選目前 Wi-Fi 右側的資訊按鈕。
- 滑到頁面底部,開啟「設定代理伺服器」並選擇「手動」。
- 伺服器填寫電腦的區域網路位址,例如
192.168.1.20。 - 連接埠填寫
7890;如果設定了驗證,再開啟「驗證」並填寫使用者名稱與密碼。 - 儲存後重新開啟瀏覽器,並在 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 不會修改其他裝置的預設路由。
連線失敗的分層排查清單
第一層:確認裝置位於可互相存取的同一網路
- 核對電腦與手機位址,例如電腦為
192.168.1.20、手機為192.168.1.35,遮罩同為255.255.255.0。 - 關閉路由器的「AP 隔離」、「用戶端隔離」或「訪客網路裝置隔離」。訪客 Wi-Fi 通常禁止存取主要網路中的裝置。
- 電腦同時連線網路線、Wi-Fi 與虛擬網卡時,使用與手機位於同一網段的實體介面位址。
- DHCP 重新分配位址後,手機中儲存的舊代理位址會失效。可以在路由器上為電腦設定 DHCP 位址保留。
第二層:確認核心正在正確的介面上監聽
- 檢查
allow-lan的執行時狀態,而不是只檢查訂閱原始檔案。 - 確認實際的 mixed-port 是
7890,沒有被用戶端自動改成7897、7893等其他連接埠。 - 重新載入設定後查看日誌,確認連接埠未被其他程式佔用。
- 如果監聽位址仍是
127.0.0.1,請檢查用戶端是否有獨立的「繫結位址」或「區域網路連線」開關覆蓋 YAML。
第三層:確認防火牆與代理協定
- 暫時停用代理驗證進行一次對照測試;成功後再恢復驗證,並檢查終端是否支援輸入憑證。
- Windows 防火牆規則應符合目前的網路設定檔。規則只勾選「私人」,但目前連線被識別為「公用」時,入站連線仍會遭到封鎖。
- 終端手動代理類型選擇 HTTP 時,仍可連線至 mixed-port;不要將連接埠誤填為控制連接埠
9090。 - 查看 Clash 連線清單:完全看不到來源 IP,問題通常位於區域網路或防火牆;看得到連線但請求失敗,則再檢查規則、DNS、節點與策略群組。
第四層:判斷是全部失敗還是只有部分應用程式失敗
瀏覽器可以開啟網頁,但某個影片應用程式、遊戲或投放功能失敗,表示代理連接埠與區域網路鏈路大致已可用。此時應檢查該應用程式是否使用 QUIC、UDP、區域網路探索協定或憑證釘選,而不是反覆修改 allow-lan。手動 HTTP 代理不會代理 mDNS 廣播,也無法取代區域網路投放所需的裝置探索。
如果所有網站都失敗,但 Clash 連線清單看得到請求,應查看命中的規則與策略群組。請求命中 REJECT、節點無法使用、訂閱過期或規則提供者載入失敗,都會呈現「已連線代理但頁面無法開啟」。將日誌層級暫時改為 info,記錄目標網域、命中規則與出口策略,再針對結果處理。
穩定共享時的設定建議
- 為執行 Clash 的電腦設定 DHCP 位址保留,例如固定分配
192.168.1.20,避免重新啟動路由器後終端代理位址改變。 - 只開放實際使用的 mixed-port,並將防火牆來源限制為
LocalSubnet或明確指定的裝置 IP。 - 讓電腦保持喚醒並維持網路連線。電腦休眠、切換 Wi-Fi、關閉用戶端或重新啟動核心時,共享裝置會立即失去代理連線。
- 修改設定後先用一台手機驗證,再逐台加入電視與平板,避免同時排查多個終端的差異。
- 透過連線清單核對來源位址與命中規則。正常情況下,手機發起請求後,應在數秒內看到對應的區域網路 IP、目標網域與出口策略。
一套易於維護的家庭共享方案通常只需要四項明確資料:電腦區域網路位址、mixed-port 連接埠號碼、允許存取的裝置範圍、目前的防火牆規則。先確保這四項一致,再處理應用程式是否遵循系統代理、UDP 是否需要獨立方案等上層問題,排查路徑會更短。