設定指南 Clash Meta TUN 模式 Linux 代理

Clash Meta 在 Linux 怎麼開啟 TUN 模式?配置步驟詳解

2026 年 7 月 19 日 更新於 2026 年 7 月 19 日 約 12 分鐘閱讀

前言:TUN 模式的作用

在 Linux 上使用 Clash Meta 時,最常見的困惑是「系統代理明明已經開啟,某些應用程式卻仍然無法通過代理」。這是因為系統代理通常只對遵循 HTTP、HTTPS 或 SOCKS 設定的程式有效,部分命令列工具、遊戲、容器服務、DNS 請求以及沒有代理選項的應用程式,可能完全不理會桌面的代理環境。

TUN 模式會在 Linux 系統中建立一張虛擬網路介面,將符合條件的流量交給 Clash Meta 核心處理。與只修改瀏覽器代理不同,它可以在較底層的位置接管連線,讓不支援代理設定的程式也能套用分流規則。對於需要統一管理 DNS、避免解析繞過代理,或希望整台主機使用規則分流的使用者來說,TUN 是非常實用的方案。

不過,TUN 並不是「開關一按就完成」。Linux 的發行版、核心版本、網路管理工具與桌面環境各有差異;如果權限不足、虛擬介面名稱衝突,或 YAML 縮排錯誤,都可能造成核心啟動失敗。因此本文會從準備工作開始,逐步完成設定、驗證與回滾,不假設你已經熟悉 Linux 網路管理。

本文適用範圍

適用於使用 Clash Meta 或 Mihomo 核心的 Linux 桌面與伺服器環境。不同客戶端的介面名稱可能略有差異,但 YAML 欄位與終端機檢查方式大致相同。

1環境準備與權限檢查

開始前,請先確認你使用的是支援 TUN 的核心版本。早期的 Clash 核心在功能與欄位上可能不完整,建議使用近期版本的 Clash Meta 或 Mihomo,並從可信任的來源取得執行檔。若你使用桌面客戶端,請在核心管理頁面查看目前實際載入的核心,而不要只看應用程式名稱。

確認 Linux 核心與架構

先在終端機執行以下指令,記錄系統核心版本與 CPU 架構。這些資訊有助於選擇正確的執行檔,也方便日後排查權限或相容性問題。

uname -a uname -m cat /etc/os-release

常見架構包括 x86_64aarch64armv7l。如果下載的核心架構不符,即使檔案已經加入執行權限,也會出現「Exec format error」。此外,請確認目前使用者具備執行 sudo 的權限,因為建立 TUN 介面與修改路由通常需要更高權限。

檢查 tun 模組

多數主流 Linux 發行版會將 TUN 支援編譯進核心,或以模組方式提供。可先嘗試載入模組:

sudo modprobe tun ls -l /dev/net/tun

如果看到 /dev/net/tun,通常表示核心已具備基本條件。若檔案不存在,請檢查 /dev/net 是否存在,並確認目前使用的雲端主機或容器是否禁止 TUN。部分虛擬主機供應商會在宿主層關閉此功能,這種情況不是修改 Clash 配置就能解決。

先備份現有配置

編輯 YAML 前請複製一份原始檔案,例如使用 cp config.yaml config.yaml.bak。TUN 會改變路由與 DNS 行為,保留備份可以避免網路中斷後無法快速恢復。

2編輯 YAML 配置

Clash Meta 的 TUN 設定通常放在配置檔案的 tun 區塊。實際欄位會隨核心版本而變化,請以你正在使用的版本文件為準。以下是一份適合一般 Linux 桌面環境的示例,重點是展示結構與常用選項,而不是要求所有使用者完全照抄。

tun: enable: true stack: system device: Mihomo auto-route: true auto-detect-interface: true strict-route: true dns-hijack: - any:53 - tcp://any:53 dns: enable: true listen: 0.0.0.0:1053 ipv6: false enhanced-mode: fake-ip fake-ip-range: 198.18.0.1/16 nameserver: - https://1.1.1.1/dns-query - https://dns.google/dns-query fallback: - tls://8.8.8.8:853 mode: rule rules: - MATCH,PROXY

逐項理解 TUN 選項

enable: true 是啟用 TUN 的核心開關;如果它被設定為 false,其餘欄位即使正確也不會建立虛擬介面。auto-route: true 讓核心嘗試自動建立必要路由,auto-detect-interface: true 則用於辨識目前真正連接外網的介面,例如 eth0wlan0

stack 代表 TUN 網路堆疊模式。system 通常與 Linux 原生網路堆疊整合較好;某些環境也支援 gvisormixed,但它們可能有不同的效能與相容性表現。若你只是第一次設定,建議先使用文件推薦的預設值,等連線穩定後再測試其他模式。

strict-route 可讓路由行為更加嚴格,降低流量繞過代理的機會,但在多網卡、VPN、Docker 或自訂路由環境中,也可能造成區域網路服務無法存取。若開啟後發現內網、印表機或 SSH 連線異常,可以暫時關閉它進行比較。

DNS 設定的重要性

TUN 模式只處理流量並不代表 DNS 一定不會洩漏。如果應用程式仍把解析請求送往路由器,可能出現域名解析位置與代理出口不一致的情況。dns-hijack 的用途是攔截常見的 DNS 請求,再交給 Clash Meta 的 DNS 模組處理。

Fake-IP 模式會為域名分配虛擬位址,讓規則引擎能夠根據域名進行分流。部分老舊程式、區域網路設備或需要直接取得真實 IP 的服務,可能與 Fake-IP 不完全相容。遇到這些情況時,可以將特定域名加入 Fake-IP 過濾清單,而不是立刻關閉整個 DNS 模組。

YAML 縮排提醒

YAML 依賴空格表達層級,請避免使用 Tab。每一層建議固定使用兩個空格,並在修改後先讓客戶端執行配置檢查,再重新啟動核心。

3載入核心並啟動 TUN

配置完成後,不要直接把所有問題歸因於 TUN。建議先以普通代理模式啟動核心,確認訂閱、節點、規則與 DNS 基本正常,再開啟 TUN。這樣可以將「核心本身無法啟動」與「TUN 權限或路由錯誤」分開處理。

Linux 終端機啟動方式
  1. 將核心檔案放到固定位置,例如 /opt/mihomo/mihomo,並加入執行權限。
  2. 將配置檔與核心分開保存,確認配置路徑及檔名沒有拼寫錯誤。
  3. 先執行配置驗證,再使用前景模式啟動,方便直接查看錯誤訊息。
  4. 確認成功後,再建立 systemd 服務,讓核心在開機後自動啟動。
sudo chmod +x /opt/mihomo/mihomo sudo /opt/mihomo/mihomo -t -d /etc/mihomo sudo /opt/mihomo/mihomo -d /etc/mihomo

以 systemd 管理服務

如果你不想每次登入桌面後手動啟動,可以建立 systemd 服務。服務檔中的 User、配置路徑和執行檔路徑必須依照你的實際環境調整。使用專用低權限帳戶通常比長期以 root 執行更安全,但 TUN 建立權限需要額外設計。

sudo systemctl daemon-reload sudo systemctl enable mihomo sudo systemctl start mihomo sudo systemctl status mihomo --no-pager journalctl -u mihomo -f

若服務啟動後立刻停止,請先查看 systemctl statusjournalctl 的完整訊息。常見原因包括配置檔語法錯誤、工作目錄不存在、執行檔沒有權限,以及服務帳戶無法存取 /dev/net/tun

建議的啟動順序

先驗證配置,再前景啟動,接著檢查虛擬介面與路由,最後才設定開機自動啟動。循序操作比一次修改多個系統服務更容易定位問題。

4檢查網路與 DNS

TUN 啟動後,請不要只用瀏覽器開啟一個網站來判斷成功。瀏覽器可能使用自己的 DNS、代理設定或快取,結果不能代表整個系統。應該從虛擬介面、路由、核心日誌、HTTP 請求與 DNS 解析幾個層面逐一驗證。

確認虛擬介面與路由

ip link ip addr ip route ss -lntup | grep -E '7890|1053'

在輸出中尋找配置裡指定的 TUN 介面名稱,例如 Mihomo。介面存在不代表流量一定經過它,還需要觀察路由表是否出現相應項目。若主機同時使用 WireGuard、OpenVPN、Docker 或多張網卡,請特別注意預設路由是否被其他服務覆蓋。

測試代理連通性

假設 Clash 的 HTTP 代理監聽在本機 7890,可以使用 curl 直接測試。這一步用來確認節點與代理端口有效,並不等於 TUN 已經接管全部應用程式。

curl -I -x http://127.0.0.1:7890 https://www.example.com curl --socks5-hostname 127.0.0.1:7891 https://www.example.com curl https://www.example.com

前兩個指令明確指定代理,最後一個指令則用來觀察系統預設路由是否在 TUN 開啟後正常工作。若指定代理可以成功,但不指定代理失敗,通常表示 TUN 路由、DNS 或防火牆仍需要檢查。

測試 DNS 是否繞過

可使用 resolvectl status 查看系統解析器狀態,並用 dig 查詢域名。不同發行版可能由 NetworkManager、systemd-resolved 或其他服務管理 DNS,因此不要只修改單一檔案就假設設定已生效。

resolvectl status dig example.com dig @127.0.0.1 -p 1053 example.com

如果 Clash DNS 監聽在 1053,第二個查詢可以幫助確認核心是否能正常回應。若直接查詢本地 DNS 成功,但應用程式仍然解析錯誤,可能是應用程式使用了 DoH、內建 DNS 或獨立網路命名空間。

5常見問題與故障排除

核心提示 permission denied

這通常表示目前執行核心的使用者沒有建立 TUN 介面或修改路由的權限。先用前景模式與 sudo 測試,確認是否確實屬於權限問題。如果 sudo 啟動正常,請再考慮為 systemd 服務配置適當的能力,例如網路管理所需的權限,而不是永久以完整 root 權限執行所有功能。

找不到 /dev/net/tun

請先執行 sudo modprobe tun,再檢查裝置檔案。如果仍不存在,可能是核心未啟用 TUN,或你位於沒有提供 TUN 裝置的容器、共享主機和受限制的雲端環境。此時可詢問主機供應商是否能開放 TUN;不要嘗試刪改系統裝置檔案來繞過限制。

開啟 TUN 後無法上網

先停用 strict-route,重新啟動核心並測試。如果恢復正常,通常與多網卡路由、VPN 或 Docker 網段衝突有關。接著查看 ip route,確認預設閘道仍指向正確的實體網卡。若只有域名無法開啟而 IP 可以連接,則優先檢查 DNS 劫持、Fake-IP 範圍與本機解析服務。

區域網路與 SSH 被中斷

全域接管流量時,區域網路流量也可能被錯誤送入代理。可以在規則前方加入內網網段的 DIRECT 規則,並確認你的區域網路範圍,例如 192.168.0.0/1610.0.0.0/8172.16.0.0/12。SSH 連線則建議先在本機主控台完成設定,避免遠端操作時因路由變更而把自己鎖在主機外。

遠端伺服器特別注意

如果你是透過 SSH 遠端管理 Linux,請先準備第二個管理連線或主機商的 Web 控制台。修改預設路由前,務必確認 SSH 來源位址不會被代理規則錯誤轉送。

6安全回滾與最佳實踐

一套好用的 TUN 設定不只要能啟動,也要能在故障時快速停用。當你遇到無法解析、網路完全中斷或路由混亂時,先停止 Clash Meta,而不是反覆修改多個欄位。若使用 systemd,可先執行以下命令停止服務:

sudo systemctl stop mihomo sudo systemctl disable mihomo ip link ip route

接著將配置檔還原成備份版本,再確認 NetworkManager 或 systemd-resolved 是否恢復管理 DNS。部分路由可能在核心停止後自動清理,部分環境則需要重新連接網路或重啟網路管理服務。遠端伺服器不建議直接重啟網路服務,應先確認現有 SSH 連線是否穩定。

日常維護建議

  • 每次更新核心前保存目前版本、配置檔與 systemd 服務檔,避免更新後無法回復。
  • 修改規則或 DNS 後,先用前景模式測試,再交給 systemd 長期運行。
  • 定期查看核心日誌,留意 DNS 超時、路由衝突與節點連線失敗。
  • 為區域網路、公司內網、伺服器管理網段建立明確的 DIRECT 規則。
  • 不要把訂閱連結、私密節點資訊或含有密鑰的配置檔公開到論壇和程式碼倉庫。

如果你只想讓瀏覽器或少量應用程式走代理,系統代理通常更簡單;只有在需要接管不支援代理的程式、統一處理 DNS,或希望整台 Linux 主機套用規則分流時,才建議啟用 TUN。根據需求選擇模式,能降低維護成本,也能減少不必要的路由副作用。

總結與下載建議

在 Linux 上開啟 Clash Meta TUN 模式,核心流程可以整理為:確認核心與 TUN 裝置、備份配置、編輯 tundns 區塊、驗證 YAML、以適當權限啟動,最後透過介面、路由、代理與 DNS 測試確認結果。真正容易出錯的地方通常不是某一個開關,而是權限、網路介面、DNS 管理服務和既有 VPN 之間的互相影響。

與只依賴桌面系統代理的工具相比,Clash Meta 能以規則方式管理不同域名與網段,並可搭配 Fake-IP、DNS 劫持、節點策略組和多種代理協議。部分簡易代理工具雖然上手較快,但常常無法處理不支援系統代理的程式,也缺少清楚的路由與 DNS 控制;Clash 的優勢則在於設定透明、可觀察性較高,遇到問題時能透過日誌與命令列逐層定位。

  • 透過 TUN 介面接管更多應用程式流量,減少代理設定不一致的情況。
  • 使用規則分流與 DNS 控制,讓直連、代理和內網服務各自走合適的路徑。
  • 搭配 Linux 的 systemd、iproute2 與日誌工具,方便自動啟動與故障排查。

如果你還沒有合適的 Clash 客戶端,可以先從下載頁取得支援 Linux 的版本,再依照本文順序逐步配置。完成後請保留一份可用的備份,未來更新核心或更換網路環境時會更加安心。

立即免費下載 Clash,開啟流暢上網新體驗 →