---
title: "SOCKS5 및 SOCKS5 over TLS"
description: "Potatso가 지원하는 SOCKS5 및 SOCKS5 over TLS 옵션, 링크, 기능입니다."
---

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

# SOCKS5 및 SOCKS5 over TLS

SOCKS5 서버는 사용자 이름과 암호가 있든 없든 대신 연결을 열고 UDP를 중계합니다([RFC 1928](https://www.rfc-editor.org/rfc/rfc1928)). **SOCKS5 over TLS**는 같은 서버에 TLS로 접속하는 것이므로 서버까지의 연결도 암호화됩니다.

Potatso는 서버에 사이트의 주소가 아니라 방문하는 사이트의 이름을 보내며, 서버가 그 이름을 조회합니다. 다른 앱에서는 이를 `socks5h` 또는 원격 DNS라고 부릅니다.

SOCKS5 서버는 직접 추가하거나, [`socks5://` 링크](#links)로 추가하거나, 다음을 가져와서 추가할 수 있습니다.

- Clash 또는 Mihomo 구독(`type: socks5`),
- Surge 구성(`socks5`와 `socks5-tls`),
- Xray 또는 V2Ray 구성(TLS 유무와 관계없는 `socks` 아웃바운드).

SOCKS5 over TLS 서버를 직접 추가하려면 **SOCKS5**를 선택하고 **TLS**를 켭니다.

## 설정 {#settings}

| 설정 | 설명 |
| --- | --- |
| 서버, 포트 | 서버의 주소와 포트. IPv6 주소도 사용할 수 있습니다. |
| 인증 | 없음, 또는 사용자 이름과 암호. |
| 사용자 이름, 암호 | 각각 최대 255바이트. |
| UDP 릴레이 | 기본값은 켜짐입니다. [UDP](#udp)를 참고하세요. |
| TLS | SOCKS5 over TLS이면 켭니다. |
| 인증서 확인 건너뛰기 | SOCKS5 over TLS 전용. 모든 인증서를 허용합니다. 테스트할 때만 사용하세요. |
| 인증서 핀 | SOCKS5 over TLS 전용, 선택 사항. 서버 인증서의 SHA-256 지문으로, 16진수 64자리입니다. 핀을 지정하면 Potatso는 자체 서명 인증서를 포함해 핀으로 지정한 인증서만 허용하고 그 외에는 허용하지 않습니다. |

서버가 사용자 이름과 암호를 요구하는데 설정하지 않았다면 Potatso는 연결하지 않습니다. Potatso는 GSSAPI(Kerberos) 인증을 지원하지 않습니다.

`username`이 비어 있는 Clash 또는 Mihomo 서버는 Clash와 마찬가지로 인증 없이 가져옵니다.

### 인증서 {#certificates}

SOCKS5 over TLS에서는 TLS 핸드셰이크의 서버 이름이 항상 서버 주소이며, 서버의 인증서가 그 주소에 유효해야 합니다. 그렇지 않으면 [인증서 핀](#settings)을 지정하거나 **인증서 확인 건너뛰기**를 켜세요. 다른 서버 이름은 지정할 수 없습니다. Potatso는 서버 이름이 지정된 링크, Surge 서버, Xray 서버를 가져오지 않습니다. Clash와 Mihomo에는 SOCKS5의 서버 이름이 없으므로 Potatso도 이들처럼 그곳의 `sni`를 무시합니다.

Potatso는 다음을 지원하지 않습니다.

- 사용자 지정 CA 인증서: 대신 서버의 인증서를 핀으로 지정하세요.
- TLS 클라이언트 인증서(Clash의 `certificate`와 `private-key`) 또는 인증서를 대조할 다른 이름(`name-cert-verify`): 이것이 필요한 서버는 가져오지 않습니다.
- ALPN 목록: Potatso는 이것 없이 서버를 가져옵니다.

## UDP {#udp}

UDP는 QUIC, 음성 및 영상 통화, 많은 게임이 사용합니다. **UDP 릴레이**를 켜면 Potatso가 UDP를 서버를 통해(UDP ASSOCIATE) IPv4 및 IPv6 주소로 보냅니다. 릴레이 주소를 `0.0.0.0`으로 알리는 NAT 뒤의 서버에서도 작동합니다. Potatso는 설정한 주소로 UDP를 보냅니다.

서버가 UDP를 중계하지 않으면 UDP 릴레이를 끄세요. 그러면 다음과 같이 동작합니다.

- 규칙을 쓰는 경우 Potatso는 UDP를 이 서버로 보내는 규칙을 건너뛰고, 그다음에 매칭되는 규칙이 결정합니다. 다른 규칙과 맞지 않는 UDP는 직접 전송됩니다.
- 전역 모드에서는 모든 트래픽이 서버를 거쳐야 하므로 UDP가 작동하지 않습니다.

UDP에 관해 알아 둘 점은 다음과 같습니다.

- UDP는 서버의 별도 UDP 포트로 중계되므로 서버의 방화벽이 UDP를 통과시켜야 합니다.
- SOCKS5 over TLS에서는 서버까지의 연결만 암호화됩니다. SOCKS5는 UDP를 그 바깥으로 보내므로 UDP 트래픽은 암호화되지 않은 채 서버에 도달합니다.
- UDP의 경우 Potatso가 사이트의 주소를 직접 조회해 그 주소를 서버에 보냅니다.
- Clash, Mihomo, Surge에서 가져올 때 서버가 `udp: false`(Surge에서는 `udp-relay=false`)로 설정하지 않았다면 UDP 릴레이가 켜집니다. Clash는 `udp`가 없으면 UDP를 끈 채로 두므로 서버가 UDP를 중계하는지 확인하세요.

## 기능 지원 {#features}

| 기능 | 지원 |
| --- | --- |
| IPv4, IPv6, 도메인 대상으로의 `CONNECT`([RFC 1928](https://www.rfc-editor.org/rfc/rfc1928)) | ✅ |
| 원격 DNS: 서버가 도메인 이름을 조회(`socks5h`) | ✅ TCP에서 |
| 인증 없음 | ✅ |
| 사용자 이름과 암호([RFC 1929](https://www.rfc-editor.org/rfc/rfc1929)) | ✅ |
| GSSAPI([RFC 1961](https://www.rfc-editor.org/rfc/rfc1961)) | ❌ |
| IPv4 및 IPv6 대상으로의 `UDP ASSOCIATE` | ✅ |
| NAT 뒤 서버에서의 UDP(`0.0.0.0` 릴레이 주소) | ✅ |
| UDP 단편화 | ❌ 단편화된 데이터그램은 폐기됩니다. RFC 1928에서 허용하는 동작입니다 |
| `BIND`(액티브 모드 FTP 같은 수신 연결) | ❌ |
| SOCKS5 over TLS | ✅ 인증서 핀 및 인증서 확인 건너뛰기 지원 |
| 서버 주소 이외의 TLS 서버 이름, ALPN, 사용자 지정 CA, 클라이언트 인증서 | ❌ |
| TLS로 암호화된 UDP | ❌ SOCKS5는 UDP를 TLS 바깥으로 보냅니다 |
| IPv6 서버 주소 | ✅ |
| SOCKS4 및 SOCKS4a | ❌ |

지원하는 모든 기능은 실제 SOCKS5 서버인 [Xray](https://xtls.github.io/), [sing-box](https://sing-box.sagernet.org/), [Mihomo](https://wiki.metacubex.one/), [3proxy](https://3proxy.org/), [microsocks](https://github.com/rofl0r/microsocks)로 테스트했습니다. sing-box는 `socks` 인바운드가 아니라 `mixed` 인바운드에서 SOCKS5 over TLS를 제공합니다.

## 링크 {#links}

SOCKS5 링크는 서버 전체를 한 줄에 담습니다.

```text
socks5://user:password@host:port#name
socks5+tls://user:password@host:port?insecure=1#name
```

| 부분 | 설명 |
| --- | --- |
| 스킴 | SOCKS5는 `socks5://`, `socks://`, `socks5h://`, SOCKS5 over TLS는 `socks5+tls://` 또는 `socks+tls://`. Potatso는 항상 도메인 이름을 서버에 보내므로 `socks5h://`도 `socks5://`와 똑같이 작동합니다. |
| `user:password` | 선택 사항. 암호의 `:`, `@` 및 기타 특수 문자는 퍼센트 인코딩합니다. 예를 들어 `p:ss`는 `p%3Ass`로 씁니다. 사용자 이름에는 `:`를 쓸 수 없습니다. |
| `host` | 서버 주소. IPv6 주소는 `[2001:db8::1]`처럼 대괄호로 묶습니다. |
| `port` | 서버 포트. |
| `insecure` | SOCKS5 over TLS 전용, 선택 사항. `1`이면 인증서 확인 건너뛰기를 켭니다. Potatso는 `allowInsecure`와 `skip-cert-verify`도 읽습니다. |
| `name` | 선택 사항. Potatso에서 표시할 서버 이름. |

링크에는 인증서 핀을 담을 수 없습니다. 서버 주소와 다른 `sni`가 있는 링크는 가져오지 않습니다.

Potatso는 다른 두 가지 형식도 가져옵니다.

```text
socks://base64(user:password)@host:port#name
socks5://base64(user:password@host:port)#name
```

첫 번째는 v2rayN이 SOCKS 서버를 공유하는 방식입니다. 두 번째는 `://`와 `#` 사이의 모든 내용을 Base64로 인코딩하던 이전 형식입니다. Potatso가 암호가 있는 SOCKS5 서버를 공유할 때는 표준 링크와 v2rayN 형식을 제공합니다.

### 예시 {#link-examples}

암호가 없는 서버:

```text
socks5://proxy.example.com:1080#Open
```

사용자 이름이 `alice`이고 암호가 `s3cret`인 서버:

```text
socks5://alice:s3cret@proxy.example.com:1080#Auth
```

퍼센트 인코딩한 암호 `p:ss wörd`:

```text
socks5://alice:p%3Ass%20w%C3%B6rd@proxy.example.com:1080#Encoded
```

같은 서버를 `socks5h://` 링크로 쓴 경우:

```text
socks5h://alice:s3cret@proxy.example.com:1080#Remote-DNS
```

`alice:s3cret`을 Base64로 인코딩한 v2rayN 형식:

```text
socks://YWxpY2U6czNjcmV0@proxy.example.com:1080#v2rayN
```

이전 형식:

```text
socks5://YWxpY2U6czNjcmV0QHByb3h5LmV4YW1wbGUuY29tOjEwODA#Legacy
```

IPv6 주소를 쓰는 서버:

```text
socks5://[2001:db8::1]:1080#IPv6
```

SOCKS5 over TLS 서버:

```text
socks5+tls://alice:s3cret@proxy.example.com:443#TLS
```

자체 서명 인증서를 쓰는 SOCKS5 over TLS 서버:

```text
socks+tls://proxy.example.com:443?insecure=1#Self-signed
```

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