---
title: "ShadowsocksR"
description: "Potatso가 지원하는 ShadowsocksR 암호화 방식, 프로토콜, 난독화 방식입니다."
---

> 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.

# ShadowsocksR

ShadowsocksR(SSR) 서버는 **암호화 방식**, **프로토콜**, **Obfs**(난독화) 방식의 세 가지 설정으로 정의됩니다. Potatso는 세 가지를 모두 지원할 때만 서버에 연결합니다. 제공업체가 알려 준 내용이나 `ssr://` 링크에 나온 서버 설정을 아래 표로 확인하세요.

SSR 서버는 직접 추가하거나, [`ssr://` 링크](#links)로 추가하거나, Clash 또는 Mihomo 구독에서 추가할 수 있습니다. Potatso는 `_compatible` 형식을 포함해 제공업체가 지정한 프로토콜과 Obfs를 그대로 유지합니다.

## 암호화 방식 {#ciphers}

| 암호화 방식 | 지원 |
| --- | --- |
| `none` | ✅ |
| `aes-128-ctr`, `aes-192-ctr`, `aes-256-ctr` | ✅ |
| `aes-128-cfb`, `aes-192-cfb`, `aes-256-cfb` | ✅ |
| `camellia-128-cfb`, `camellia-192-cfb`, `camellia-256-cfb` | ✅ |
| `chacha20`, `chacha20-ietf` | ✅ |
| `salsa20` | ✅ |
| `bf-cfb` | ✅ |
| `rc4-md5` | ✅ |
| `cast5-cfb`, `des-cfb`, `idea-cfb`, `rc2-cfb`, `seed-cfb` | ✅ |
| `rc4-md5-6`, `table` | ✅ |
| `xchacha20`, `xsalsa20` | ❌ |

`aes-256-gcm` 같은 AEAD 암호화 방식은 ShadowsocksR이 아니라 Shadowsocks의 암호화 방식입니다. 제공업체가 SSR 서버에 이런 암호화 방식을 안내했다면 해당 서버가 실제로 Shadowsocks 서버인지 확인하세요.

## 프로토콜 {#protocols}

| 프로토콜 | 지원 | 다중 사용자 |
| --- | --- | --- |
| `origin` | ✅ | — |
| `verify_deflate` | ✅ | — |
| `auth_sha1`, `auth_sha1_v2` | 지원 중단(실제 서버로 테스트하지 않음) | — |
| `auth_sha1_v4` | ✅ | — |
| `auth_sha1_v4_compatible` | ✅ | — |
| `auth_aes128_md5` | ✅ | ✅ |
| `auth_aes128_sha1` | ✅ | ✅ |
| `auth_chain_a` | ✅ | ✅ |
| `auth_chain_b` | ✅ | ✅ |
| `verify_simple`, `verify_sha1`, `auth_simple` | 지원 중단(`origin`으로 가져옴) | — |

**다중 사용자** 서버는 한 포트를 여러 사용자가 공유합니다. 이런 서버에서는 프로토콜 매개변수(`protocol-param`, `ssr://` 링크에서는 `protoparam`)를 제공업체가 알려 준 사용자 ID와 키를 사용해 `uid:key`로 설정하세요.

현재의 ShadowsocksR 서버는 더 이상 `auth_sha1`과 `auth_sha1_v2`를 제공하지 않습니다. Potatso는 여전히 이들로 연결할 수 있지만 실제 서버로 테스트하지는 않았으므로, 제공업체가 다른 프로토콜을 제공한다면 그쪽을 사용하세요.

이전 버전의 Potatso는 `verify_simple`, `verify_sha1`, `auth_simple`을 목록에 표시했지만 항상 `origin`으로 연결했습니다. Potatso는 지금도 이들을 `origin`으로 가져오며, 가져올 때 경고를 표시합니다.

## Obfs {#obfs}

| Obfs | 지원 |
| --- | --- |
| `plain` | ✅ |
| `http_simple`, `http_simple_compatible` | ✅ |
| `http_post`, `http_post_compatible` | ✅ |
| `tls1.2_ticket_auth`, `tls1.2_ticket_auth_compatible` | ✅ |
| `tls1.2_ticket_fastauth`, `tls1.2_ticket_fastauth_compatible` | ✅ |
| `random_head`, `random_head_compatible` | ✅ 지원 중단 |

`_compatible` 이름은 서버가 난독화를 사용하지 않는 클라이언트도 받아들인다는 뜻입니다. Potatso는 이름에 지정된 Obfs 방식을 사용하므로 제공업체가 알려 준 이름을 그대로 둘 수 있습니다.

HTTP 방식에서는 Obfs 매개변수(`obfs-param`, `ssr://` 링크에서는 `obfsparam`)가 `Host` 헤더를 설정합니다. 호스트 하나, 쉼표로 구분한 호스트 목록, 사용자 지정 헤더 블록이 될 수 있습니다. 비어 있으면 Potatso가 서버 주소를 사용합니다. TLS 방식에서는 TLS 핸드셰이크에서 보내는 서버 이름을 설정합니다.

## UDP {#udp}

UDP는 지원하는 모든 프로토콜에서 작동하며 SSR 서버에서 기본으로 켜져 있습니다. 서버가 UDP를 중계하지 않으면 서버 설정에서 끄세요.

## `ssr://` 링크 {#links}

`ssr://` 링크는 서버 전체를 한 줄에 담습니다. `ssr://` 뒤의 모든 내용은 Base64로 인코딩됩니다.

```text
ssr://base64(host:port:protocol:cipher:obfs:base64(password)/?obfsparam=…&protoparam=…&remarks=…)
```

`/?` 앞부분은 콜론으로 구분한 여섯 개의 필드입니다.

| 필드 | 설명 |
| --- | --- |
| `host` | 서버 주소. IPv6 주소는 `[2001:db8::1]`처럼 대괄호로 묶습니다. |
| `port` | 서버 포트. |
| `protocol` | 위의 [프로토콜](#protocols) 중 하나. 비어 있으면 Potatso는 `origin`을 사용합니다. |
| `cipher` | 위의 [암호화 방식](#ciphers) 중 하나. 필수. |
| `obfs` | 위의 [Obfs 방식](#obfs) 중 하나. 비어 있으면 Potatso는 `plain`을 사용합니다. |
| `password` | Base64로 인코딩한 암호. |

`/?` 뒷부분은 선택 사항입니다. 각 값은 Base64로 인코딩합니다.

| 매개변수 | 설명 |
| --- | --- |
| `obfsparam` | Obfs 매개변수. 예: `http_simple`의 `Host`. |
| `protoparam` | 프로토콜 매개변수. 예: 다중 사용자 서버의 `uid:key`. |
| `remarks` | Potatso에서 표시할 서버 이름. |

Potatso는 `group`, `udpport`, `uot` 같은 다른 매개변수와 링크 끝의 `#name`을 무시합니다. UDP는 링크에 포함되지 않습니다. 기본으로 켜져 있으며 가져온 후에 끌 수 있습니다.

Potatso는 표준 및 URL-safe Base64를 `=` 패딩 유무와 관계없이 받아들입니다. 이름은 대소문자를 구분하지 않으므로 `AUTH_CHAIN_A`도 `auth_chain_a`와 똑같이 작동합니다. Potatso가 서버를 공유할 때는 패딩 없는 URL-safe Base64로 씁니다.

### 예시 {#link-examples}

각 예시는 디코딩한 텍스트를 먼저 보여 주고 이어서 가져올 링크를 보여 줍니다. 모든 예시의 암호는 `secret`입니다.

프로토콜 플러그인도 난독화도 없는 기본 서버:

```text
ssr.example.com:8388:origin:aes-256-cfb:plain:c2VjcmV0/?remarks=QmFzaWM
```

```text
ssr://c3NyLmV4YW1wbGUuY29tOjgzODg6b3JpZ2luOmFlcy0yNTYtY2ZiOnBsYWluOmMyVmpjbVYwLz9yZW1hcmtzPVFtRnphV00
```

서버 이름으로 `cdn.example.com`을 쓰는 TLS 난독화:

```text
ssr.example.com:443:auth_aes128_md5:chacha20-ietf:tls1.2_ticket_auth:c2VjcmV0/?obfsparam=Y2RuLmV4YW1wbGUuY29t&remarks=VExTIG9iZnM
```

```text
ssr://c3NyLmV4YW1wbGUuY29tOjQ0MzphdXRoX2FlczEyOF9tZDU6Y2hhY2hhMjAtaWV0Zjp0bHMxLjJfdGlja2V0X2F1dGg6YzJWamNtVjAvP29iZnNwYXJhbT1ZMlJ1TG1WNFlXMXdiR1V1WTI5dCZyZW1hcmtzPVZFeFRJRzlpWm5N
```

다중 사용자 서버: 사용자 `2173`, 키 `userkey`, `none` 암호화 방식, HTTP 난독화:

```text
ssr.example.com:8080:auth_chain_a:none:http_simple:c2VjcmV0/?obfsparam=Y2RuLmV4YW1wbGUuY29t&protoparam=MjE3Mzp1c2Vya2V5&remarks=TXVsdGktdXNlcg
```

```text
ssr://c3NyLmV4YW1wbGUuY29tOjgwODA6YXV0aF9jaGFpbl9hOm5vbmU6aHR0cF9zaW1wbGU6YzJWamNtVjAvP29iZnNwYXJhbT1ZMlJ1TG1WNFlXMXdiR1V1WTI5dCZwcm90b3BhcmFtPU1qRTNNenAxYzJWeWEyVjUmcmVtYXJrcz1UWFZzZEdrdGRYTmxjZw
```

IPv6 주소를 쓰는 서버:

```text
[2001:db8::1]:8388:auth_sha1_v4:rc4-md5:http_post:c2VjcmV0/?remarks=SVB2Ng
```

```text
ssr://WzIwMDE6ZGI4OjoxXTo4Mzg4OmF1dGhfc2hhMV92NDpyYzQtbWQ1Omh0dHBfcG9zdDpjMlZqY21WMC8_cmVtYXJrcz1TVkIyTmc
```

Source: https://potatso.com/docs/ko/protocols/shadowsocksr/index.mdx
