設定檔參考

撰寫腳本請參閱 JavaScript API 指南,了解可匯入範例、要求/回應欄位、完成呼叫與執行限制。

適用於 MintFlow 2.0.0。設定檔文字是唯一事實來源:啟動 VPN 時,App 會將它編譯為執行階段資料庫。儲存變更、檢查編譯診斷,再重新啟動 VPN 以套用新設定。語法/範圍錯誤與權限限制是不同問題:即使 Pro 設定語法正確,沒有 Pro 權限時仍可能不納入編譯結果。

新增區段包括 [simple-mode]、[flowlog]、[dns-hosts] 與 [http-body-rewrite]。Tailscale 是實驗性 [l3vpns] 類型。HTTP 引擎擴大了擷取範圍,並支援 jq/JavaScript 正文規則。本機腳本是獨立資源,只分享設定檔文字不會將它們打包。請使用 MFHRB一起分享規則與原始碼。

為什麼使用設定檔?

  • 複雜設定:組合進階路由、分流 DNS、代理伺服器與 VPN。
  • 管理多種環境:建立並切換工作、家庭等不同設定檔。
  • 分享協作:純文字可分享給其他 MintFlow 使用者,也能用 Git 管理版本。
  • 匯入匯出:從 URL 或檔案匯入,匯出以備份或分享。

設定檔可控制 VPN 與代理伺服器行為。以下說明語法及可用選項;範例中的名稱、金鑰預留位置與位址,請依實際環境填入。

語法概覽

採用 INI 風格,以 [] 包住區段名稱。註解以 # 或 // 開頭;清單以逗號分隔,結構化值採用 子鍵:值 形式。語法鍵不可翻譯。

# Comments start with # or //
[section-name]
key=value

# Lists are comma-separated
key=value1,value2,value3

# Structured values use subkey:subvalue pairs
key=subkey1:value1,subkey2:value2

區段

[misc]

系統層級的一般設定。

鍵類型說明預設值
tun-mtu整數TUN 介面的 MTU。
exclude-lan-networks布林值true 時將區域網路排除於 VPN 之外。false
log-level字串執行階段日誌等級;請使用 App 支援的選項。
[misc]
tun-mtu=1420
exclude-lan-networks=true

[dns]

鍵類型說明
system-dnsIP 清單已棄用的舊覆寫設定,僅在自訂 App 分流與簡易模式都關閉時使用。新設定檔請優先使用 direct-dns。
app-routing-enabled布林值啟用網域分流與分流 DNS。新設定檔設為 true;舊 false 路徑已棄用。
direct-dnsDNS 上游清單app-routing-enabled=true 時用於直接連線的 DNS,支援一般 IP DNS、DoT、DoH。
vpn-dnsDNS 上游清單app-routing-enabled=true 時用於 VPN/代理伺服器的 DNS,支援一般 IP DNS、DoT、DoH。
bootstrap-dnsIP 清單1.9.0 新增,用來解析以網域設定的加密 VPN DNS 上游;App 提供預設值。
direct-dns-follow-vpn布林值1.8.0 新增,直接連線 DNS 伺服器是否遵循分流規則。
optimistic-dns-caching布林值1.9.0 新增,啟用樂觀 DNS 快取重新整理,預設 true。
l4proxy-synthetic-ip布林值為 L4 代理伺服器網域分流啟用合成 IP 處理,預設 false。

DNS 上游格式:

  • 一般 IP DNS:1.1.1.1、8.8.8.8
  • DNS-over-TLS:tls://cloudflare-dns.com 或 tls://1.1.1.1
  • DNS-over-HTTPS:https://dns.google/dns-query

當 vpn-dns 包含帶有網域的加密 DNS 伺服器(例如 tls://p2.freedns.controld.com),請加入 VPN-DNS-SERVER-DOMAINS 路由,使其網域解析經由所選 VPN/代理伺服器,避免啟動查詢走直接連線網路。

[dns]
app-routing-enabled=true
direct-dns=223.5.5.5,114.114.114.114
vpn-dns=tls://p2.freedns.controld.com,https://dns.google/dns-query
bootstrap-dns=1.1.1.1,8.8.8.8
optimistic-dns-caching=true

[l3vpns]

定義第三層 VPN 介面,每筆記錄的鍵是自訂介面名稱。

共用欄位

鍵類型說明必填
type字串已實作 wireguard、amneziawg 與實驗性 tailscale。schema 接受 openvpn,但不代表已實作 OpenVPN 用戶端。是
nickname字串易讀的顯示名稱。否
enabled布林值是否啟用,預設 true。否

WireGuard 欄位(type=wireguard)

鍵類型說明必填
private-key字串介面私鑰。是
addressCIDR介面內部 IP 位址與子網路。是

Tailscale 欄位(type:tailscale,實驗性,Pro)

鍵說明
login-serverHTTPS 控制伺服器 URL,通常為 https://controlplane.tailscale.com;不得包含內嵌認證資訊、查詢或片段。
auth-key選用的初始登入金鑰。建議優先以瀏覽器登入或一次性提交認證KEY,避免在設定檔儲存機密。
drive-dns預設 false。透過 MintFlow DNS 衍生對等節點 IPv4 記錄;不啟用 Tailscale 作業系統層級 MagicDNS 解析器。需要 Pro 與 MintFlow DNS 路徑。
enabled預設 true。每份設定檔只允許一個使用中的 Tailscale 介面。
[l3vpns]
tailnet=type:tailscale,login-server:https://controlplane.tailscale.com,enabled:true

[routing]
CIDR,100.64.0.0/10,L3VPN,tailnet
DEFAULT,DIRECT
DNS-FALLBACK,DIRECT

搭配 [dns] 中的 app-routing-enabled=true 及適當的 direct-dns 上游使用。請參閱完整登入與路由指南。裝置身分、接受路由與出口節點選擇屬於裝置本機狀態,不是可攜式設定檔設定。失去 Pro 權限時,編譯會排除該介面,並將指向它的路由改為 REJECT。

AmneziaWG 欄位(type=amneziawg)

自 1.9.0 起支援 AmneziaWG 1.5 與 2.0 參數。對等節點另於 [amneziawg-peers] 設定。

鍵類型說明必填
private-key字串介面私鑰。是
addressCIDR介面內部 IP 位址與子網路。是
jc整數垃圾封包數量參數。否
jmin整數垃圾封包最小大小。否
jmax整數垃圾封包最大大小。否
s1整數AmneziaWG S1 參數。否
s2整數AmneziaWG S2 參數。否
s3整數AmneziaWG S3 參數。否
s4整數AmneziaWG S4 參數。否
h1整數或範圍H1 封包標頭值,例如 1 或 843739526-1233562642。否
h2整數或範圍H2 封包標頭值,例如 2 或 1383464517-1389039856。否
h3整數或範圍H3 封包標頭值,例如 3 或 1558777559-1611162592。否
h4整數或範圍H4 封包標頭值,例如 4 或 1797613837-1977519157。否
i1 ... i5字串AmneziaWG 2.0 CPS 指令字串,每欄位最多 255 UTF-8 位元組;支援 <b>、<r>、<rd>、<rc>、<t> 標籤。否
[l3vpns]
my-wireguard=type:wireguard,nickname:My WG,private-key:...,address:10.0.0.1/32
my-awg=type:amneziawg,nickname:My AWG,private-key:...,address:10.8.9.2/32,jc:4,jmin:40,jmax:70,s1:0,s2:0,s3:0,s4:0,h1:1,h2:2,h3:3,h4:4,i1:<r 33>

[wireguard-peers]

定義 WireGuard 對等節點,每筆記錄的鍵為自訂節點名稱。

鍵類型說明必填
interface字串所屬 l3vpns 介面名稱。是
public-key字串對等節點公鑰。是
preshared-key字串選用的預先共用金鑰。否
endpoint字串對等節點的公開端點,例如 1.2.3.4:51820。是
allowed-ipsCIDR 清單經由此節點的 IP 位址/範圍。是
[wireguard-peers]
my-peer=interface:my-wireguard,public-key:...,endpoint:1.2.3.4:51820,allowed-ips:0.0.0.0/0

[amneziawg-peers]

定義 AmneziaWG 對等節點,每筆記錄的鍵為自訂節點名稱。欄位與 WireGuard 相同,但 interface 必須參照 [l3vpns] 中 type 為 amneziawg 的介面。

鍵類型說明必填
interface字串所屬 amneziawg 介面名稱。是
public-key字串對等節點公鑰。是
preshared-key字串選用的預先共用金鑰。否
endpoint字串對等節點的公開端點,例如 1.2.3.4:51820。是
allowed-ipsCIDR 清單經由此節點的 IP 位址/範圍。是
[amneziawg-peers]
my-awg-peer=interface:my-awg,public-key:...,endpoint:1.2.3.4:51820,allowed-ips:0.0.0.0/0,::/0

[l4proxies]

定義 Shadowsocks、VMess 等第四層代理伺服器,每筆記錄的鍵為自訂代理伺服器名稱。

共用欄位

鍵類型說明必填
type字串shadowsocks、vmess、anytls、http 或 socks5。是
nickname字串易讀的顯示名稱。否
server字串伺服器位址。是
port整數伺服器連接埠。是
enabled布林值是否啟用,預設 true。否
route-via-vpn布林值1.8.0 新增,代理伺服器上游連線是否經 VPN 路由,以串接另一個 VPN/代理伺服器。預設 false;伺服器 IP 必須是 IPv4 位址。否

Shadowsocks 欄位

鍵類型說明必填
password字串密碼。是
method字串AEAD:aes-128-gcm、aes-256-gcm、chacha20-ietf-poly1305;2022:2022-blake3-aes-128-gcm、2022-blake3-aes-256-gcm、2022-blake3-chacha20-poly1305。是
obfs-type字串混淆類型 tls 或 http。否
obfs-host字串混淆主機;使用 obfs-type 時需要。否
obfs-path字串混淆路徑;obfs-type=http 時需要。否
udp-forward布林值是否轉送 UDP,預設 false。否

Shadowsocks 2022 的 password 必須是 base64 編碼的預先共用金鑰。解碼後,2022-blake3-aes-128-gcm 需要 16 位元組;2022-blake3-aes-256-gcm 與 2022-blake3-chacha20-poly1305 需要 32 位元組。

VMess 欄位

鍵類型說明必填
user-idUUID使用者 ID。是
alter-id整數alter ID。是
security字串安全類型,例如 auto。是
transport-type字串tcp 或 ws。是
ws-path字串WebSocket 路徑;transport-type=ws 時需要。否
sni字串TLS 伺服器名稱指示。否
skip-cert-check布林值true 時略過憑證驗證,預設 false。否
alpn字串應用層協定協商,預設 h2,http/1.1。否

AnyTLS 欄位

使用 type=anytls。下列欄位來自共用設定檔 schema。

鍵類型說明必填
password字串AnyTLS 密碼。是
sni字串TLS 伺服器名稱指示,省略時使用 server。否
skip-cert-check布林值true 時略過上游憑證驗證,預設 false。否
session-reuse布林值啟用閒置工作階段重用,預設 true。否
idle-session-check-interval整數閒置工作階段檢查間隔,1–3600 秒,預設 30。否
idle-session-timeout整數閒置工作階段逾時,1–3600 秒,預設 60。否
min-idle-sessions整數至少保留的閒置工作階段數,0–64,預設 1。否
max-idle-sessions整數最多保留的閒置工作階段數,0–64,預設 4。否
[l4proxies]
any=type:anytls,nickname:AnyTLS,server:any.example.com,port:443,password:secret,sni:cdn.example.com,skip-cert-check:false,session-reuse:true,idle-session-check-interval:30,idle-session-timeout:60,min-idle-sessions:1,max-idle-sessions:4,enabled:true

HTTP 與 SOCKS5 欄位

鍵類型說明必填
username字串上游驗證使用的代理伺服器使用者名稱。否
password字串上游驗證使用的代理伺服器密碼。否
udp-forward布林值SOCKS5 UDP 轉送旗標;目前保留供設定檔相容使用,實際 UDP 轉送取決於執行階段支援。否
[l4proxies]
tshttp=type:http,nickname:tshttp,server:3.3.3.3,port:1055,enabled:true
tssocks=type:socks5,nickname:tssocks,server:10.1.1.1,port:1055,username:user,password:pass,enabled:true,udp-forward:false,route-via-vpn:true
ss2022=type:shadowsocks,nickname:SS2022,server:ss.example.com,port:8388,password:base64-psk,method:2022-blake3-aes-256-gcm,udp-forward:true,enabled:true
any=type:anytls,nickname:AnyTLS,server:any.example.com,port:443,password:secret,sni:cdn.example.com,skip-cert-check:false,session-reuse:true

[domain-sets]

定義供路由使用的具名網域集合,鍵為集合名稱。透過 [routing] 選擇出口,與 HTTP 擷取網域及精確 DNS 主機記錄不同。

[domain-sets]
social-media=twitter.com,facebook.com,instagram.com

[cidr-sets]

定義供路由使用的具名 IP 範圍(CIDR)集合,鍵為集合名稱。

[cidr-sets]
private-ips=10.0.0.0/8,192.168.0.0/16

[routing]

定義由上而下處理的路由規則,不使用鍵值對。

比對規則格式:TYPE,VALUE,ACTION,TARGET。保留/預設規則(如 DNS-FALLBACK、VPN-DNS-SERVER-DOMAINS、DEFAULT)格式:TYPE,ACTION,TARGET。

類型值動作目標說明
DOMAIN-SET網域集合名稱L3VPN、L4PROXY、DIRECT、DROP、REJECTl3vpn/l4proxy 名稱依網域集合分流。
CIDR-SETCIDR 集合名稱L3VPN、L4PROXY、DIRECT、DROP、REJECTl3vpn/l4proxy 名稱依 CIDR 集合分流。
CIDR單一 CIDRL3VPN、L4PROXY、DIRECT、DROP、REJECTl3vpn/l4proxy 名稱依單一 IP 範圍分流。
DNS-FALLBACK不使用DIRECT、L3VPN、L4PROXY 等l3vpn/l4proxy 名稱未符合集合的網域之預設 DNS 行為。
VPN-DNS-SERVER-DOMAINS不使用L3VPN、L4PROXYl3vpn/l4proxy 名稱1.9.0 新增,經所選 VPN/代理伺服器啟動解析加密 VPN DNS 伺服器網域。當 vpn-dns 使用帶網域的 DoT/DoH 上游時必填。
DEFAULT不使用DIRECT、L3VPN、L4PROXY 等l3vpn/l4proxy 名稱最後接住其餘流量的路由。
[routing]
DOMAIN-SET,social-media,L4PROXY,my-shadowsocks
CIDR-SET,private-ips,DIRECT
VPN-DNS-SERVER-DOMAINS,L4PROXY,my-shadowsocks
DEFAULT,L3VPN,my-wireguard

[http-engine]

內部 HTTP 引擎設定。

鍵類型說明
enabled布林值啟用引擎,預設 false。
capture-all布林值處理指定 TCP 連接埠上的所有 IPv4 目的地,預設 false;保留原有網域/CIDR 清單。
cidr-listIPv4 CIDR 清單額外的目的地 IP 擷取範圍。
port-list整數清單TCP 連接埠 1–65535,預設 80,443。
http3-policyallow 或 block預設 allow。封鎖 HTTP/3 可能促使相容用戶端改用 TCP,並非 HTTP/3 解密。
mitm-bypass-apple-services布林值預設 true,避免解密已知 Apple 服務網域。
mitm-bypass-domain-list網域後綴清單額外的不解密網域。
upstream-tcp-receive-window整數進階上游接收視窗大小:4096–1048576 位元組,預設 262144。
domain-list網域後綴清單套用 HTTP 處理的網域;* 表示所有網域。
ca-p12字串base64 編碼的 PKCS#12 CA,目前僅支援 RSA 金鑰。
ca-passphrase字串ca-p12 憑證密碼。
[http-engine]
enabled=true
domain-list=example.com
ca-p12=...
ca-passphrase=...

[http-url-rewrite]

定義 HTTP URL 重寫規則,鍵為自訂規則名稱。

鍵類型說明必填
match正規表示式比對 URL。是
action字串reject 或 redirect-302。是
target字串重新導向的目的地 URL。否
enabled布林值預設 true。否
[http-url-rewrite]
block-ads=match:^https?://ads\..*,action:reject
redirect-google=match:^https?://google\.com,action:redirect-302,target:https://duckduckgo.com

[simple-mode]

為一般用戶端流量選擇一個具型別的出口。回到規則模式後,已儲存的進階路由仍可使用;簡易模式不會刪除它們。

[simple-mode]
enabled=true
output=type:DIRECT

已設定的 VPN 使用 output=type:L3VPN,target:my-wireguard;代理伺服器使用 output=type:L4PROXY,target:my-proxy。目標必須存在,且目前權限允許使用。首次登入 Tailscale 時,請勿將尚未驗證的 Tailscale 出口作為瀏覽器的網際網路路徑。

[dns-hosts](Pro)

精確主機名稱到 IPv4 位址的對應,由 MintFlow DNS 提供。這些是 DNS 回答,不是路由規則,也不是萬用網域後綴。請另外設定路由,並在此範例啟用 App 分流:

[dns]
app-routing-enabled=true
direct-dns=1.1.1.1,8.8.8.8

[dns-hosts]
nas.example.com=192.168.40.10

最多支援 256 個主機名稱,每個名稱對應 1–16 個 IPv4 位址。靜態主機記錄與衍生 Tailscale 記錄受權限及生效 DNS 設定檢查限制,請查看編譯報告。

[flowlog]

本機流量擷取可免費使用,用於記錄流量診斷;它不是 IPFIX 遠端匯出器,也不是 HTTP 正文錄製。

鍵預設值範圍
enabledfalse布林值
sampling-interval11–1000000
active-timeout-seconds51–3600
tcp-idle-timeout-seconds1202–86400
udp-idle-timeout-seconds302–3600
fin-grace-seconds51–300
max-flows-per-worker40961–16384
capture-duration-seconds00–86400;0 表示不限時長
retention-hours241–720
max-database-rows1000001000–1000000
[flowlog]
enabled=true
sampling-interval=1
retention-hours=24

[http-body-rewrite]

具名的要求或回應正文規則,參照受管理的本機腳本。App 編輯器與 MFHRB 匯入器共同管理腳本資源及其設定檔參照。請勿在此貼上遠端腳本 URL,並期待自動下載或更新。

欄位說明
match必填,比對正規化完整 URL 的正規表示式,最多 4096 UTF-8 位元組。
directionrequest 或 response,預設 response。
type必填,jq 或 javascript。
body-modejson 或 text;jq 必須使用 JSON。jq 預設 json,JavaScript 預設 text。
script必填,由編輯器/匯入器產生的受管理本機資源參照。
priority0–1000000,預設 100。較小值先執行;相同值依規則名稱排序。
enabled設定檔語法預設 true;MFHRB 匯入一律儲存為停用。
api-version1。
timeout-ms僅 JavaScript:50–2000 ms,預設 500。

可攜式 JSON 套件使用 bodyMode、timeoutMS 等駝峰鍵,設定檔文字使用 body-mode、timeout-ms,兩者格式不同。MFHRB 指南提供完整可分享範例、API 契約與審查流程。

例如,使用中設定檔的腳本儲存區已存在受管理資源 ./feed-cleanup/remove-banner.jq:

[http-body-rewrite]
remove-banner=match:^https://api\.example\.com/feed$,direction:response,type:jq,body-mode:json,priority:100,enabled:false,api-version:1,script:./feed-cleanup/remove-banner.jq

對應的 jq 原始碼可為 .items |= map(select(.kind != "banner")),適用於含 items 陣列的 JSON 物件。該設定檔行不會建立檔案;請匯入 MFHRB,或使用 App 腳本編輯器管理資源,審查後再啟用。

閱讀本頁 Markdown