---
title: "VMess"
description: "การเข้ารหัส การส่งผ่าน ลิงก์ และฟีเจอร์ของ VMess ที่ Potatso รองรับ"
---

> 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** **การเข้ารหัส** (cipher) ที่เข้ารหัสทราฟฟิก และ **การส่งผ่าน** (transport) ที่ใช้นำการเชื่อมต่อ เช่น WebSocket หรือ gRPC ทั้งแบบมีและไม่มี TLS Potatso เชื่อมต่อกับเซิร์ฟเวอร์เมื่อรองรับการเข้ารหัส การส่งผ่าน และการตั้งค่า TLS ของเซิร์ฟเวอร์ ใช้ตารางด้านล่างเพื่อตรวจสอบการตั้งค่าของเซิร์ฟเวอร์ ตามที่ผู้ให้บริการแจ้งหรือในลิงก์ `vmess://` ของเซิร์ฟเวอร์

คุณเพิ่มเซิร์ฟเวอร์ VMess ได้ด้วยตนเอง ด้วย[ลิงก์ `vmess://`](#links) หรือโดยการนำเข้า:

- การสมัครรับ Clash หรือ Mihomo
- การกำหนดค่า Xray หรือ V2Ray
- การกำหนดค่า Surge

Potatso ยังไม่นำเข้าเซิร์ฟเวอร์ VMess จากการกำหนดค่า sing-box ให้ใช้ลิงก์ `vmess://` ของเซิร์ฟเวอร์แทน

## การเข้ารหัส (Cipher) {#ciphers}

| การเข้ารหัส | รองรับ |
| --- | --- |
| `auto` | ✅ Potatso เลือก `aes-128-gcm` ซึ่งอุปกรณ์ Apple ทุกเครื่องรันด้วยฮาร์ดแวร์ |
| `aes-128-gcm` | ✅ |
| `chacha20-poly1305` | ✅ |
| `none` | ✅ |
| `zero` | ❌ |
| `aes-128-cfb` (รุ่นเก่า) | ❌ |

`none` และ `zero` ส่งทราฟฟิกของคุณโดยไม่เข้ารหัส ใช้ `none` เฉพาะกับ TLS ซึ่งจะเข้ารหัสการเชื่อมต่อแทน Potatso ไม่เชื่อมต่อด้วย `zero` ซึ่งยังตัดการป้องกันการแก้ไขข้อมูลออกด้วย: ให้เลือกการเข้ารหัสอื่นบนเซิร์ฟเวอร์ของคุณ

### alterId {#alterid}

Potatso ใช้การยืนยันตัวตนของ VMess แบบปัจจุบันเสมอ ซึ่งเหมือนกับ `alterId` 0 เซิร์ฟเวอร์ที่ผู้ใช้ยังมี `alterId` มากกว่า 0 ก็ยอมรับเช่นกัน คุณจึงปล่อยเซิร์ฟเวอร์ไว้ตามเดิมได้ Potatso ไม่รองรับการยืนยันตัวตนแบบเก่าที่ใช้เฉพาะ `alterId` มากกว่า 0 ซึ่งเซิร์ฟเวอร์เลิกใช้ตั้งแต่ปี 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 |
| TCP ที่มีส่วนหัว HTTP | `tcp` กับ `type=http` | ❌ | |
| XHTTP | `xhttp` | ❌ | |
| mKCP, QUIC | `kcp`, `quic` | ❌ | |

ทุกการส่งผ่านที่รองรับใช้ได้กับ UDP Potatso ไม่นำเข้าเซิร์ฟเวอร์ที่ใช้การส่งผ่านที่ไม่รองรับ

early data ของ WebSocket ส่งไบต์แรกของการเชื่อมต่อไปพร้อมกับ WebSocket handshake ช่วยประหยัดหนึ่งรอบ ตั้งด้วย `?ed=2048` ที่ท้ายเส้นทางของลิงก์ หรือ `max-early-data` ในการสมัครรับ Clash

Xray ไม่มี HTTP/2 อีกต่อไป: เซิร์ฟเวอร์ Xray ที่เคยใช้ HTTP/2 ตอนนี้ใช้ XHTTP ซึ่ง Potatso ยังไม่รองรับ

## TLS {#tls}

| การตั้งค่า | คีย์ของ Clash | ฟิลด์ของลิงก์ | รองรับ |
| --- | --- | --- | --- |
| ชื่อเซิร์ฟเวอร์ (SNI) | `servername` | `sni` | ✅ หากไม่ระบุ Potatso ใช้ที่อยู่ของเซิร์ฟเวอร์ |
| ALPN | `alpn` | `alpn` | ✅ หากไม่ระบุ Potatso ส่ง `http/1.1` สำหรับ WebSocket และ `h2` สำหรับ gRPC และ HTTP/2 |
| ข้ามการตรวจสอบใบรับรอง | `skip-cert-verify` | `allowInsecure` | ✅ |
| ลายนิ้วมือเบราว์เซอร์ | `client-fingerprint` | `fp` | ✅ `chrome`, `firefox`, `safari`, `ios`, `android`, `edge` และ `random` ชื่ออื่นจะเชื่อมต่อด้วย handshake เริ่มต้น |
| การปักหมุดใบรับรอง | `fingerprint` | `pcs` | ❌ |
| REALITY | `reality-opts` | `security=reality` | ❌ |
| Encrypted Client Hello (ECH) | `ech-opts` | `ech` | ❌ |
| ใบรับรอง CA ที่กำหนดเอง | | | ❌ |

การปิดการตรวจสอบใบรับรองทำให้ใครก็ตามที่อยู่ระหว่างคุณกับเซิร์ฟเวอร์อ่านทราฟฟิกของคุณได้ Potatso ไม่เชื่อมต่อกับเซิร์ฟเวอร์ VMess ที่ต้องใช้ REALITY, ECH หรือการปักหมุดใบรับรอง เพราะการเชื่อมต่อโดยไม่มีสิ่งเหล่านั้นจะไม่ให้การป้องกันที่เซิร์ฟเวอร์ต้องการ ใช้ VLESS หรือ Trojan สำหรับ REALITY

ลายนิ้วมือเบราว์เซอร์ทำให้ TLS handshake ของการเชื่อมต่อดูเหมือนของเบราว์เซอร์นั้น ไม่เปลี่ยนสิ่งที่เซิร์ฟเวอร์ต้องรองรับ

## UDP {#udp}

UDP ปิดไว้โดยค่าเริ่มต้นสำหรับเซิร์ฟเวอร์ VMess เปิด **UDP Relay** ในการตั้งค่าของเซิร์ฟเวอร์ หรือตั้ง `udp: true` ในการสมัครรับ Clash

Potatso ส่งแต่ละโฟลว์ UDP ผ่านการเชื่อมต่อ VMess ของตัวเอง ซึ่งเซิร์ฟเวอร์ VMess ทุกตัวรับได้ ไม่รองรับการเข้ารหัส XUDP และ PacketAddr (`packetEncoding` ในลิงก์, `packet-encoding` หรือ `xudp` ในการสมัครรับ Clash) ซึ่งนำหลายโฟลว์ UDP ผ่านการเชื่อมต่อเดียว: เซิร์ฟเวอร์ที่ตั้งค่าไว้เช่นนั้นยังใช้งานได้ และ Potatso จะแจ้งตอนนำเข้าว่าใช้ UDP แบบของตัวเองแทน แอปที่ต้องใช้ NAT แบบ full-cone เช่นเกมบางเกม อาจใช้งานไม่ได้

เมื่อเปิด[การมัลติเพล็กซ์](#mux) UDP จะผ่านการเชื่อมต่อที่ใช้ร่วมกันแทน

## การมัลติเพล็กซ์ {#mux}

Potatso รันหลายการเชื่อมต่อผ่านการเชื่อมต่อ VMess เดียวได้ ซึ่งตั้งด้วย `smux` ในการสมัครรับ Clash:

| โปรโตคอล | `protocol` ของ `smux` | เซิร์ฟเวอร์ |
| --- | --- | --- |
| Mux.Cool | `muxcool` | Xray, V2Ray และ sing-box โดยไม่ต้องตั้งค่าฝั่งเซิร์ฟเวอร์ |
| sing-mux | `h2mux`, `smux`, `yamux` | sing-box ที่เปิดการมัลติเพล็กซ์ไว้ |

ใช้ได้ทั้ง TCP และ UDP Mux.Cool ปิดทั้งสองทิศทางของการเชื่อมต่อพร้อมกัน ดังนั้นแอปที่หยุดส่งแล้วรอคำตอบควรใช้เซิร์ฟเวอร์ที่ไม่มีการมัลติเพล็กซ์

## ตัวเลือกของคำขอ {#request-options}

ไคลเอนต์ VMess เลือกตัวเลือกบางอย่างสำหรับแต่ละการเชื่อมต่อ และเซิร์ฟเวอร์ทุกตัวยอมรับทุกตัวเลือกเหล่านั้น Potatso ส่งทราฟฟิกเป็นชังก์ที่เข้ารหัสเสมอและทำเครื่องหมายจุดสิ้นสุดของการอัปโหลดแต่ละครั้ง และไม่ตั้งตัวเลือกอื่น:

| ตัวเลือก | คีย์ของ Clash | Potatso |
| --- | --- | --- |
| Chunk stream | | เปิดเสมอ |
| Chunk masking | | ปิด |
| Global padding | `global-padding` | ปิด Potatso เตือนเมื่อคุณนำเข้าเซิร์ฟเวอร์ที่ตั้งค่านี้ |
| Authenticated length | `authenticated-length` | ปิด Potatso เตือนเมื่อคุณนำเข้าเซิร์ฟเวอร์ที่ตั้งค่านี้ |

Chunk masking และ global padding ซ่อนขนาดของแต่ละชังก์จากผู้ที่คอยสังเกต หากไม่มีสิ่งเหล่านี้ ทราฟฟิกของคุณก็ยังอ่านไม่ได้ แต่จดจำรูปแบบได้ง่ายขึ้น

### การอัปโหลดขนาดใหญ่ {#large-uploads}

การเชื่อมต่อ VMess หนึ่งครั้งอัปโหลดได้ประมาณ 1 GiB VMess นับลำดับชังก์ที่เข้ารหัสด้วยตัวนับที่หมดลงหลังจากนั้น และการทำต่อจะทำให้การเข้ารหัสอ่อนลง Potatso จึงปิดการเชื่อมต่อแทน การดาวน์โหลดไม่มีขีดจำกัด สำหรับการอัปโหลดที่ใหญ่กว่า 1 GiB ในหนึ่งการเชื่อมต่อ ให้ใช้เซิร์ฟเวอร์ VLESS หรือ Trojan

## การรองรับฟีเจอร์ {#features}

| ฟีเจอร์ | รองรับ |
| --- | --- |
| [การยืนยันตัวตนแบบ AEAD](https://www.v2fly.org/en_US/developer/protocols/vmess.html) (`alterId` 0) | ✅ |
| การยืนยันตัวตน MD5 รุ่นเก่า (`alterId` มากกว่า 0) | ❌ เซิร์ฟเวอร์ที่มี `alterId` มากกว่า 0 ยอมรับการยืนยันตัวตนแบบ AEAD |
| การเข้ารหัส `aes-128-gcm`, `chacha20-poly1305`, `none`, `auto` | ✅ |
| การเข้ารหัส `zero` และ `aes-128-cfb` รุ่นเก่า | ❌ |
| Chunk stream, ตัวบอกจุดสิ้นสุดการอัปโหลด | ✅ |
| Chunk masking, global padding, authenticated length | ❌ เซิร์ฟเวอร์ยอมรับการเชื่อมต่อที่ไม่มีสิ่งเหล่านี้ |
| UDP | ✅ หนึ่งการเชื่อมต่อต่อโฟลว์ |
| การอัปโหลดเกินประมาณ 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://` เก็บเซิร์ฟเวอร์ทั้งตัวไว้ในบรรทัดเดียว Potatso นำเข้าสามรูปแบบและแชร์สองรูปแบบแรก

รูปแบบ v2rayN ซึ่งพบบ่อยที่สุด เป็นอ็อบเจ็กต์ JSON ที่เข้ารหัสด้วย Base64:

```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` หรือ `http` สำหรับส่วนหัว HTTP ของ TCP ซึ่ง Potatso ไม่รองรับ |
| `host` | ส่วนหัว `Host` สำหรับ WebSocket, HTTP/2 และ HTTP Upgrade |
| `path` | เส้นทางสำหรับ WebSocket, HTTP/2 และ HTTP Upgrade หรือชื่อบริการสำหรับ gRPC เส้นทาง WebSocket ลงท้ายด้วย `?ed=2048` เพื่อใช้ early data ได้ |
| `tls` | `tls` เพื่อใช้ TLS หรือเว้นว่าง |
| `sni`, `alpn`, `fp` | ชื่อเซิร์ฟเวอร์ รายการ ALPN และลายนิ้วมือเบราว์เซอร์ของ [TLS](#tls) |

รูปแบบ Xray เป็น URL โดยมีการเข้ารหัสใน `encryption` และการตั้งค่าการส่งผ่านและ TLS เป็นพารามิเตอร์ของ query:

```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` | ชื่อเซิร์ฟเวอร์ รายการ ALPN และลายนิ้วมือเบราว์เซอร์ของ [TLS](#tls) |
| `host`, `path` | ส่วนหัว `Host` และเส้นทาง เหมือนในรูปแบบ v2rayN |
| `serviceName` | ชื่อบริการ gRPC |
| `ed` | early data ของ WebSocket เป็นไบต์ |

Potatso ยังนำเข้ารูปแบบของ Shadowrocket คือ `vmess://base64(cipher:uuid@host:port)?remarks=…&obfs=websocket&…`

### ตัวอย่าง {#link-examples}

แต่ละตัวอย่างแสดงลิงก์ที่จะนำเข้า UUID คือ `b831381d-6324-4d53-ad4f-8cda48b30811`

WebSocket กับ TLS และ early data ผ่าน `cdn.example.com` พร้อมลายนิ้วมือ Chrome:

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

gRPC กับ TLS และ `aes-128-gcm` ชื่อบริการ `vmess-grpc`:

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

TCP ธรรมดากับ `chacha20-poly1305` ในรูปแบบ Xray:

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

HTTP Upgrade กับ TLS ในรูปแบบ 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/th/protocols/vmess/index.mdx
