프로토콜 범위 및 최소 설정
AnyTLS는 현재 Mihomo 코어에서 제공하는 TLS over TCP 아웃바운드 유형입니다. QUIC를 사용하지 않으며 포트 호핑 필드도 없습니다. 최소 노드는 일반적인 이름, 유형, 서버, 포트 및 서버 비밀번호로 구성됩니다.
password 은 서버 사용자 설정과 일치해야 합니다.udp 가 true이면 클라이언트가 UDP over TCP로 UDP 요청을 전달합니다. 이는 기반 연결이 UDP로 바뀐다는 뜻이 아닙니다.
name필수- 정책 그룹과 규칙에서 이 아웃바운드를 식별하는 노드 이름입니다.
type: anytls필수- Mihomo의 AnyTLS 아웃바운드 구현을 선택합니다. 원본 Clash는 이 유형을 인식하지 못합니다.
server / port필수- 서버 호스트와 수신 포트를 입력합니다. 포트는 하나의 정수여야 합니다.
password인증- 서버가 해당 사용자에게 설정한 비밀번호를 입력합니다. 빈 값은 서버에서 명시적으로 허용할 때만 작동할 수 있습니다.
udp선택 사항- UDP 요청 지원을 활성화하며 실제로는 AnyTLS 연결 안의 UDP over TCP로 전달합니다.
TLS, SNI 및 인증서 검증
AnyTLS는 항상 TLS 연결을 설정합니다. 다음을 입력하지 않으면 sni 클라이언트가 server 을 TLS Server Name으로 사용합니다. 만약 server 이 IP라면 일반적으로 서버 인증서에 맞는 도메인 형식 SNI를 입력해야 합니다.
sniTLS- 핸드셰이크의 서버 이름을 설정하며 생략하면 server로 폴백합니다.
alpnTLS- 서버에서 지원하는 ALPN 목록(예: h2 및 http/1.1)을 입력합니다. 클라이언트 선호도만으로 임의로 바꾸면 안 됩니다.
client-fingerprintTLS- chrome 같은 클라이언트 TLS 지문을 선택합니다. 인증서 지문 검증과는 다른 필드입니다.
skip-cert-verify위험- true로 설정하면 일반 인증서 검증을 건너뜁니다. 위험을 명확히 이해한 경우에만 사용해야 합니다.
name-cert-verifyTLS- 인증서 이름 검증 대상을 별도로 지정하며 연결 주소를 바꾸는 것과 같지 않습니다.
fingerprintTLS- 인증서 고정을 위해 서버 인증서 지문을 지정합니다.
certificate / private-keymTLS- 서버에서 클라이언트 인증서를 요구할 때 두 항목을 함께 입력합니다.
ech-opts선택 사항- ECH를 사용해 ClientHello의 실제 SNI를 숨깁니다. 구체적인 필드는 현재 코어의 범용 TLS 설정을 따릅니다.
Reality 및 보안 래핑의 적용 범위
AnyTLS는 ECH, ShadowTLS, ResTLS 또는 JLS와 함께 TLS 노출 특성을 처리할 수 있지만 이러한 기능은 Reality의 다른 이름이 아닙니다.
shadow-tls-opts래핑- ShadowTLS의 version과 password를 입력하며 서버와 일치해야 합니다.
restls-opts래핑- ResTLS의 password를 입력하고 서버에서 제공한 경우 version-hint도 설정할 수 있습니다.
jls-opts래핑- JLS의 username과 password를 입력합니다.
- 상호 배타 규칙중요
- 현재 구현에서는 ShadowTLS, ResTLS 및 JLS 중 하나만 선택할 수 있습니다. 여러 항목을 함께 입력하면 노드 생성을 거부합니다.
유휴 세션 매개변수
AnyTLS는 하나 이상의 TLS 연결에서 스트림을 재사용합니다. 세 가지 세션 매개변수는 초 단위로 검사와 회수를 제어하며 QUIC 창이 아니고 TLS 인증서 검증에도 영향을 주지 않습니다.
idle-session-check-interval기본값 30초- 두 유휴 세션 검사 사이의 간격입니다.
idle-session-timeout기본값 30초- 검사 시 이 값보다 오래 유휴 상태인 세션을 닫습니다.
min-idle-session기본값 0- 검사 시 최소한 유지할 유휴 세션 수입니다. 값을 높이면 더 많은 연결이 유지됩니다.
최소 작동 예시
먼저 서버에서 실제로 제공한 비밀번호, SNI 및 ALPN으로 연결한 다음 필요에 따라 ECH 또는 하나의 보안 래핑을 추가하세요. 세션 필드에는 기본값이 있으므로 일반적으로 다시 입력할 필요가 없습니다.
proxies:
- name: anytls-node
type: anytls
server: server.example.com
port: 443
password: replace-with-server-password
udp: true
sni: server.example.com
client-fingerprint: chrome
alpn:
- h2
- http/1.1자주 발생하는 잘못된 설정
YAML에서 설정을 파싱할 수 있다고 프로토콜 매개변수를 서로 바꿔 쓸 수 있는 것은 아닙니다. AnyTLS가 연결되지 않으면 먼저 최소 설정으로 줄여 보세요.
- VLESS 노드에서
reality-opts을 복사해 현재 코어에서 명시적으로 지원하지 않는 조합을 사용합니다. serverIP를 입력했지만 인증서에 해당하는sni을 입력하지 않아 인증서 이름 검증에 실패합니다.- ShadowTLS, ResTLS 및 JLS 중 둘 이상의 래핑을 동시에 활성화하면 노드 생성 단계에서 오류가 발생합니다.
- 세션 검사 매개변수를 성능 배율로 오해해 무작정 높이면 오히려 더 많은 유휴 연결이 유지됩니다.
