# vmess://, vless://, ss://, trojan:// 링크 읽는 법

HTML: https://v2rc.app/ko/learn/read-a-config-link/ · 마지막 검토: 2026-11-06

V2Ray 설정 링크의 각 부분이 무엇을 뜻하는지, VLESS, VMess, Shadowsocks, Trojan의 자리 표시자 예시와 함께 설명하고, 링크가 왜 자격 증명인지 알려 줍니다.

설정 링크는 클라이언트에 필요한 모든 것, 즉 서버, 키, 전송 설정을 한 줄에 담고 있습니다. 읽는 법을 알면 무엇을
받았는지, 설정이 왜 실패하는지 알 수 있습니다. 아래 예시는 모두 실제 서버가 아닌 자리 표시자를 사용합니다.

## VLESS

```
vless://00000000-0000-0000-0000-000000000000@server.example:443?encryption=none&security=reality&sni=site.example&fp=chrome&pbk=PUBLIC_KEY&sid=SHORT_ID&type=tcp&flow=xtls-rprx-vision#my-config
```

| 부분 | 의미 |
|---|---|
| `00000000-…` | 사용자 ID(UUID)입니다. 이것이 키이며, 가진 사람은 누구나 서버를 쓸 수 있습니다. |
| `server.example:443` | 서버 주소와 포트. |
| `encryption=none` | VLESS는 자체 암호화를 하지 않으며, 보안 계층이 트래픽을 보호합니다. |
| `security` | `none`, `tls`, `reality` 중 하나. |
| `sni` | TLS 핸드셰이크에서 제시되는 서버 이름. REALITY에서는 흉내 내는 실제 사이트입니다. |
| `fp` | 클라이언트가 흉내 내는 TLS 핑거프린트. 예: `chrome`. |
| `pbk`, `sid` | REALITY 공개 키와 짧은 ID. 둘 다 서버와 정확히 일치해야 합니다. |
| `type` | 전송 방식: `tcp`, `ws`(WebSocket), `grpc` 등. |
| `flow` | `xtls-rprx-vision`은 Vision 플로우이며, TCP 위의 REALITY 또는 TLS와 함께 씁니다. |
| `path`, `host`, `serviceName` | WebSocket이나 gRPC 전송을 쓰는 경우의 설정. |
| `#my-config` | 목록에 표시되는 이름. |

## VMess

`vmess://` 링크는 접두어 뒤에 작은 JSON 문서를 Base64로 인코딩한 것이 붙은 형태입니다. 디코딩하면 다음과 같습니다.

```
{"v":"2","ps":"my-config","add":"server.example","port":"443","id":"00000000-0000-0000-0000-000000000000","aid":"0","scy":"auto","net":"ws","type":"none","host":"server.example","path":"/path","tls":"tls","sni":"server.example"}
```

`add`와 `port`는 서버, `id`는 UUID, `aid`는 구형 alter ID(`0`이어야 합니다), `net`은
전송 방식, `host`와 `path`는 WebSocket에 속하는 값, `tls`는 TLS를 켜는 값, `ps`는
이름입니다. 직접 디코딩하려면 `vmess://` 뒤의 텍스트를 `base64 -d`에 넣으세요.

## Shadowsocks

```
ss://BASE64(method:password)@server.example:8388#my-config
```

`@` 앞부분은 암호와 비밀번호를 Base64로 인코딩한 것입니다. AEAD 암호를 쓰세요. `rc4-md5`나
`aes-256-cfb` 같은 구형 스트림 암호는 취약합니다. 일부 구형 링크는 대신
`method:password@host:port` 전체를 Base64로 인코딩합니다.

## Trojan

```
trojan://PASSWORD@server.example:443?security=tls&sni=server.example&type=tcp#my-config
```

`@` 앞부분이 비밀번호입니다. Trojan은 트래픽을 보호하려면 TLS가 필요하므로 `security=tls`가 있어야 합니다.

## 구독

구독 URL은 링크 목록을 반환하며, 보통 Base64로 인코딩되어 있고 한 줄에 링크 하나씩입니다. 앱이 이를 가져와
디코딩하고 모든 링크를 추가합니다. 제공업체가 차단된 서버를 교체하면, 구독을 새로 고쳐 새 서버를 받을 수 있습니다.

## 링크를 망가뜨리는 실수

[링크 디코더](https://v2rc.app/ko/decoder/)는 흔한 실수를 점검합니다.

- 올바르지 않은 UUID나 포트
- 공개 키나 서버 이름이 없는 REALITY
- TLS가 없는 VLESS나 Trojan
- 인증서 확인을 끄는 `allowInsecure`가 켜져 있음
- 구형 Shadowsocks 암호
- 0이 아닌 VMess alter ID

`pbk`나 `sid`의 한 글자만 틀려도 REALITY 설정은 아무 메시지 없이 실패합니다. [연결은 성공했는데도 아무것도 로드되지 않을 수 있는 이유](https://v2rc.app/ko/learn/russia/)를 보세요.

## 링크는 자격 증명입니다

링크 안의 UUID나 비밀번호는 서버의 열쇠입니다. 링크를 가진 사람은 누구나 서버를 쓸 수 있으며, 공유 서버에서는 사용자의
할당량이 소모될 수 있습니다. 링크를 공개 채팅에 올리지 마세요. 공개된 링크는 더 빨리 차단되기도 합니다.

이 사이트의 디코더는 페이지 안에서 디코딩하며 어디로도 아무것도 보내지 않습니다. 링크를 디코딩할 때 페이지는 네트워크 요청을
하지 않습니다. 그래도 링크를 붙여 넣는 온라인 도구는 조심하세요. 위에서처럼 `base64 -d`로 언제든 오프라인에서
디코딩할 수 있습니다.

## 출처

- [Xray 설정 예시](https://github.com/XTLS/Xray-examples)
- [REALITY 문서](https://github.com/XTLS/REALITY)
- [Trojan 프로토콜 설명](https://trojan-gfw.github.io/trojan/protocol)
- [Shadowsocks SIP002](https://shadowsocks.org/doc/sip002.html): 링크 형식을 정의한 문서
