使用指南 / 進階技巧

讓 WSL2 與 Docker Desktop 走 Clash 代理

進階技巧 · 2025-09-22 更新 · 約 2 分鐘

WSL2 跑在獨立的虛擬網路裡,Windows 的系統代理設定對它完全無效。子系統裡的 curlaptgit 想走代理,必須手動指向宿主機。

第一步:允許區域網連線

在 General 頁面開啟 Allow LAN。不開這個開關,Clash 只監聽 127.0.0.1,WSL2 從虛擬網絡卡過來的連線會被直接拒絕——這是最常見的「照著教程配了但連不上」的原因。

合作推薦訂閱連結從哪來?本站合作機場註冊即送 1GB 香港高速體驗流量,可直接一鍵匯入。取得高速節點

第二步:在 WSL 裡指向宿主機

宿主機在虛擬網路裡的 IP 每次重啟都可能變,從 /etc/resolv.conf 動態取更可靠。寫進 ~/.bashrc

export hostip=$(grep nameserver /etc/resolv.conf | awk '{print $2}')
export http_proxy="http://$hostip:7890"
export https_proxy="http://$hostip:7890"

如果 WSL2 開了映象網路模式(.wslconfig 裡的 networkingMode=mirrored,需要 Windows 11),子系統和宿主機共用網路棧,直接寫 127.0.0.1:7890 就行,上面這一串可以省掉。

Docker Desktop

拉映象的是 Docker 守護程序,不受容器內環境變數影響,要在 Settings → Resources → Proxies 裡填 http://host.docker.internal:7890。容器內部的程式要走代理是另一回事,得在 docker run 時單獨傳 -e http_proxy=...

最後一個坑:Windows 防火牆。首次從 WSL 連過來會被攔下且不彈提示,去防火牆的入站規則裡確認 Clash for Windows 在專用網路下是允許的。