Skip to content

AnyTLS

Potatso が対応する AnyTLS の TLS 設定、リンク、機能。

Updated Markdown で表示

AnyTLS サーバは、パスワードとTLS 設定で表されます。AnyTLS は TLS の中で動作し、通信にパディングを加えるため、接続は通常の HTTPS アクセスのように見え、TLS の中にプロキシがあることを示す通常の兆候が現れません。Potatso は、サーバの TLS 設定に対応していれば、そのサーバに接続します。プロバイダが示す設定、またはサーバの anytls:// リンクを見ながら、以下の表でサーバの設定を確認してください。

AnyTLS サーバは、手動、anytls:// リンク、または次のものからの読み込みで追加できます。

  • Clash または Mihomo のサブスクリプション、
  • Surge の構成。

Potatso は、sing-box の構成からの AnyTLS サーバの読み込みにはまだ対応していません。代わりに、サーバの anytls:// リンクを使ってください。

TLS

設定 Clash のキー リンクのパラメータ 対応
サーバ名(SNI) sni sni ✅ 指定がない場合、Potatso はサーバのアドレスを使います。
ALPN alpn alpn ✅ 指定がない場合、Clash と同様に Potatso は何も送りません。
証明書の検証をスキップ skip-cert-verify insecure ✅
証明書のピン留め(SHA-256) fingerprint hpkp ✅
ブラウザフィンガープリント client-fingerprint fp ✅ chrome、firefox、safari、ios、android、edge、random。それ以外の名前は、デフォルトのハンドシェイクで接続します。
REALITY reality-opts ✅
Encrypted Client Hello(ECH) ech-opts ✅ サブスクリプション内の ECH 構成を使うか、DNS で取得します
カスタム CA 証明書 ❌
TLS クライアント証明書 certificate、private-key ❌

証明書の検証をオフにすると、あなたとサーバの間にいる誰でも、通信内容を読めてしまいます。サーバが自己署名証明書を使っている場合は、代わりにサーバの証明書をピン留めしてください。証明書のピンに、その証明書の SHA-256 を設定します。

ブラウザフィンガープリントを指定すると、接続の TLS ハンドシェイクがそのブラウザのものに見えます。サーバが対応していなければならない内容は変わりません。

Potatso は、TLS クライアント証明書が必要なサーバを読み込みません。サーバが接続を拒否するためです。

REALITY

REALITY サーバは、別の Web サイトの TLS 証明書を借りるため、自前の証明書が不要です。sing-box のサーバでは、REALITY を使った AnyTLS を提供できます。サーバの Reality 公開鍵と Reality ショート ID をプロバイダの指定どおりに設定し、サーバ名にはサーバが借りている Web サイトを設定します。REALITY にはブラウザフィンガープリント(chrome など)が必要です。

接続

AnyTLS は TLS 接続を再利用します。Web サイトへの接続が終わると、次の接続は新しく開くのではなく、同じ TLS 接続を使います。1 つの TLS 接続が同時に運ぶ接続は 1 つなので、複数を同時に使うと複数の TLS 接続が開かれ、あとで再利用されます。

設定 Clash のキー 対応
アイドル状態の接続を確認する頻度 idle-session-check-interval ✅ 秒単位。デフォルトは 30
アイドル状態の接続を開いたままにする時間 idle-session-timeout ✅ 秒単位。デフォルトは 60
開いたままにするアイドル状態の接続の数 min-idle-session ✅ デフォルトは 1

5 秒以下の値は、Clash と同様に 30 として扱われます。これらの設定は Clash のサブスクリプションから取得されます。手動またはリンクで追加したサーバには、Potatso はデフォルト値を使います。

Surge 構成の reuse=false は適用されません。AnyTLS の仕様と同様に、Potatso は常に接続を再利用します。Potatso はサーバを読み込み、警告を表示します。

パディング

AnyTLS は、プロキシの存在を示してしまう通信サイズを隠すため、すべての接続の先頭にパディングを加えます。サーバは独自のパディング方式を送ってくることがあり、Potatso は AnyTLS の定義どおり、次の TLS 接続からそれを使います。デバイス側で設定する項目はありません。

UDP

AnyTLS は、TLS 接続の中で UDP を運びます(UDP over TCP)。Clash と同様に、UDP はデフォルトでオフです。サーバが UDP を中継する場合は、サーバの設定で UDP リレーをオンにしてください。Clash のサブスクリプションでは udp: true でオンになり、Surge の構成では常にオンになります。

機能の対応状況

機能 対応
AnyTLS プロトコル v2:パスワード、パディング、接続の再利用 ✅
サーバから送られるパディング方式 ✅
UDP over TCP ✅
アイドル状態の接続の設定 ✅
REALITY、ECH ✅
証明書のピン留め、ブラウザフィンガープリント ✅
カスタム CA、TLS クライアント証明書 ❌
anytls:// リンク ✅

対応しているすべての機能は、実際の AnyTLS サーバ(anytls-go、sing-box、mihomo)のうち、少なくとも 1 つに対してテスト済みです。

パスワードが間違っていると、サーバは接続を閉じます。AnyTLS サーバにまったく接続できない場合は、まずパスワードを確認してください。

anytls:// リンクは、1 行にサーバ全体の情報をまとめたものです。

anytls://password@host:port/?parameters#name
部分 説明
password パスワード(パーセントエンコード)。
host サーバのアドレス。IPv6 アドレスは [2001:db8::1] のように角括弧で囲みます。
port サーバのポート。省略した場合、Potatso は 443 を使います。
name 任意。Potatso でのサーバ名。

パラメータは anytls-go の形式に従い、一部のアプリが追加するものも加わります。

パラメータ 説明
sni TLS のサーバ名。
insecure 1 で証明書の検証をオフにします。
alpn ALPN のリスト。カンマ区切りで、パーセントエンコードします。
fp ブラウザフィンガープリント。
hpkp サーバの証明書の SHA-256。

Potatso が AnyTLS サーバを共有するときは、同じパラメータを持つ anytls:// リンクを提供します。

各例は、読み込むリンクを示しています。パスワードは secret です。

基本的なサーバ:

anytls://secret@anytls.example.com:443/?sni=anytls.example.com#Basic

自己署名証明書で、検証なし:

anytls://secret@203.0.113.7/?insecure=1#Self-signed

Chrome フィンガープリント、ALPN のリスト、ピン留めした証明書:

anytls://secret@anytls.example.com:443/?sni=anytls.example.com&alpn=h2%2Chttp%2F1.1&fp=chrome&hpkp=abababababababababababababababababababababababababababababababab#Shaped
ナビゲーション

Type to search…

↑↓ navigate↵ selectEsc close