AnyTLS 서버는 암호와 TLS 설정으로 정의됩니다. AnyTLS는 TLS 안에서 실행되며 트래픽에 패딩을 넣으므로, 연결이 일반적인 HTTPS 방문처럼 보이고 TLS 안의 프록시에서 흔히 나타나는 흔적이 드러나지 않습니다. Potatso는 서버의 TLS 설정을 지원할 때 서버에 연결합니다. 제공업체가 알려 준 내용이나 anytls:// 링크에 나온 서버 설정을 아래 표로 확인하세요.
AnyTLS 서버는 직접 추가하거나, anytls:// 링크로 추가하거나, 다음을 가져와서 추가할 수 있습니다.
- Clash 또는 Mihomo 구독,
- Surge 구성.
Potatso는 아직 sing-box 구성에서 AnyTLS 서버를 가져오지 않습니다. 대신 서버의 anytls:// 링크를 사용하세요.
TLS
| 설정 | Clash 키 | 링크 매개변수 | 지원 |
|---|---|---|---|
| 서버 이름(SNI) | sni |
sni |
✅ 없으면 Potatso는 서버 주소를 사용합니다. |
| ALPN | alpn |
alpn |
✅ 없으면 Potatso는 Clash처럼 아무것도 보내지 않습니다. |
| 인증서 확인 건너뛰기 | skip-cert-verify |
insecure |
✅ |
| 인증서 핀(SHA-256) | fingerprint |
hpkp |
✅ |
| 브라우저 지문 | client-fingerprint |
fp |
✅ chrome, firefox, safari, ios, android, edge, random. 다른 이름은 기본 핸드셰이크로 연결됩니다. |
| REALITY | reality-opts |
✅ | |
| Encrypted Client Hello(ECH) | ech-opts |
✅ 구독에 있는 ECH 구성 또는 DNS에서 조회한 구성으로 | |
| 사용자 지정 CA 인증서 | ❌ | ||
| TLS 클라이언트 인증서 | certificate, private-key |
❌ |
인증서 확인을 끄면 나와 서버 사이에 있는 누구든 트래픽을 읽을 수 있습니다. 서버가 자체 서명 인증서를 쓴다면 대신 서버의 인증서를 핀으로 지정하세요. 인증서의 SHA-256을 인증서 핀으로 설정합니다.
브라우저 지문은 연결의 TLS 핸드셰이크가 해당 브라우저의 핸드셰이크처럼 보이게 합니다. 서버가 지원해야 하는 항목은 바뀌지 않습니다.
Potatso는 TLS 클라이언트 인증서가 필요한 서버를 가져오지 않습니다. 서버가 연결을 거부할 것이기 때문입니다.
REALITY
REALITY 서버는 다른 웹사이트의 TLS 인증서를 빌려 쓰므로 자체 인증서가 필요 없습니다. sing-box 서버는 REALITY와 함께 AnyTLS를 제공합니다. 서버의 공개 키와 짧은 ID는 제공업체가 알려 준 대로, 서버 이름은 서버가 빌려 쓰는 웹사이트로 설정하세요. REALITY에는 chrome 같은 브라우저 지문이 필요합니다.
연결
AnyTLS는 TLS 연결을 재사용합니다. 웹사이트에 대한 연결이 끝나면 다음 연결은 새로 열지 않고 같은 TLS 연결을 사용합니다. 각 TLS 연결은 한 번에 연결 하나를 전달하므로 동시에 여러 연결을 쓰면 TLS 연결이 여러 개 열리고, 이후에 재사용됩니다.
| 설정 | Clash 키 | 지원 |
|---|---|---|
| 유휴 연결을 확인하는 주기 | idle-session-check-interval |
✅ 초 단위, 기본값 30 |
| 유휴 연결을 열어 두는 시간 | idle-session-timeout |
✅ 초 단위, 기본값 60 |
| 열어 두는 유휴 연결 수 | min-idle-session |
✅ 기본값 1 |
5초 이하의 값은 Clash처럼 30으로 처리됩니다. 이 설정은 Clash 구독에서 가져옵니다. 직접 또는 링크로 추가한 서버에는 Potatso가 기본값을 사용합니다.
Surge 구성의 reuse=false는 적용되지 않습니다. Potatso는 AnyTLS 사양처럼 항상 연결을 재사용합니다. Potatso는 서버를 가져오고 경고를 표시합니다.
패딩
AnyTLS는 프록시임을 드러내는 크기를 숨기기 위해 모든 연결의 시작 부분에 패딩을 넣습니다. 서버가 자체 패딩 방식을 보낼 수 있습니다. Potatso는 AnyTLS의 정의대로 다음 TLS 연결부터 이를 사용합니다. 기기에서 설정할 것은 없습니다.
UDP
AnyTLS는 TLS 연결 안에서 UDP를 전달합니다(UDP over TCP). Clash처럼 UDP는 기본으로 꺼져 있습니다. 서버가 UDP를 중계한다면 서버 설정에서 UDP 릴레이를 켜세요. Clash 구독은 udp: true로 켜며, Surge 구성은 항상 켭니다.
기능 지원
| 기능 | 지원 |
|---|---|
| AnyTLS 프로토콜 v2: 암호, 패딩, 연결 재사용 | ✅ |
| 서버가 보내는 패딩 방식 | ✅ |
| UDP over TCP | ✅ |
| 유휴 연결 설정 | ✅ |
| REALITY, ECH | ✅ |
| 인증서 핀, 브라우저 지문 | ✅ |
| 사용자 지정 CA, TLS 클라이언트 인증서 | ❌ |
anytls:// 링크 |
✅ |
지원하는 모든 기능은 실제 AnyTLS 서버 중 하나 이상으로 테스트했습니다. anytls-go, sing-box 또는 mihomo입니다.
암호가 틀리면 서버가 연결을 닫습니다. AnyTLS 서버에 전혀 연결되지 않을 때는 암호를 먼저 확인하세요.
anytls:// 링크
anytls:// 링크는 서버 전체를 한 줄에 담습니다.
anytls://password@host:port/?parameters#name| 부분 | 설명 |
|---|---|
password |
퍼센트 인코딩한 암호. |
host |
서버 주소. IPv6 주소는 [2001:db8::1]처럼 대괄호로 묶습니다. |
port |
서버 포트. 없으면 Potatso는 443을 사용합니다. |
name |
선택 사항. Potatso에서 표시할 서버 이름. |
매개변수는 anytls-go 형식을 따르며, 일부 앱이 추가하는 몇 가지가 더 있습니다.
| 매개변수 | 설명 |
|---|---|
sni |
TLS 서버 이름. |
insecure |
1이면 인증서 확인을 끕니다. |
alpn |
쉼표로 구분하고 퍼센트 인코딩한 ALPN 목록. |
fp |
브라우저 지문. |
hpkp |
서버 인증서의 SHA-256. |
Potatso가 AnyTLS 서버를 공유할 때는 같은 매개변수를 담은 anytls:// 링크를 제공합니다.
예시
각 예시는 가져올 링크를 보여 줍니다. 암호는 secret입니다.
기본 서버:
anytls://secret@anytls.example.com:443/?sni=anytls.example.com#Basic자체 서명 인증서, 확인 없음:
anytls://secret@203.0.113.7/?insecure=1#Self-signedChrome 지문, ALPN 목록, 핀으로 지정한 인증서:
anytls://secret@anytls.example.com:443/?sni=anytls.example.com&alpn=h2%2Chttp%2F1.1&fp=chrome&hpkp=abababababababababababababababababababababababababababababababab#Shaped