---
title: "VMess"
description: "Los cifrados, transportes, enlaces y funciones de VMess que admite 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

Un servidor VMess se describe con un **UUID**, un **cifrado** que protege el tráfico y un **transporte** que lleva la conexión, como WebSocket o gRPC, con o sin TLS. Potatso se conecta a un servidor cuando admite el cifrado, el transporte y los ajustes TLS de este. Usa las tablas siguientes para comprobar los ajustes de tu servidor, tal como los muestra tu proveedor o su enlace `vmess://`.

Puedes añadir un servidor VMess a mano, con un [enlace `vmess://`](#links) o importándolo desde:

- una suscripción de Clash o Mihomo,
- una configuración de Xray o V2Ray,
- una configuración de Surge.

Potatso todavía no importa servidores VMess desde una configuración de sing-box. Usa en su lugar el enlace `vmess://` del servidor.

## Cifrados {#ciphers}

| Cifrado | Admitido |
| --- | --- |
| `auto` | ✅ Potatso elige `aes-128-gcm`, que todos los dispositivos Apple ejecutan por hardware. |
| `aes-128-gcm` | ✅ |
| `chacha20-poly1305` | ✅ |
| `none` | ✅ |
| `zero` | ❌ |
| `aes-128-cfb` (heredado) | ❌ |

`none` y `zero` envían tu tráfico sin cifrar. Usa `none` solo con TLS, que entonces cifra la conexión. Potatso no se conecta con `zero`, que además elimina la protección contra manipulaciones: elige otro cifrado en tu servidor.

### alterId {#alterid}

Potatso siempre usa la autenticación VMess actual, que equivale a `alterId` 0. Los servidores cuyo usuario todavía tiene un `alterId` superior a 0 también la aceptan, así que puedes dejar el servidor como está. Potatso no admite la autenticación antigua que solo usaba un `alterId` superior a 0, que los servidores han dejado de recomendar desde 2022.

## Transportes {#transports}

| Transporte | `net` / `type` del enlace | Admitido | Probado con |
| --- | --- | --- | --- |
| Ninguno (TCP simple) | `tcp`, o ninguno | ✅ Con o sin TLS | Xray, sing-box, V2Ray |
| WebSocket | `ws` | ✅ Con o sin TLS y early data | Xray, sing-box, V2Ray |
| gRPC | `grpc` | ✅ Con o sin TLS | Xray, sing-box, V2Ray |
| HTTP/2 | `h2` o `http` | ✅ Con TLS | sing-box, V2Ray |
| HTTP Upgrade | `httpupgrade` | ✅ Con o sin TLS | Xray, sing-box |
| TCP con una cabecera HTTP | `tcp` con `type=http` | ❌ | |
| XHTTP | `xhttp` | ❌ | |
| mKCP, QUIC | `kcp`, `quic` | ❌ | |

Todos los transportes admitidos funcionan con UDP. Potatso no importa un servidor cuyo transporte no admite.

El early data de WebSocket envía los primeros bytes de una conexión junto con la negociación WebSocket, ahorrando un viaje de ida y vuelta. Se indica con `?ed=2048` al final de la ruta del enlace, o con `max-early-data` en una suscripción de Clash.

Xray ya no ofrece HTTP/2: los servidores Xray que lo usaban ahora usan XHTTP, que Potatso todavía no admite.

## TLS {#tls}

| Ajuste | Clave de Clash | Campo del enlace | Admitido |
| --- | --- | --- | --- |
| Nombre del servidor (SNI) | `servername` | `sni` | ✅ Sin él, Potatso usa la dirección del servidor. |
| ALPN | `alpn` | `alpn` | ✅ Sin él, Potatso envía `http/1.1` para WebSocket y `h2` para gRPC y HTTP/2. |
| Omitir verificación del certificado | `skip-cert-verify` | `allowInsecure` | ✅ |
| Huella digital del navegador | `client-fingerprint` | `fp` | ✅ `chrome`, `firefox`, `safari`, `ios`, `android`, `edge` y `random`. Otros nombres se conectan con una negociación predeterminada. |
| Pin de certificado | `fingerprint` | `pcs` | ❌ |
| REALITY | `reality-opts` | `security=reality` | ❌ |
| Encrypted Client Hello (ECH) | `ech-opts` | `ech` | ❌ |
| Certificado de CA personalizado | | | ❌ |

Desactivar la verificación del certificado permite que cualquiera entre tú y el servidor lea tu tráfico. Potatso no se conecta a un servidor VMess que necesite REALITY, ECH o un pin de certificado, porque conectarse sin ellos no daría la protección que pide el servidor. Usa VLESS o Trojan para REALITY.

Una huella digital del navegador hace que la negociación TLS de la conexión parezca la de ese navegador. No cambia lo que debe admitir el servidor.

## UDP {#udp}

UDP está desactivado por defecto en los servidores VMess. Activa **Retransmisión UDP** en los ajustes del servidor, o indica `udp: true` en una suscripción de Clash.

Potatso envía cada flujo UDP por su propia conexión VMess, algo que aceptan todos los servidores VMess. No admite las codificaciones XUDP y PacketAddr (`packetEncoding` en un enlace, `packet-encoding` o `xudp` en una suscripción de Clash), que transportan muchos flujos UDP por una sola conexión: un servidor configurado con ellas sigue funcionando, y Potatso te avisa al importar de que usa en su lugar su propio UDP. Es posible que las apps que necesitan NAT full-cone, como algunos juegos, no funcionen con él.

Con la [multiplexación](#mux) activada, UDP viaja en cambio por la conexión compartida.

## Multiplexación {#mux}

Potatso puede ejecutar varias conexiones sobre una sola conexión VMess, indicada con `smux` en una suscripción de Clash:

| Protocolo | `protocol` de `smux` | Servidores |
| --- | --- | --- |
| Mux.Cool | `muxcool` | Xray, V2Ray y sing-box, sin ajuste en el servidor |
| sing-mux | `h2mux`, `smux`, `yamux` | sing-box con la multiplexación activada |

Funcionan tanto TCP como UDP. Mux.Cool cierra a la vez ambas direcciones de una conexión, así que una app que deja de enviar y luego espera la respuesta debería usar un servidor sin multiplexación.

## Opciones de petición {#request-options}

Un cliente VMess elige algunas opciones en cada conexión, y todos los servidores aceptan cualquiera de ellas. Potatso siempre envía su tráfico en fragmentos cifrados y marca el final de cada subida, y no activa las demás:

| Opción | Clave de Clash | Potatso |
| --- | --- | --- |
| Flujo de fragmentos | | Siempre activada |
| Enmascaramiento de fragmentos | | Desactivada |
| Padding global | `global-padding` | Desactivada. Potatso te avisa cuando importas un servidor que la activa. |
| Longitud autenticada | `authenticated-length` | Desactivada. Potatso te avisa cuando importas un servidor que la activa. |

El enmascaramiento de fragmentos y el padding global ocultan el tamaño de cada fragmento a quien observe. Sin ellos, tu tráfico sigue sin poder leerse, pero su patrón es más fácil de reconocer.

### Subidas grandes {#large-uploads}

Una sola conexión VMess puede subir unos 1 GiB. VMess numera sus fragmentos cifrados con un contador que se agota pasado ese límite, y seguir debilitaría el cifrado, así que Potatso cierra la conexión. Las descargas no tienen límite. Para subidas de más de 1 GiB en una sola conexión, usa un servidor VLESS o Trojan.

## Compatibilidad de funciones {#features}

| Función | Admitida |
| --- | --- |
| [Autenticación AEAD](https://www.v2fly.org/en_US/developer/protocols/vmess.html) (`alterId` 0) | ✅ |
| Autenticación MD5 heredada (`alterId` superior a 0) | ❌ Los servidores con `alterId` superior a 0 aceptan la autenticación AEAD. |
| Cifrados `aes-128-gcm`, `chacha20-poly1305`, `none`, `auto` | ✅ |
| Cifrados `zero` y el heredado `aes-128-cfb` | ❌ |
| Flujo de fragmentos, marcador de fin de subida | ✅ |
| Enmascaramiento de fragmentos, padding global, longitud autenticada | ❌ Los servidores aceptan conexiones sin ellos |
| UDP | ✅ Una conexión por flujo |
| Subidas de más de 1 GiB en una conexión | ❌ Consulta [Subidas grandes](#large-uploads) |
| XUDP, PacketAddr | ❌ |
| Mux.Cool | ✅ TCP y UDP |
| sing-mux (h2mux, smux, yamux) | ✅ TCP y UDP |
| Transportes | Consulta [Transportes](#transports) |
| TLS | Consulta [TLS](#tls) |
| [Enlaces para compartir de v2rayN](#links) (versión 2) | ✅ |
| [Enlaces para compartir de Xray](https://github.com/XTLS/Xray-core/discussions/716) | ✅ |
| Enlaces para compartir de Shadowrocket | Solo importación |

## Enlaces `vmess://` {#links}

Un enlace `vmess://` contiene un servidor completo en una sola línea. Potatso importa tres formas y comparte las dos primeras.

La forma de v2rayN, la más habitual, es un objeto JSON codificado en Base64:

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

| Campo | Descripción |
| --- | --- |
| `v` | Versión del formato, `2`. |
| `ps` | Opcional. El nombre del servidor en Potatso. |
| `add` | Dirección del servidor. |
| `port` | Puerto del servidor. |
| `id` | El UUID. |
| `aid` | `alterId`. Consulta [alterId](#alterid). |
| `scy` | El [cifrado](#ciphers). Sin él, `auto`. |
| `net` | El [transporte](#transports): `tcp`, `ws`, `grpc`, `h2` o `httpupgrade`. |
| `type` | `none`, o `http` para una cabecera HTTP de TCP, que Potatso no admite. |
| `host` | La cabecera `Host` para WebSocket, HTTP/2 y HTTP Upgrade. |
| `path` | La ruta para WebSocket, HTTP/2 y HTTP Upgrade, o el nombre del servicio para gRPC. Una ruta WebSocket puede terminar en `?ed=2048` para early data. |
| `tls` | `tls` para usar TLS, o vacío. |
| `sni`, `alpn`, `fp` | El nombre de servidor [TLS](#tls), la lista ALPN y la huella digital del navegador. |

La forma de Xray es una URL, con el cifrado en `encryption` y el transporte y los ajustes TLS como parámetros de consulta:

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

| Parámetro | Descripción |
| --- | --- |
| `type` | El [transporte](#transports). |
| `encryption` | El [cifrado](#ciphers). Sin él, `auto`. |
| `security` | `tls`, o `none`. |
| `sni`, `alpn`, `fp` | El nombre de servidor [TLS](#tls), la lista ALPN y la huella digital del navegador. |
| `host`, `path` | La cabecera `Host` y la ruta, como en la forma de v2rayN. |
| `serviceName` | El nombre del servicio gRPC. |
| `ed` | Early data de WebSocket, en bytes. |

Potatso también importa la forma de Shadowrocket, `vmess://base64(cipher:uuid@host:port)?remarks=…&obfs=websocket&…`.

### Ejemplos {#link-examples}

Cada ejemplo muestra el enlace que se importa. El UUID es `b831381d-6324-4d53-ad4f-8cda48b30811`.

WebSocket con TLS y early data, a través de `cdn.example.com`, con la huella digital de Chrome:

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

gRPC con TLS y `aes-128-gcm`, nombre de servicio `vmess-grpc`:

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

TCP simple con `chacha20-poly1305`, en la forma de Xray:

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

HTTP Upgrade con TLS, en la forma de 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
```

### En una suscripción de 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/es/protocols/vmess/index.mdx
