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

> Documentation Index
> Fetch the complete documentation index at: https://potatso.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# VMess

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

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

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

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

## 暗号方式 {#ciphers}

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

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

### alterId {#alterid}

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

## トランスポート {#transports}

| トランスポート | リンクの `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 {#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 {#udp}

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

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

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

## 多重化 {#mux}

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 は接続の両方向をまとめて閉じるため、送信を止めてから応答を待つアプリは、多重化のないサーバを使ってください。

## リクエストのオプション {#request-options}

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

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

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

### 大きなアップロード {#large-uploads}

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

## 機能の対応状況 {#features}

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

## `vmess://` リンク {#links}

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

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

```text
vmess://base64({"v":"2","ps":"name","add":"host","port":"443","id":"uuid",…})
```

| フィールド | 説明 |
| --- | --- |
| `v` | 形式のバージョン。`2`。 |
| `ps` | 任意。Potatso でのサーバ名。 |
| `add` | サーバのアドレス。 |
| `port` | サーバのポート。 |
| `id` | UUID。 |
| `aid` | `alterId`。[alterId](#alterid) を参照してください。 |
| `scy` | [暗号方式](#ciphers)。指定がない場合は `auto`。 |
| `net` | [トランスポート](#transports)：`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](#tls) のサーバ名、ALPN のリスト、ブラウザフィンガープリント。 |

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

```text
vmess://uuid@host:port?type=ws&security=tls&sni=…&host=…&path=…&encryption=auto#name
```

| パラメータ | 説明 |
| --- | --- |
| `type` | [トランスポート](#transports)。 |
| `encryption` | [暗号方式](#ciphers)。指定がない場合は `auto`。 |
| `security` | `tls`、または `none`。 |
| `sni`、`alpn`、`fp` | [TLS](#tls) のサーバ名、ALPN のリスト、ブラウザフィンガープリント。 |
| `host`、`path` | v2rayN 形式と同じ、`Host` ヘッダーとパス。 |
| `serviceName` | gRPC のサービス名。 |
| `ed` | WebSocket の Early Data（バイト数）。 |

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

### 例 {#link-examples}

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

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

```text
vmess://eyJ2IjoiMiIsInBzIjoiV1MgVExTIiwiYWRkIjoidm1lc3MuZXhhbXBsZS5jb20iLCJwb3J0IjoiNDQzIiwiaWQiOiJiODMxMzgxZC02MzI0LTRkNTMtYWQ0Zi04Y2RhNDhiMzA4MTEiLCJhaWQiOiIwIiwic2N5IjoiYXV0byIsIm5ldCI6IndzIiwidHlwZSI6Im5vbmUiLCJob3N0IjoiY2RuLmV4YW1wbGUuY29tIiwicGF0aCI6Ii9yYXk/ZWQ9MjA0OCIsInRscyI6InRscyIsInNuaSI6ImNkbi5leGFtcGxlLmNvbSIsImFscG4iOiJodHRwLzEuMSIsImZwIjoiY2hyb21lIn0=
```

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

```text
vmess://eyJ2IjoiMiIsInBzIjoiZ1JQQyIsImFkZCI6InZtZXNzLmV4YW1wbGUuY29tIiwicG9ydCI6IjQ0MyIsImlkIjoiYjgzMTM4MWQtNjMyNC00ZDUzLWFkNGYtOGNkYTQ4YjMwODExIiwiYWlkIjoiMCIsInNjeSI6ImFlcy0xMjgtZ2NtIiwibmV0IjoiZ3JwYyIsInBhdGgiOiJ2bWVzcy1ncnBjIiwidGxzIjoidGxzIiwic25pIjoidm1lc3MuZXhhbXBsZS5jb20ifQ==
```

`chacha20-poly1305` を使うプレーン TCP（Xray 形式）：

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

TLS を使う HTTP Upgrade（Xray 形式）：

```text
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 のサブスクリプションでは {#clash}

```yaml
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
```

Source: https://potatso.com/docs/ja/protocols/vmess/index.mdx
