Trojan 아웃바운드 필드
이 페이지에서는 Clash 생태계 클라이언트의 proxies 배열의 Trojan 아웃바운드 필드입니다. Trojan은 비밀번호 인증을 사용하고 TLS를 강제로 활성화하므로 클라이언트는 서버 주소, 포트, 비밀번호 및 TLS 이름을 모두 일치시켜야 합니다.
최소 설정은 네 개의 일반 필수 필드와 password 로 구성됩니다. SNI는 비워 두어 server 주소로 폴백할 수 있지만 도메인 인증서, CDN 또는 Reality를 사용할 때는 일반적으로 명시적으로 입력해야 합니다.
name필수- 같은 설정 안에서 중복될 수 없는 노드 이름입니다.
type필수- 고정값
trojan。 server필수- Trojan 서버의 도메인 또는 IP 주소입니다.
port필수- 서버 수신 포트로 443이 일반적이지만 실제 서버 설정을 기준으로 확인해야 합니다.
password필수- Trojan 서버 비밀번호이며 서버에서 할당한 값과 정확히 일치해야 합니다.
TLS, SNI 및 인증서 검증
현재 코어에서 Trojan은 TLS를 강제로 활성화하므로 tls: true 에 의존해 TLS 노드가 되는 것이 아닙니다. 아래 필드는 핸드셰이크 이름, ALPN, 클라이언트 지문 및 인증서 검증 방식을 결정합니다.
sni선택 사항- TLS 서버 이름입니다. 비워 두면
server주소를 사용하며 도메인 인증서나 CDN 환경에서는 일반적으로 정확히 일치시켜야 합니다. alpn선택 사항- TLS 애플리케이션 계층 프로토콜 목록이며 서버와 선택한 전송 계층에 호환되어야 합니다.
client-fingerprint선택 사항- uTLS 클라이언트 지문(예:
chrome또는random이며 인증서 지문이 아닙니다. fingerprint선택 사항- 서버 인증서의 SHA-256 지문이며
client-fingerprint와는 의미가 다릅니다. skip-cert-verify주의- 다음 값으로 설정하면
true은 인증서 검증을 건너뛰므로 장기적인 문제 해결 방식으로 사용해서는 안 됩니다. name-cert-verify선택 사항- 인증서 DNSName 검증 대상만 변경하며 전송되는 SNI는 변경하지 않습니다.
certificate / private-key선택 사항- 두 항목을 함께 입력하면 클라이언트 mTLS가 활성화됩니다. 일반 Trojan 노드에는 대개 필요하지 않습니다.
Reality 및 기타 TLS 전달 방식
Reality, ShadowTLS, Restls 및 JLS는 모두 TLS 연결 계층 확장입니다. 서버에서 해당 기능을 명확히 활성화한 경우에만 추가하고 서로 충돌하는 여러 연결 계층 설정을 동시에 활성화하지 마세요.
reality-opts.public-keyReality- 서버 Reality 개인 키에 해당하는 공개 키입니다.
reality-opts.short-idReality- 서버에서 허용하는 short ID 중 하나를 입력합니다.
reality-opts.support-x25519mlkem768선택 사항- X25519-MLKEM768 키 교환 지원을 선언할 때 사용하며 서버도 이를 지원해야 합니다.
shadow-tls-opts서버 설정 기준- 서버에서 ShadowTLS를 사용할 때만 버전과 비밀번호를 입력하고 계속
sni을 핸드셰이크 이름으로 사용합니다. restls-opts서버 설정 기준- 서버에서 Restls를 사용할 때만 비밀번호와 TLS 버전 힌트를 입력합니다.
jls-opts서버 설정 기준- 서버에서 JLS를 사용할 때만 사용자 이름과 비밀번호를 입력합니다.
Trojan 전송 계층 선택
현재 Trojan은 WebSocket과 gRPC만 선택적 전송 계층으로 표시합니다. 다음을 입력하지 않거나 network 다른 값을 입력하면 TCP로 처리합니다.
| network | 연계 필드 | 적용 설명 |
|---|---|---|
| tcp | 전용 opts 없음 | 기본 전송 계층 |
| ws | ws-opts | WebSocket 경로, Host 및 Early Data |
| grpc | grpc-opts | gRPC 서비스 이름 및 연결 매개변수 |
network선택 사항- 다음만 사용합니다:
ws또는grpc다른 값은 TCP로 처리합니다. ws-optsWebSocket- 경로, Host 및 Early Data 필드는 서버나 리버스 프록시와 일치해야 합니다.
grpc-optsgRPCgrpc-service-name및 연결 매개변수는 서버와 일치해야 합니다.smuxTCP 전용- 범용 sing-mux는 TCP 전송에만 적용됩니다. gRPC 자체의 다중화 개념과 혼용하지 마세요.
UDP 및 trojan-go AEAD 확장
UDP 옵션과 trojan-go의 Shadowsocks AEAD 확장은 서로 관련이 없습니다. 일반 Trojan 노드에는 다음 항목이 필요하지 않으며 ss-opts。
udp선택 사항- 범용 필드이며 기본값은
false입니다. UDP를 프록시해야 할 때는 다음 값으로 설정하고true서버가 이를 지원하는지도 확인하세요. ss-opts.enabled선택 사항- trojan-go 서버에서 Shadowsocks AEAD 확장을 활성화했을 때만 다음 값으로 설정합니다:
true。 ss-opts.method기본값 aes-128-gcm- 사용 가능
aes-128-gcm、aes-256-gcm또는chacha20-ietf-poly1305。 ss-opts.password활성화 시 필수- trojan-go AEAD 확장 비밀번호는 비어 있으면 안 되며 최상위의 다음 항목을 대체하지 않습니다:
password。
기본 설정 및 오류 확인
이 예시는 일반 Trojan over TLS 노드를 보여 줍니다. 서버에서 WebSocket, gRPC, Reality 또는 다음 항목을 활성화하지 않았다면 ss-opts 이 필드들을 임의로 추가하지 마세요.
- 설정에서
network값을h2로 입력한 뒤alpn: [h2]항목과 같은 설정으로 오해합니다. - SNI, 인증서 검증 이름 및 리버스 프록시 도메인이 일치하지 않아 TLS 핸드셰이크에 실패합니다.
- 다음 항목만 입력하고
ss-opts.password최상위 필수 Trojan 항목을 누락합니다:password。 - 서버가 gRPC인데 클라이언트는 계속 기본 TCP로 연결하거나
grpc-service-name이 일치하지 않습니다.
proxies:
- name: trojan-tls
type: trojan
server: edge.example.com
port: 443
password: your-trojan-password
sni: origin.example.com
alpn:
- h2
- http/1.1
client-fingerprint: chrome
udp: true
network: tcp