Tun

TUN 模式建立一張虛擬網卡,接管系統全域流量,不需要用戶端軟體支援代理設定,是目前最推薦的全域代理方式。這裡是頂層 tun 欄位的設定說明。

listeners 裡也能設定 tun,但那是給進階使用者用的寫法;一般使用者請直接使用頂層設定裡的 tun 欄位,也就是本頁說的內容。

設定範例

config.yaml YAML
tun:
  enable: true
  stack: mixed
  auto-route: true
  auto-redirect: true
  auto-detect-interface: true
  dns-hijack:
    - any:53
    - tcp://any:53
  device: utun0
  mtu: 9000
  strict-route: true

核心欄位

enable必須

啟用 TUN 模式。

stack預設 gvisor

協議堆疊,可選 system/gvisor/mixed。沒有相容性問題的話建議用 mixed:TCP 用 system 堆疊(更穩定、佔用更低),UDP 用 gvisor 堆疊,體驗通常最好。如果開啟了系統防火牆,system/mixed 堆疊需要手動放行核心程式才能使用。

device可選

指定 TUN 網卡名稱,macOS 只能使用 utun 開頭的名字。

auto-route可選

自動設定全域路由,把系統流量自動導入 TUN 網卡,幾乎總是需要開啟。

auto-redirect僅 Linux

自動設定 iptables/nftables 重新導向 TCP 連線,需要 auto-route 已開啟,主要用在路由器場景。

auto-detect-interface可選

自動選擇流量出口網卡;如果裝置同時接了多個出口(比如同時連了 Wi-Fi 和有線網),建議手動指定出口網卡而不是自動偵測。

dns-hijack可選

把匹配到的 DNS 請求導入核心內建的 DNS 模組,預設寫法不帶協議即 udp://。macOS/Windows 無法自動劫持發往區域網路的 DNS 請求;Android 若開啟了「私人 DNS」也無法自動劫持。

strict-route可選

auto-route 基礎上執行更嚴格的路由規則,防止位址洩漏,也是 Android 上 DNS 劫持能正常生效的前提。Windows 下可能導致 VirtualBox 等應用在某些場景下工作不正常。

mtu / gso / gso-max-size可選

mtu 最大傳輸單元,一般無需修改;gso(僅 Linux)啟用通用分段卸載可以提升效能,gso-max-size 設定資料塊最大長度。

路由範圍與篩選

欄位說明
route-address / route-exclude-address啟用 auto-route 時路由自訂網段而非預設路由 / 排除自訂網段,一般無需設定
route-address-set / route-exclude-address-set把指定規則集裡的目標 IP CIDR 加入防火牆做路由/排除,僅支援 Linux + nftables,需要 auto-route+auto-redirect
include-interface / exclude-interface限制被路由的網路介面,兩者互斥不可同時設定
include-uid / exclude-uid(及 range 版本)按 Linux 使用者 UID 限制/排除被 TUN 路由的流量,僅 Linux 支援,需要 auto-route
include-android-user限制被路由的 Android 使用者(機主 0 / 分身 10 / 多開 999),僅 Android 支援
include-package / exclude-package按 Android 應用套件名稱限制/排除被 TUN 路由的流量
endpoint-independent-nat啟用獨立於端點的 NAT,效能可能略有下降,不需要時不建議開啟
udp-timeoutUDP NAT 過期時間,單位秒,預設 300(5 分鐘)

還有一批「舊寫法」欄位(inet4-route-address 等)即將廢棄,新設定建議直接用上面這些新欄位名。