代理共享的連線路徑與適用範圍
區域網路代理共享,是讓其他裝置連線至電腦上由 Clash 或 Clash Meta(mihomo)核心提供的代理監聽連接埠。請求路徑為「手機或電視 → 電腦的區域網路位址與連接埠 → 核心規則 → 對應的出口」。電腦必須持續開機,用戶端核心也必須持續執行;電腦進入睡眠後,這條連線路徑就會中斷。
本文使用以下範例參數:電腦 IPv4 位址為 192.168.1.20,混合連接埠為 7890,家用網段為 192.168.1.0/24。這些是設定範例,不代表已檢測讀者的網路。實際操作時,請將電腦位址替換為目前網路介面取得的位址。
- 適用情境:裝置或應用程式支援手動設定 HTTP 代理或 SOCKS5 代理。
- 必要條件:裝置可直接連線至電腦的區域網路位址,且電腦防火牆允許對應的輸入連線。
- 使用限制:Wi-Fi 的 HTTP 代理設定通常不會涵蓋所有應用程式,也不等同於整台裝置的透明代理。
- 注意事項:只分享監聽連接埠,不必將電腦設為預設閘道,也不需要啟用 TUN 模式。
mixed-port、allow-lan 與 bind-address
這三個欄位各自處理不同問題:監聽哪些協定、是否接受區域網路連線,以及要繫結哪個本機位址。它們都位於設定檔最上層,與 proxies、proxy-groups、rules 同層,不應縮排到個別代理節點底下。
| 欄位 | 範例值 | 用途 |
|---|---|---|
mixed-port | 7890 | 同一個連接埠可接收 HTTP 與 SOCKS 代理請求。 |
allow-lan | true | 允許核心接受來自區域網路裝置的代理連線。 |
bind-address | "*" | 繫結所有位址;實際可存取的來源由防火牆限制。 |
port | 7891 | 獨立的 HTTP 代理入口,使用混合連接埠時不必另外設定。 |
socks-port | 7892 | 獨立的 SOCKS 代理入口,可依需求設定。 |
最精簡的共享欄位設定
mixed-port: 7890
allow-lan: true
bind-address: "*"
這是要合併至現有設定檔的欄位片段,不是完整的訂閱設定。請保留原有節點、策略群組、DNS 與規則。若最上層已經有 mixed-port,直接修改原值即可,不要再新增第二個同名欄位;也請確認 port 或其他監聽服務沒有重複使用 7890。
"*" 必須保留引號,避免 YAML 將星號解析為別名語法。若只想監聽某張網路介面,可將 bind-address 改為 192.168.1.20。此設定仰賴位址固定;電腦切換網路或 DHCP 位址變更後,可能導致監聽失敗,屆時須同步更新設定。
external-controller 是控制介面,不是供裝置連線的代理入口。手機的代理連接埠應填入 mixed-port 對應的 7890,不能填控制介面的連接埠。為了共享代理而將控制介面開放至區域網路,並非必要步驟。
電腦端:確認位址、套用設定並檢查監聽狀態
1. 取得目前使用的區域網路 IPv4 位址
Windows 可開啟「設定」→「網路和網際網路」→「Wi-Fi」→目前網路的內容,查看 IPv4 位址;有線連線則在「乙太網路」頁面查看。也可以開啟終端機執行 ipconfig,找到目前連線中的網路介面卡 IPv4 位址與子網路遮罩。
macOS 可前往「系統設定」→「網路」→目前的連線→「詳細資訊」→「TCP/IP」。不要使用迴路位址 127.0.0.1、虛擬網路介面卡位址,或已中斷連線的網路介面卡位址。其他裝置上的 127.0.0.1 指向該裝置本身,不會指向這台電腦。
2. 修改實際生效的設定
- 在用戶端確認目前啟用的設定,記下現有連接埠與區域網路存取開關的狀態。
- 使用用戶端支援的設定編輯、覆寫或合併功能,加入上述三個最上層欄位。
- 儲存後重新載入設定;如果用戶端要求重新啟動核心,請依提示操作。
- 檢查執行記錄,確認沒有 YAML 解析錯誤或連接埠占用錯誤。
不同用戶端的設定名稱與覆寫優先順序各不相同。介面中的「允許區域網路連線」通常對應 allow-lan,但直接編輯訂閱產生的檔案,可能會在更新後被覆蓋。建議優先使用用戶端提供的持續性覆寫方式,再檢查最終執行設定,而不只查看編輯器中的原始訂閱內容。
3. 檢查連接埠是否監聽可連線的位址
Windows PowerShell 可執行以下命令,查看 TCP 監聽位址。macOS 可使用第二個命令:
# Windows PowerShell
Get-NetTCPConnection -State Listen -LocalPort 7890
# macOS
lsof -nP -iTCP:7890 -sTCP:LISTEN
如果只看到 127.0.0.1:7890,表示其他裝置無法透過電腦的區域網路 IPv4 位址連線至該監聽服務。繫結所有 IPv4 位址時,常見輸出為 0.0.0.0:7890;繫結單一位址時,應看到對應的 192.168.1.20:7890。若顯示 IPv6 萬用位址監聽,還須配合系統雙堆疊行為與遠端測試,確認 IPv4 是否可連線,不能只憑單一監聽符號下結論。
防火牆與 Wi-Fi 隔離設定
allow-lan: true 不會自動替作業系統開放防火牆。如果連接埠正在監聽,但另一台裝置連線逾時,請優先檢查網路設定檔、輸入規則與無線網路隔離,不要先更換節點。
Windows:只允許私人網路的 TCP 7890
在可信任的家用網路中,先確認 Windows 將目前連線識別為「私人網路」。開啟「Windows 安全性」→「防火牆與網路保護」→「進階設定」,在「輸入規則」中新增連接埠規則:選擇 TCP、指定本機連接埠 7890、允許連線,並只勾選「私人」。接著在規則「內容」→「範圍」中,將遠端 IP 範圍限制為實際的家用網段。
也可以在系統管理員 PowerShell 中建立一條限制規則。以下範例只允許 192.168.1.0/24 存取電腦位址 192.168.1.20 上的 TCP 7890;執行前請依實際網路修改位址。
New-NetFirewallRule -DisplayName "Clash LAN TCP 7890" `
-Direction Inbound -Action Allow -Protocol TCP `
-LocalAddress 192.168.1.20 -LocalPort 7890 `
-RemoteAddress 192.168.1.0/24 -Profile Private
這條規則用於本文的 HTTP 代理連線測試,不代表已設定 SOCKS5 UDP 轉送。如果已有範圍較廣的允許規則,也必須一併檢查;新增限制規則不會自動收緊其他允許規則。不要為了長期解決連線問題而關閉整個防火牆。
macOS 與路由器端檢查
- 在 macOS「系統設定」→「網路」→「防火牆」→「選項」中,檢查相關用戶端或實際執行核心的輸入連線權限。「阻止所有傳入連線」可能會影響代理共享。
- 手機與電腦即使連上名稱相同的 Wi-Fi,也可能位於訪客網路、不同 VLAN,或受到 AP 隔離而無法互通。
- 電腦使用網路線、手機使用 Wi-Fi 不一定有問題,關鍵在於路由器是否允許兩者互相連線。
- 不必設定路由器的公網連接埠轉送,也不要將代理連接埠加入 DMZ。
手機、電視與遊戲主機要填哪些資料
iPhone 與 iPad:設定目前 Wi-Fi 的 HTTP 代理
- 前往「設定」→「Wi-Fi」,點選目前網路旁的資訊按鈕。
- 開啟「設定代理伺服器」,選擇「手動」。
- 伺服器填入
192.168.1.20,連接埠填入7890。 - 本文的基本設定未啟用代理驗證,因此請保持驗證關閉,儲存後使用瀏覽器測試。
伺服器欄位只填 IP 位址,不要填入 http://,也不要將連接埠一起填入。此設定只適用於目前的 Wi-Fi;切換至行動數據後,將無法繼續使用這個區域網路位址。
Android:在目前的網路中選擇手動代理
常見路徑為「設定」→「網路和網際網路」→「網際網路」→目前的 Wi-Fi→編輯→「進階選項」→「代理」→「手動」。各品牌系統的名稱可能不同。代理主機名稱填入 192.168.1.20,代理連接埠填入 7890。測試時先不要加入複雜的略過位址清單,以免測試網域被排除。
Android 的 Wi-Fi 代理同樣取決於應用程式是否遵循系統代理設定。瀏覽器運作正常但某個應用程式無法連線,不代表連接埠設定一定有誤;請先確認該應用程式是否支援 HTTP 代理,或是否提供獨立的網路設定。
電視與遊戲主機:依裝置提供的代理類型設定
如果網路設定提供「HTTP 代理伺服器」,填入相同的位址與連接埠即可。若只提供 SOCKS5 設定,混合連接埠也能接收相應的代理請求,但應用程式必須確實支援 SOCKS5。沒有手動代理選項的裝置,無法只靠修改 DNS 就取得 HTTP 代理功能。
遊戲主機設定 HTTP 代理後,商店頁面、下載或登入流程可能會受到影響,但線上遊戲的資料流不一定經過該連接埠。尤其是 UDP 通訊,不能因為一次網頁瀏覽成功,就推斷所有線上遊戲流量都已透過代理。除非電腦已另外設定 IP 轉送、路由與透明代理,否則也不要將電腦位址填入預設閘道。
分層驗證:連接埠、代理請求與規則出口
先確認連線能抵達監聽連接埠,再檢查目標網站與規則。以下命令應在另一台區域網路電腦上執行;在代理電腦本機測試只能驗證本機連線路徑,無法充分確認防火牆與無線網路隔離狀況。
# Windows PowerShell:檢查遠端 TCP 連接埠
Test-NetConnection 192.168.1.20 -Port 7890
# Windows 使用 curl.exe;macOS 或 Linux 可使用 curl
curl.exe -I --connect-timeout 5 --max-time 15 \
--proxy http://192.168.1.20:7890 https://example.com/
上方的反斜線續行語法適用於常見的 Unix Shell。在 Windows 中可將 curl 命令寫成以下單行,避免 PowerShell 續行語法差異:
curl.exe -I --connect-timeout 5 --max-time 15 --proxy http://192.168.1.20:7890 https://example.com/
https://example.com/ 是連線測試目標,不是專門用來驗證代理出口的服務。看到 200 Connection established 只代表 HTTP CONNECT 通道已建立,還須檢查後續 TLS 連線與目標回應。接著前往用戶端的連線清單查看來源 IP、命中規則與出口鏈,確認這項請求是 DIRECT 直連,還是經過某個代理策略。
| 狀況 | 優先檢查項目 | 下一步 |
|---|---|---|
| 連線遭拒 | 核心未執行、連接埠填錯、只監聽迴路位址,或遭防火牆主動拒絕 | 確認最終設定與 TCP 監聽結果。 |
| 連線逾時 | 防火牆丟棄封包、訪客網路隔離,或電腦位址已變更 | 確認雙方的網段與輸入規則。 |
| 回應 HTTP 407 | 執行中的設定要求代理驗證 | 檢查驗證設定與裝置支援情況,不要反覆修改節點。 |
| 連接埠可連線,但網站無法開啟 | 規則、節點、目標網域解析或上游連線 | 查看該請求的記錄與實際出口。 |
| 瀏覽器正常,遊戲無法連線 | 應用程式略過代理,或使用未涵蓋的 UDP 通訊 | 確認協定與裝置的代理支援能力。 |
若要驗證 SOCKS5,可使用 curl --proxy socks5h://192.168.1.20:7890 https://example.com/。其中 socks5h 會將網域交由代理端解析,而 socks5 通常由 curl 在本機解析。兩者可能得到不同結果,但這項差異本身不代表混合連接埠異常。
規則、DNS、TUN 與日常維護
共享裝置仍會使用電腦端的規則
在 mode: rule 模式下,進入混合連接埠的請求會依 rules 順序比對,並使用電腦端策略群組目前選取的出口。啟用區域網路共享不會自動建立一套獨立的手機規則,也不會強制所有網站經過遠端節點。若要確認出口,請查看對應請求的比對結果,而不只是看電腦用戶端是否顯示「已連線」。
代理入口不等於 DNS 服務入口
手機設定 HTTP 代理後,不必再把 DNS 位址一律改成電腦 IP。mixed-port 不是 DNS 監聽連接埠;是否啟用內建 DNS、要監聽哪個位址,則由 dns.enable 與 dns.listen 等設定控制。是否向區域網路提供 DNS 服務,是另一項部署決策,也須另外考量 UDP/TCP 連接埠與防火牆設定。
HTTPS 請求透過 HTTP CONNECT 傳遞網域時,代理端通常會參與後續解析,但應用程式也可能自行查詢 DNS、直接連線或使用其他網路堆疊。因此,手動設定 HTTP 代理不能證明「所有 DNS 都已進入核心」。
共享連接埠不必啟用 TUN
TUN 用於接管進入虛擬網路介面的流量,常見用途是本機透明代理。若只是讓手機連線至電腦的 7890 連接埠,不必另外啟用 TUN。即使電腦已啟用 TUN,也不會自動接管同一個 Wi-Fi 下所有裝置的流量;這些裝置仍須透過路由將流量送往對應閘道。
固定位址並保留復原步驟
- 在路由器中為電腦設定 DHCP 位址保留,降低電腦重新啟動後手機代理位址失效的機率。
- 訂閱更新後,請確認持續性覆寫仍然生效,特別是
allow-lan、監聽位址與連接埠。 - 長期使用時,請檢查用戶端支援的
authentication驗證設定;電視等裝置可能不支援驗證,須先確認相容性。 - 不再共享時,請將裝置上的 Wi-Fi 代理設為「關閉」或「無」,再將電腦的
allow-lan設為false並重新載入設定。 - 刪除不再需要的防火牆輸入規則,避免日後其他程序占用相同連接埠時,仍可從區域網路連線。
判斷共享設定完成的標準是:遠端裝置能連上指定連接埠、實際請求出現在核心連線清單中、請求命中預期規則,而且裝置所需的應用程式確實支援該代理方式。將這四項分開確認,比同時修改 DNS、TUN、閘道與節點更容易找出問題。