Skip to content

VMess

Potatso が対応する VMess の暗号方式、トランスポート、リンク、機能。

Updated Markdown で表示

VMess サーバは、UUID、通信を暗号化する暗号方式、および TLS の有無を問わず WebSocket や gRPC など接続を運ぶトランスポートで表されます。Potatso は、サーバの暗号方式、トランスポート、TLS 設定に対応していれば、そのサーバに接続します。プロバイダが示す設定、またはサーバの vmess:// リンクを見ながら、以下の表でサーバの設定を確認してください。

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

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

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

暗号方式

暗号方式 対応
auto ✅ Potatso は aes-128-gcm を選びます。これはすべての Apple デバイスがハードウェアで実行します。
aes-128-gcm ✅
chacha20-poly1305 ✅
none ✅
zero ❌
aes-128-cfb(レガシー) ❌

none と zero は通信を暗号化せずに送信します。none は、接続を暗号化する TLS と組み合わせる場合にのみ使ってください。Potatso は zero では接続しません。zero は改ざんに対する保護も外すため、サーバで別の暗号方式を選んでください。

alterId

Potatso は常に現在の VMess 認証を使います。これは alterId 0 と同じです。ユーザに 0 より大きい alterId が設定されたままのサーバでも、この認証を受け付けるため、サーバをそのままにしておけます。Potatso は、0 より大きい alterId だけが使っていた古い認証には対応していません。この認証は、サーバ側で 2022 年から非推奨になっています。

トランスポート

トランスポート リンクの net / type 対応 テストに使用したもの
なし(プレーン TCP) tcp、または指定なし ✅ TLS の有無は問いません Xray、sing-box、V2Ray
WebSocket ws ✅ TLS と Early Data の有無は問いません Xray、sing-box、V2Ray
gRPC grpc ✅ TLS の有無は問いません Xray、sing-box、V2Ray
HTTP/2 h2 または http ✅ TLS 使用時 sing-box、V2Ray
HTTP Upgrade httpupgrade ✅ TLS の有無は問いません Xray、sing-box
HTTP ヘッダー付きの TCP type=http を指定した tcp ❌
XHTTP xhttp ❌
mKCP、QUIC kcp、quic ❌

対応するすべてのトランスポートは UDP でも動作します。Potatso は、対応していないトランスポートを使うサーバを読み込みません。

WebSocket の Early Data は、接続の最初のバイトを WebSocket ハンドシェイクと一緒に送り、1 往復を省きます。リンクのパスの末尾に ?ed=2048 を付けるか、Clash のサブスクリプションの max-early-data で設定します。

Xray は HTTP/2 を提供しなくなりました。HTTP/2 を使っていた Xray サーバは現在 XHTTP を使っていますが、Potatso はまだ XHTTP に対応していません。

TLS

設定 Clash のキー リンクのフィールド 対応
サーバ名(SNI) servername sni ✅ 指定がない場合、Potatso はサーバのアドレスを使います。
ALPN alpn alpn ✅ 指定がない場合、Potatso は WebSocket では http/1.1、gRPC と HTTP/2 では h2 を送ります。
証明書の検証をスキップ skip-cert-verify allowInsecure ✅
ブラウザフィンガープリント client-fingerprint fp ✅ chrome、firefox、safari、ios、android、edge、random。それ以外の名前は、デフォルトのハンドシェイクで接続します。
証明書のピン留め fingerprint pcs ❌
REALITY reality-opts security=reality ❌
Encrypted Client Hello(ECH) ech-opts ech ❌
カスタム CA 証明書 ❌

証明書の検証をオフにすると、あなたとサーバの間にいる誰でも、通信内容を読めてしまいます。Potatso は、REALITY、ECH、証明書のピンが必要な VMess サーバには接続しません。それらなしで接続しても、サーバが求める保護が得られないためです。REALITY が必要な場合は、VLESS または Trojan を使ってください。

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

UDP

VMess サーバでは、UDP はデフォルトでオフです。サーバの設定で UDP リレーをオンにするか、Clash のサブスクリプションで udp: true を設定してください。

Potatso は、UDP の各フローをそれぞれ専用の VMess 接続で送ります。これはどの VMess サーバも受け付けます。多数の UDP フローを 1 つの接続で運ぶ XUDP と PacketAddr のエンコード(リンクの packetEncoding、Clash のサブスクリプションの packet-encoding や xudp)には対応していません。それらを設定したサーバでも動作し、読み込み時に、代わりに Potatso 独自の UDP を使うことが通知されます。一部のゲームなど、フルコーン NAT を必要とするアプリは、動作しない場合があります。

多重化がオンの場合、UDP は代わりに共有された接続で運ばれます。

多重化

Potatso は、1 つの VMess 接続の上に複数の接続を通せます。Clash のサブスクリプションでは smux で設定します。

プロトコル smux の protocol サーバ
Mux.Cool muxcool Xray、V2Ray、sing-box(サーバ側の設定は不要)
sing-mux h2mux、smux、yamux 多重化をオンにした sing-box

TCP も UDP も動作します。Mux.Cool は接続の両方向をまとめて閉じるため、送信を止めてから応答を待つアプリは、多重化のないサーバを使ってください。

リクエストのオプション

VMess クライアントは、接続ごとにいくつかのオプションを選び、サーバはそのどれも受け付けます。Potatso は常に、通信を暗号化されたチャンクで送り、各アップロードの終わりに目印を付けます。それ以外は設定しません。

オプション Clash のキー Potatso
チャンクストリーム 常にオン
チャンクマスキング オフ
グローバルパディング global-padding オフ。これを設定したサーバを読み込むと、Potatso が警告します。
認証付きの長さ authenticated-length オフ。これを設定したサーバを読み込むと、Potatso が警告します。

チャンクマスキングとグローバルパディングは、各チャンクのサイズを傍受者から隠します。これらがなくても通信内容は読み取れませんが、通信のパターンは識別されやすくなります。

大きなアップロード

1 つの VMess 接続でアップロードできるのは約 1 GiB までです。VMess は暗号化したチャンクにカウンターで番号を振りますが、その上限を超えると暗号が弱くなるため、Potatso は代わりに接続を閉じます。ダウンロードに制限はありません。1 つの接続で 1 GiB を超えるアップロードには、VLESS または Trojan のサーバを使ってください。

機能の対応状況

機能 対応
AEAD 認証(alterId 0) ✅
レガシーの MD5 認証(0 より大きい alterId) ❌ alterId が 0 より大きいサーバも AEAD 認証を受け付けます。
暗号方式 aes-128-gcm、chacha20-poly1305、none、auto ✅
暗号方式 zero とレガシーの aes-128-cfb ❌
チャンクストリーム、アップロード終了の目印 ✅
チャンクマスキング、グローバルパディング、認証付きの長さ ❌ サーバはこれらなしの接続も受け付けます
UDP ✅ フローごとに 1 つの接続
1 つの接続で約 1 GiB を超えるアップロード ❌ 大きなアップロードを参照してください
XUDP、PacketAddr ❌
Mux.Cool ✅ TCP と UDP
sing-mux(h2mux、smux、yamux) ✅ TCP と UDP
トランスポート トランスポートを参照してください
TLS TLS を参照してください
v2rayN の共有リンク(バージョン 2) ✅
Xray の共有リンク ✅
Shadowrocket の共有リンク 読み込みのみ

vmess:// リンクは、1 行にサーバ全体の情報をまとめたものです。Potatso は 3 つの形式を読み込み、最初の 2 つを共有します。

最も一般的な v2rayN 形式は、Base64 でエンコードした JSON オブジェクトです。

vmess://base64({"v":"2","ps":"name","add":"host","port":"443","id":"uuid",…})
フィールド 説明
v 形式のバージョン。2。
ps 任意。Potatso でのサーバ名。
add サーバのアドレス。
port サーバのポート。
id UUID。
aid alterId。alterId を参照してください。
scy 暗号方式。指定がない場合は auto。
net トランスポート:tcp、ws、grpc、h2、httpupgrade。
type none、または TCP の HTTP ヘッダーを示す http(Potatso は対応していません)。
host WebSocket、HTTP/2、HTTP Upgrade の Host ヘッダー。
path WebSocket、HTTP/2、HTTP Upgrade のパス、または gRPC のサービス名。WebSocket のパスは、Early Data のために ?ed=2048 で終えられます。
tls TLS を使う場合は tls、それ以外は空。
sni、alpn、fp TLS のサーバ名、ALPN のリスト、ブラウザフィンガープリント。

Xray 形式は URL で、暗号方式を encryption に、トランスポートと TLS の設定をクエリパラメータに入れます。

vmess://uuid@host:port?type=ws&security=tls&sni=…&host=…&path=…&encryption=auto#name
パラメータ 説明
type トランスポート。
encryption 暗号方式。指定がない場合は auto。
security tls、または none。
sni、alpn、fp TLS のサーバ名、ALPN のリスト、ブラウザフィンガープリント。
host、path v2rayN 形式と同じ、Host ヘッダーとパス。
serviceName gRPC のサービス名。
ed WebSocket の Early Data(バイト数)。

Potatso は、Shadowrocket の形式 vmess://base64(cipher:uuid@host:port)?remarks=…&obfs=websocket&… も読み込みます。

各例は、読み込むリンクを示しています。UUID は b831381d-6324-4d53-ad4f-8cda48b30811 です。

cdn.example.com 経由の、TLS と Early Data を使う WebSocket。Chrome フィンガープリント付き:

vmess://eyJ2IjoiMiIsInBzIjoiV1MgVExTIiwiYWRkIjoidm1lc3MuZXhhbXBsZS5jb20iLCJwb3J0IjoiNDQzIiwiaWQiOiJiODMxMzgxZC02MzI0LTRkNTMtYWQ0Zi04Y2RhNDhiMzA4MTEiLCJhaWQiOiIwIiwic2N5IjoiYXV0byIsIm5ldCI6IndzIiwidHlwZSI6Im5vbmUiLCJob3N0IjoiY2RuLmV4YW1wbGUuY29tIiwicGF0aCI6Ii9yYXk/ZWQ9MjA0OCIsInRscyI6InRscyIsInNuaSI6ImNkbi5leGFtcGxlLmNvbSIsImFscG4iOiJodHRwLzEuMSIsImZwIjoiY2hyb21lIn0=

TLS と aes-128-gcm を使う gRPC、サービス名は vmess-grpc:

vmess://eyJ2IjoiMiIsInBzIjoiZ1JQQyIsImFkZCI6InZtZXNzLmV4YW1wbGUuY29tIiwicG9ydCI6IjQ0MyIsImlkIjoiYjgzMTM4MWQtNjMyNC00ZDUzLWFkNGYtOGNkYTQ4YjMwODExIiwiYWlkIjoiMCIsInNjeSI6ImFlcy0xMjgtZ2NtIiwibmV0IjoiZ3JwYyIsInBhdGgiOiJ2bWVzcy1ncnBjIiwidGxzIjoidGxzIiwic25pIjoidm1lc3MuZXhhbXBsZS5jb20ifQ==

chacha20-poly1305 を使うプレーン TCP(Xray 形式):

vmess://b831381d-6324-4d53-ad4f-8cda48b30811@vmess.example.com:8080?type=tcp&encryption=chacha20-poly1305#Plain%20TCP

TLS を使う HTTP Upgrade(Xray 形式):

vmess://b831381d-6324-4d53-ad4f-8cda48b30811@vmess.example.com:443?type=httpupgrade&security=tls&sni=cdn.example.com&host=cdn.example.com&path=%2Fupgrade&encryption=auto#HTTP%20Upgrade

Clash のサブスクリプションでは

proxies:
  - name: VMess WS
    type: vmess
    server: vmess.example.com
    port: 443
    uuid: b831381d-6324-4d53-ad4f-8cda48b30811
    alterId: 0
    cipher: auto
    udp: true
    tls: true
    servername: cdn.example.com
    network: ws
    ws-opts:
      path: /ray
      headers:
        Host: cdn.example.com
      max-early-data: 2048
      early-data-header-name: Sec-WebSocket-Protocol
ナビゲーション

Type to search…

↑↓ navigate↵ selectEsc close