協議邊界與最小設定
AnyTLS 是目前 Mihomo 核心提供的 TLS over TCP 出站類型,不使用 QUIC,也沒有連接埠跳躍欄位。最小節點由通用的名稱、類型、伺服器、連接埠和伺服器端密碼組成。
password 應與伺服器端使用者設定一致。udp 為 true 時,用戶端透過 UDP over TCP 承載 UDP 請求,它不表示底層連線改為 UDP。
name必填- 節點名稱,在策略群組和規則中用於識別該出站。
type: anytls必填- 選擇 Mihomo 的 AnyTLS 出站實作,原版 Clash 不識別該類型。
server / port必填- 填寫伺服器端主機與監聽連接埠,連接埠為單個整數。
password認證- 填寫伺服器端為該使用者設定的密碼,空值只有在伺服器端明確允許時才可能工作。
udp可選- 啟用 UDP 請求支援,實際由 AnyTLS 連線內的 UDP over TCP 承載。
TLS、SNI 與憑證驗證
AnyTLS 始終建立 TLS 連線。未填寫 sni 時,用戶端使用 server 作為 TLS Server Name;如果 server 是 IP,通常需要按伺服器端憑證填寫網域形式的 SNI。
sniTLS- 設定握手中的伺服器名稱;省略時還原到 server。
alpnTLS- 填寫伺服器端支援的 ALPN 清單,例如 h2 與 http/1.1,不能憑用戶端偏好自行改動。
client-fingerprintTLS- 選擇用戶端 TLS 指紋,例如 chrome;它與憑證指紋驗證不是同一個欄位。
skip-cert-verify風險- 為 true 時跳過常規憑證驗證,只應在明確理解風險時使用。
name-cert-verifyTLS- 單獨指定憑證名稱驗證目標,不等同於改變連線位址。
fingerprintTLS- 固定伺服器端憑證指紋,用於憑證釘扎。
certificate / private-keymTLS- 伺服器端要求用戶端憑證時成對填寫。
ech-opts可選- 使用 ECH 隱藏 ClientHello 中的實際 SNI,具體欄位遵循目前核心的通用 TLS 設定。
Reality 與安全封裝的邊界
AnyTLS 可以搭配 ECH、ShadowTLS、ResTLS 或 JLS 處理 TLS 暴露特徵,但這些能力不是 Reality 的別名。
shadow-tls-opts封裝- 填寫 ShadowTLS 的 version 與 password,必須與伺服器端一致。
restls-opts封裝- 填寫 ResTLS 的 password,可按伺服器端提供 version-hint。
jls-opts封裝- 填寫 JLS 的 username 與 password。
- 互斥規則重要
- ShadowTLS、ResTLS 與 JLS 在目前實作中最多選擇一種,同時填寫會拒絕建立節點。
空閒會話參數
AnyTLS 會在一條或多條 TLS 連線上重用流。三個會話參數以秒為單位控制檢查和回收,不是 QUIC 視窗,也不影響 TLS 憑證驗證。
idle-session-check-interval預設 30 秒- 兩次空閒會話檢查之間的間隔。
idle-session-timeout預設 30 秒- 檢查時關閉空閒時間超過該值的會話。
min-idle-session預設 0- 檢查時至少保留的空閒會話數量;提高該值會保留更多連線。
最小可用示例
先使用伺服器端實際提供的密碼、SNI 與 ALPN 建立連線,再按需要增加 ECH 或一種安全封裝。會話欄位已有預設值,通常無需重複填寫。
proxies:
- name: anytls-node
type: anytls
server: server.example.com
port: 443
password: replace-with-server-password
udp: true
sni: server.example.com
client-fingerprint: chrome
alpn:
- h2
- http/1.1常見誤配
設定能夠被 YAML 解析,不代表協議參數可以互換。AnyTLS 連不上時應先收縮到最小設定。
- 從 VLESS 節點複製
reality-opts,導致使用了目前核心明確不支援的組合。 server填寫 IP,卻沒有填寫憑證對應的sni,造成憑證名稱驗證失敗。- 同時啟用 ShadowTLS、ResTLS 與 JLS 中的兩種或更多封裝,節點會在建立階段發生錯誤。
- 把會話檢查參數當作效能倍率盲目調大,反而保留更多空閒連線。
