Trojan 서버는 암호와 TLS 설정, 그리고 선택적으로 WebSocket이나 gRPC처럼 연결을 전달하는 전송으로 정의됩니다. Trojan은 항상 TLS(또는 REALITY) 안에서 실행되므로 지켜보는 쪽에서는 연결이 일반적인 HTTPS 방문처럼 보입니다. Potatso는 서버의 전송과 TLS 설정을 지원할 때 서버에 연결합니다. 제공업체가 알려 준 내용이나 trojan:// 링크에 나온 서버 설정을 아래 표로 확인하세요.
Trojan 서버는 직접 추가하거나, trojan:// 링크로 추가하거나, 다음을 가져와서 추가할 수 있습니다.
- Clash 또는 Mihomo 구독,
- Xray 또는 V2Ray 구성,
- Surge 구성.
Potatso는 아직 sing-box 구성에서 Trojan 서버를 가져오지 않습니다. 대신 서버의 trojan:// 링크를 사용하세요.
전송
| 전송 | 링크 type |
지원 | 테스트 환경 |
|---|---|---|---|
| TLS만(전송 없음) | tcp 또는 없음 |
✅ | Xray, sing-box, trojan-go |
| WebSocket | ws |
✅ 얼리 데이터 유무 무관 | Xray, sing-box, trojan-go |
| gRPC | grpc |
✅ | Xray, sing-box |
| HTTP/2 | http 또는 h2 |
✅ | sing-box |
| HTTP Upgrade | httpupgrade |
✅ | Xray, sing-box |
| XHTTP | xhttp |
❌ | |
| mKCP, QUIC | kcp, quic |
❌ |
모든 전송은 UDP와 함께 작동합니다. Potatso는 지원하지 않는 전송을 쓰는 서버를 가져오지 않습니다.
Xray는 더 이상 HTTP/2를 제공하지 않습니다. 이를 쓰던 Xray 서버는 이제 XHTTP를 쓰며, Potatso는 아직 이를 지원하지 않습니다.
TLS
| 설정 | Clash 키 | 링크 매개변수 | 지원 |
|---|---|---|---|
| 서버 이름(SNI) | sni |
sni, peer |
✅ 없으면 Potatso는 서버 주소를 사용합니다. |
| ALPN | alpn |
alpn |
✅ 없으면 Potatso는 h2, http/1.1을 보내고, WebSocket과 HTTP Upgrade에서는 http/1.1, gRPC와 HTTP/2에서는 h2를 보냅니다. |
| 인증서 확인 건너뛰기 | skip-cert-verify |
allowInsecure, insecure |
✅ |
| 인증서 핀(SHA-256) | fingerprint |
✅ | |
| 브라우저 지문 | client-fingerprint |
fp |
✅ chrome, firefox, safari, ios, android, edge, random. 다른 이름은 기본 핸드셰이크로 연결됩니다. |
| REALITY | reality-opts |
security=reality, pbk, sid |
✅ 전송 없음 또는 gRPC에서 |
| Encrypted Client Hello(ECH) | ech-opts |
ech |
✅ 링크나 구독에 있는 ECH 구성으로 |
| 사용자 지정 CA 인증서 | ❌ | ||
| TLS 클라이언트 인증서 | certificate, private-key |
❌ |
인증서 확인을 끄면 나와 서버 사이에 있는 누구든 트래픽을 읽을 수 있습니다. 서버가 자체 서명 인증서를 쓴다면 대신 서버의 인증서를 핀으로 지정하세요. 인증서의 SHA-256을 인증서 핀으로 설정합니다.
브라우저 지문은 연결의 TLS 핸드셰이크가 해당 브라우저의 핸드셰이크처럼 보이게 합니다. 서버가 지원해야 하는 항목은 바뀌지 않습니다.
REALITY
REALITY 서버는 다른 웹사이트의 TLS 인증서를 빌려 쓰므로 자체 인증서가 필요 없습니다. 서버의 공개 키와 짧은 ID는 제공업체가 알려 준 대로, 서버 이름은 서버가 빌려 쓰는 웹사이트로 설정하세요. REALITY에는 브라우저 지문이 필요합니다. 링크나 설정에 없으면 Potatso는 chrome을 사용합니다.
REALITY는 전송 없음 및 gRPC에서 작동합니다. Potatso는 다른 전송을 쓰는 REALITY 서버를 가져오지 않습니다.
멀티플렉싱
Potatso는 sing-box의 멀티플렉싱(smux, yamux, h2mux)으로 하나의 Trojan 연결에서 여러 연결을 실행할 수 있으며, Clash 구독에서는 smux로 설정합니다. 서버에서 멀티플렉싱을 켜 두어야 합니다. TCP와 UDP 모두 작동합니다.
trojan-go 자체의 멀티플렉싱(trojan-go 서버의 mux)은 다른 프로토콜이며 Potatso는 지원하지 않습니다. trojan-go 서버는 멀티플렉싱 없이도 Potatso의 연결을 받아들입니다.
UDP
Trojan은 TCP와 같은 TLS 연결에서 UDP를 전달합니다. Clash처럼 UDP는 기본으로 꺼져 있습니다. 서버가 UDP를 중계한다면 서버 설정에서 UDP 릴레이를 켜세요. Xray, sing-box, trojan-go 모두 중계합니다. Clash 구독은 udp: true로 켭니다.
기능 지원
| 기능 | 지원 |
|---|---|
Trojan 프로토콜: 암호 해시, CONNECT |
✅ |
Trojan UDP ASSOCIATE |
✅ |
TLS 없는 Trojan(security=none) |
❌ |
| 한 서버의 여러 사용자 | ✅ 각자 자신의 암호 사용 |
| WebSocket, gRPC, HTTP/2, HTTP Upgrade 전송 | ✅ 전송 참고 |
| XHTTP, mKCP, QUIC 전송 | ❌ |
| REALITY | ✅ 전송 없음 또는 gRPC에서 |
| ECH | ✅ |
| sing-box 멀티플렉싱(smux, yamux, h2mux) | ✅ |
| trojan-go 멀티플렉싱 | ❌ |
trojan-go Shadowsocks 암호화(ss-opts, encryption=ss;…) |
❌ |
| Trojan을 감싸는 ShadowTLS, Restls, JLS | ❌ |
trojan:// 및 trojan-go:// 링크 |
✅ |
지원하는 모든 기능은 실제 Trojan 서버 중 하나 이상으로 테스트했습니다. Xray, sing-box 또는 trojan-go입니다.
암호가 틀리면 Trojan 서버는 대신 일반 웹사이트처럼 응답합니다(폴백). 그러면 Potatso는 연결할 수 없으며 암호 오류를 표시하지 않습니다. Trojan 서버에 전혀 연결되지 않을 때는 암호를 먼저 확인하세요.
Potatso는 trojan-go의 Shadowsocks 암호화나 Trojan을 감싸는 ShadowTLS, Restls, JLS를 쓰는 서버를 가져오지 않습니다. 이 기능 없이 연결하면 서버가 응답하지 않기 때문입니다.
trojan-go의 일부 기능은 자체 클라이언트 프로그램의 설정이며, Potatso는 같은 역할을 자체 방식으로 처리합니다.
- 라우팅: 프로필의 규칙을 사용하세요.
- 로컬 SOCKS5 및 HTTP 서버, 포워딩: Potatso가 기기의 트래픽을 직접 가져옵니다.
trojan:// 링크
trojan:// 링크는 서버 전체를 한 줄에 담습니다.
trojan://password@host:port?parameters#name| 부분 | 설명 |
|---|---|
password |
퍼센트 인코딩한 암호. :를 포함해 @ 앞의 모든 내용이 암호입니다. |
host |
서버 주소. IPv6 주소는 [2001:db8::1]처럼 대괄호로 묶습니다. |
port |
서버 포트. 없으면 Potatso는 443을 사용합니다. |
name |
선택 사항. Potatso에서 표시할 서버 이름. |
매개변수는 Xray와 v2rayN이 사용하는 형식을 따릅니다.
| 매개변수 | 설명 |
|---|---|
security |
tls(기본값) 또는 reality. |
type |
전송: tcp, ws, grpc, http(HTTP/2), httpupgrade. |
sni, peer |
TLS 서버 이름. |
alpn |
쉼표로 구분하고 퍼센트 인코딩한 ALPN 목록. |
fp |
브라우저 지문. |
allowInsecure |
1이면 인증서 확인을 끕니다. |
host |
WebSocket, HTTP/2, HTTP Upgrade의 HTTP Host. |
path |
WebSocket, HTTP/2, HTTP Upgrade의 경로. /ws?ed=2048 같은 WebSocket 경로는 얼리 데이터를 켭니다. |
serviceName |
gRPC 서비스 이름. |
pbk, sid |
REALITY 공개 키와 짧은 ID. |
ech |
Base64로 인코딩한 뒤 퍼센트 인코딩한 ECH 구성. |
Potatso는 type=original(전송 없음) 또는 type=ws인 trojan-go:// 링크도 가져옵니다. trojan-go의 Shadowsocks 암호화가 필요한 encryption 매개변수가 있는 링크는 가져오지 않습니다.
Potatso가 Trojan 서버를 공유할 때는 같은 매개변수를 담은 trojan:// 링크를 제공합니다.
예시
각 예시는 가져올 링크를 보여 줍니다. 암호는 secret입니다.
기본 서버:
trojan://secret@trojan.example.com:443?sni=trojan.example.com#Basiccdn.example.com을 거치는 WebSocket:
trojan://secret@trojan.example.com:443?security=tls&type=ws&host=cdn.example.com&path=%2Fws#WebSocket서비스 이름이 TrojanGun인 gRPC:
trojan://secret@trojan.example.com:443?security=tls&type=grpc&serviceName=TrojanGun#gRPCHTTP/2:
trojan://secret@trojan.example.com:443?security=tls&type=http&host=cdn.example.com&path=%2Fh2#HTTP2HTTP Upgrade:
trojan://secret@trojan.example.com:443?security=tls&type=httpupgrade&host=cdn.example.com&path=%2Fup#Upgradewww.example.com을 빌려 쓰는 REALITY:
trojan://secret@trojan.example.com:443?security=reality&sni=www.example.com&pbk=Z84J2IelR9ch3k8VtlVhhs5ycBUlXA7wHBWcBrjqnAw&sid=0123abcd&fp=chrome#REALITY