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가 모든 Apple 기기가 하드웨어로 실행하는 aes-128-gcm을 선택합니다.
aes-128-gcm ✅
chacha20-poly1305 ✅
none ✅
zero ❌
aes-128-cfb(레거시) ❌

none과 zero는 트래픽을 암호화하지 않고 보냅니다. none은 연결을 암호화하는 TLS와 함께 쓸 때만 사용하세요. Potatso는 변조 방지 보호까지 없애는 zero로는 연결하지 않습니다. 서버에서 다른 암호화 방식을 선택하세요.

alterId

Potatso는 alterId 0과 같은 현재의 VMess 인증을 항상 사용합니다. 사용자에게 alterId가 0보다 크게 설정된 서버도 이를 받아들이므로 서버는 그대로 두어도 됩니다. Potatso는 alterId가 0보다 클 때만 쓰던 이전 인증을 지원하지 않으며, 서버들은 2022년부터 이를 지원 중단했습니다.

전송

전송 링크 net / type 지원 테스트 환경
없음(일반 TCP) tcp 또는 없음 ✅ TLS 유무 무관 Xray, sing-box, V2Ray
WebSocket ws ✅ TLS 및 얼리 데이터 유무 무관 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 얼리 데이터는 연결의 첫 바이트를 WebSocket 핸드셰이크와 함께 보내 왕복 한 번을 줄입니다. 링크 경로 끝의 ?ed=2048 또는 Clash 구독의 max-early-data로 설정합니다.

Xray는 더 이상 HTTP/2를 제공하지 않습니다. 이를 쓰던 Xray 서버는 이제 XHTTP를 쓰며, Potatso는 아직 이를 지원하지 않습니다.

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 흐름을 전달하는 XUDP와 PacketAddr 인코딩(링크의 packetEncoding, Clash 구독의 packet-encoding 또는 xudp)은 지원하지 않습니다. 이것으로 설정된 서버도 계속 작동하며, Potatso는 가져올 때 자체 UDP를 대신 사용한다고 알려 줍니다. 일부 게임처럼 full-cone NAT가 필요한 앱은 작동하지 않을 수 있습니다.

멀티플렉싱을 켜면 UDP는 대신 공유 연결로 전송됩니다.

멀티플렉싱

Potatso는 하나의 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가 경고합니다.

청크 마스킹과 글로벌 패딩은 지켜보는 쪽에서 각 청크의 크기를 알 수 없게 숨깁니다. 이것이 없어도 트래픽을 읽을 수는 없지만 패턴은 더 쉽게 알아볼 수 있습니다.

대용량 업로드

VMess 연결 하나로는 약 1GiB를 업로드할 수 있습니다. VMess는 암호화된 청크에 카운터로 번호를 매기는데 그 정도가 지나면 카운터가 바닥나고, 계속하면 암호화가 약해지므로 Potatso는 대신 연결을 닫습니다. 다운로드에는 제한이 없습니다. 한 연결에서 1GiB보다 큰 업로드에는 VLESS나 Trojan 서버를 사용하세요.

기능 지원

기능 지원
AEAD 인증(alterId 0) ✅
레거시 MD5 인증(alterId 0 초과) ❌ alterId가 0보다 큰 서버도 AEAD 인증을 받아들입니다.
암호화 방식 aes-128-gcm, chacha20-poly1305, none, auto ✅
암호화 방식 zero 및 레거시 aes-128-cfb ❌
청크 스트림, 업로드 종료 표시 ✅
청크 마스킹, 글로벌 패딩, 인증된 길이 ❌ 서버는 이것 없는 연결도 받아들입니다
UDP ✅ 흐름당 연결 하나
한 연결에서 약 1GiB를 넘는 업로드 ❌ 대용량 업로드 참고
XUDP, PacketAddr ❌
Mux.Cool ✅ TCP와 UDP
sing-mux(h2mux, smux, yamux) ✅ TCP와 UDP
전송 전송 참고
TLS TLS 참고
v2rayN 공유 링크(버전 2) ✅
Xray 공유 링크 ✅
Shadowrocket 공유 링크 가져오기만 지원

vmess:// 링크는 서버 전체를 한 줄에 담습니다. Potatso는 세 가지 형식을 가져오며 앞의 두 가지를 공유합니다.

가장 흔한 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 경로는 ?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 얼리 데이터.

Potatso는 Shadowrocket 형식 vmess://base64(cipher:uuid@host:port)?remarks=…&obfs=websocket&…도 가져옵니다.

각 예시는 가져올 링크를 보여 줍니다. UUID는 b831381d-6324-4d53-ad4f-8cda48b30811입니다.

cdn.example.com을 거치고 Chrome 지문을 쓰는, TLS와 얼리 데이터를 사용한 WebSocket:

vmess://eyJ2IjoiMiIsInBzIjoiV1MgVExTIiwiYWRkIjoidm1lc3MuZXhhbXBsZS5jb20iLCJwb3J0IjoiNDQzIiwiaWQiOiJiODMxMzgxZC02MzI0LTRkNTMtYWQ0Zi04Y2RhNDhiMzA4MTEiLCJhaWQiOiIwIiwic2N5IjoiYXV0byIsIm5ldCI6IndzIiwidHlwZSI6Im5vbmUiLCJob3N0IjoiY2RuLmV4YW1wbGUuY29tIiwicGF0aCI6Ii9yYXk/ZWQ9MjA0OCIsInRscyI6InRscyIsInNuaSI6ImNkbi5leGFtcGxlLmNvbSIsImFscG4iOiJodHRwLzEuMSIsImZwIjoiY2hyb21lIn0=

TLS와 aes-128-gcm을 쓰고 서비스 이름이 vmess-grpc인 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