設定檔參考
撰寫腳本請參閱 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-dns | IP 清單 | 已棄用的舊覆寫設定,僅在自訂 App 分流與簡易模式都關閉時使用。新設定檔請優先使用 direct-dns。 |
app-routing-enabled | 布林值 | 啟用網域分流與分流 DNS。新設定檔設為 true;舊 false 路徑已棄用。 |
direct-dns | DNS 上游清單 | app-routing-enabled=true 時用於直接連線的 DNS,支援一般 IP DNS、DoT、DoH。 |
vpn-dns | DNS 上游清單 | app-routing-enabled=true 時用於 VPN/代理伺服器的 DNS,支援一般 IP DNS、DoT、DoH。 |
bootstrap-dns | IP 清單 | 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 | 字串 | 介面私鑰。 | 是 |
address | CIDR | 介面內部 IP 位址與子網路。 | 是 |
Tailscale 欄位(type:tailscale,實驗性,Pro)
| 鍵 | 說明 |
|---|---|
login-server | HTTPS 控制伺服器 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 | 字串 | 介面私鑰。 | 是 |
address | CIDR | 介面內部 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-ips | CIDR 清單 | 經由此節點的 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-ips | CIDR 清單 | 經由此節點的 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-id | UUID | 使用者 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、REJECT | l3vpn/l4proxy 名稱 | 依網域集合分流。 |
CIDR-SET | CIDR 集合名稱 | L3VPN、L4PROXY、DIRECT、DROP、REJECT | l3vpn/l4proxy 名稱 | 依 CIDR 集合分流。 |
CIDR | 單一 CIDR | L3VPN、L4PROXY、DIRECT、DROP、REJECT | l3vpn/l4proxy 名稱 | 依單一 IP 範圍分流。 |
DNS-FALLBACK | 不使用 | DIRECT、L3VPN、L4PROXY 等 | l3vpn/l4proxy 名稱 | 未符合集合的網域之預設 DNS 行為。 |
VPN-DNS-SERVER-DOMAINS | 不使用 | L3VPN、L4PROXY | l3vpn/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-list | IPv4 CIDR 清單 | 額外的目的地 IP 擷取範圍。 |
port-list | 整數清單 | TCP 連接埠 1–65535,預設 80,443。 |
http3-policy | allow 或 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 正文錄製。
| 鍵 | 預設值 | 範圍 |
|---|---|---|
enabled | false | 布林值 |
sampling-interval | 1 | 1–1000000 |
active-timeout-seconds | 5 | 1–3600 |
tcp-idle-timeout-seconds | 120 | 2–86400 |
udp-idle-timeout-seconds | 30 | 2–3600 |
fin-grace-seconds | 5 | 1–300 |
max-flows-per-worker | 4096 | 1–16384 |
capture-duration-seconds | 0 | 0–86400;0 表示不限時長 |
retention-hours | 24 | 1–720 |
max-database-rows | 100000 | 1000–1000000 |
[flowlog]
enabled=true
sampling-interval=1
retention-hours=24
[http-body-rewrite]
具名的要求或回應正文規則,參照受管理的本機腳本。App 編輯器與 MFHRB 匯入器共同管理腳本資源及其設定檔參照。請勿在此貼上遠端腳本 URL,並期待自動下載或更新。
| 欄位 | 說明 |
|---|---|
match | 必填,比對正規化完整 URL 的正規表示式,最多 4096 UTF-8 位元組。 |
direction | request 或 response,預設 response。 |
type | 必填,jq 或 javascript。 |
body-mode | json 或 text;jq 必須使用 JSON。jq 預設 json,JavaScript 預設 text。 |
script | 必填,由編輯器/匯入器產生的受管理本機資源參照。 |
priority | 0–1000000,預設 100。較小值先執行;相同值依規則名稱排序。 |
enabled | 設定檔語法預設 true;MFHRB 匯入一律儲存為停用。 |
api-version | 1。 |
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 腳本編輯器管理資源,審查後再啟用。