network와 opts의 연결 방식
전송 계층 설정은 구체적인 아웃바운드 노드에 부착되며 독립된 프록시 프로토콜이 아닙니다. 먼저 VMess, VLESS 또는 Trojan의 필수 필드를 입력하고 network 으로 전달 방식을 선택합니다.
각 *-opts 은 같은 이름의 network 아래에서만 적용됩니다. TLS, Reality, UDP 및 프로토콜 인증은 대개 노드 최상위 필드이며 WebSocket, gRPC 또는 XHTTP를 선택한다고 자동으로 활성화되지 않습니다. XHTTP의 download-settings 은 다운링크 연결에서 TLS와 Reality 매개변수를 중첩해 덮어쓸 수 있는 예외입니다.
network선택자- 전송 계층을 선택합니다. 비워 두거나 해당 프로토콜에서 지원하지 않는 값을 입력하면 현재 코어가 TCP로 처리합니다.
*-opts조건부 적용- 해당
network아래에서만 읽습니다. 예를 들어ws-opts은 다음과만 함께 사용합니다:network: ws。 tls / reality-opts일반적으로 최상위에 위치- 전송 보안을 담당하며 서버에 맞춰 별도로 설정해야 합니다. XHTTP 다운링크 연결은
download-settings에서 덮어쓸 수 있습니다. udp / packet-encodingVMess / VLESS- 프록시 UDP 기능과 이 두 프로토콜의 패킷 인코딩을 제어합니다. Trojan 전송 계층 필드가 아니며
network으로 자동 결정되지도 않습니다.
프로토콜 지원 매트릭스
프로토콜별로 허용하는 network 값은 서로 다릅니다. 표의 값은 현재 공개 설정 참고 자료를 기준으로 합니다.
| 프로토콜 | 사용 가능한 network | 폴백 규칙 |
|---|---|---|
| VMess | tcp, ws, http, h2, grpc, mkcp, mekya | 비워 두거나 다른 값이면 tcp로 처리 |
| VLESS | tcp, ws, http, h2, grpc, xhttp | 비워 두거나 다른 값이면 tcp로 처리 |
| Trojan | tcp, ws, grpc | 비워 두거나 다른 값이면 tcp로 처리 |
HTTP 및 HTTP/2
http 및 h2 은 서로 다른 두 가지 network입니다. 둘 다 경로, Host 및 서버 라우팅이 일치해야 하지만 서로 다른 opts 객체를 사용합니다.
http-opts.methodHTTP- HTTP 요청 메서드이며 서버 구현에 맞춰 입력합니다.
http-opts.pathHTTP- HTTP 요청 경로 목록이며 서버 설정과 일치해야 합니다.
http-opts.headersHTTP- 추가 HTTP 요청 헤더입니다. Host 또는 Connection 등의 값은 리버스 프록시 규칙과 일치해야 합니다.
h2-opts.hostHTTP/2- 호스트 도메인 목록입니다. 여러 값을 설정하면 클라이언트가 무작위로 선택하고 서버가 검증합니다.
h2-opts.pathHTTP/2- HTTP/2 요청 경로이며 서버와 일치해야 합니다.
gRPC
gRPC 전송은 network: grpc 및 grpc-opts 으로 구성됩니다. 서비스 이름을 가장 먼저 확인해야 하며 연결 및 스트림 수 매개변수는 서버와 동시성 요구 사항을 명확히 이해한 경우에만 조정하세요.
grpc-opts.grpc-service-name서버 설정 기준- gRPC 서비스 이름이며 서버와 일치해야 합니다.
grpc-opts.grpc-user-agent선택 사항- gRPC User-Agent를 덮어씁니다. 일반 노드에서는 대개 수정할 필요가 없습니다.
grpc-opts.ping-interval선택 사항- 연결 유지 간격이며 단위는 초이고 기본값은 꺼짐입니다.
grpc-opts.max-connections선택 사항- 기반 연결의 최대 수이며 기본값은
1이며max-streams와 충돌합니다. grpc-opts.min-streams선택 사항- 새 연결을 열기 전 최소 재사용 스트림 수이며
max-streams와 충돌합니다. grpc-opts.max-streams선택 사항- 새 연결을 열기 전 최대 재사용 스트림 수이며
max-connections및min-streams와 충돌합니다.
WebSocket
WebSocket 전송은 network: ws 및 ws-opts 으로 구성됩니다. 경로와 Host는 보통 CDN이나 리버스 프록시 검증도 함께 통과해야 합니다.
ws-opts.path서버 설정 기준- WebSocket 요청 경로이며 서버나 리버스 프록시 라우팅과 일치해야 합니다.
ws-opts.headers선택 사항- 추가 요청 헤더이며 일반적으로
Host을 사용합니다. TLS의servername와 같은 필드로 혼동하지 마세요. ws-opts.max-early-data선택 사항- WebSocket Early Data 첫 패킷의 길이 임계값이며 서버에서 지원할 때만 활성화합니다.
ws-opts.early-data-header-name선택 사항- Early Data를 전달할 요청 헤더 이름이며 서버 구현과 일치해야 합니다.
ws-opts.v2ray-http-upgrade선택 사항- V2Ray HTTP Upgrade 모드를 사용합니다. 서버 기능 없이 클라이언트에서만 활성화할 수 없습니다.
ws-opts.v2ray-http-upgrade-fast-open선택 사항- HTTP Upgrade에 Fast Open을 활성화하며 앞의 필드와 서버 지원에 의존합니다.
mKCP 및 Mekya
현재 mKCP와 Mekya는 VMess에서만 사용됩니다. 둘 다 VLESS 또는 Trojan의 범용 전송 계층이 아니므로 구독을 변환할 때 프로토콜을 넘겨 유지하지 마세요.
mkcp-opts.mtumKCP- 최대 전송 단위이며 연결 MTU를 고려해 조정해야 합니다.
mkcp-opts.ttimKCP- 전송 시간 간격이며 단위는 밀리초입니다.
mkcp-opts.uplink-capacitymKCP- 업링크 용량이며 단위는 MB/s입니다.
mkcp-opts.downlink-capacitymKCP- 다운링크 용량이며 단위는 MB/s입니다.
mkcp-opts.congestionmKCP- 혼잡 제어 활성화 여부를 제어합니다.
mkcp-opts.seedmKCP- AES-GCM 인증을 활성화할 때 사용하는 시드입니다. 비워 두면 기본 인증을 사용합니다.
mkcp-opts.headermKCP- 선택 가능한 위장 패킷 헤더
none、srtp、utp、wechat-video、dtls또는wireguard。 mekya-opts.urlMekya- Mekya 서버 URL이며 서버 진입점과 일치해야 합니다.
mekya-opts.max-write-delayMekya- 첫 패킷 이후의 최대 집계 대기 시간이며 단위는 밀리초입니다.
mekya-opts.max-request-sizeMekya- 단일 HTTP 요청의 최대 페이로드이며 단위는 바이트입니다.
mekya-opts.polling-interval-initialMekya- 빈 폴링의 초기 간격이며 단위는 밀리초입니다.
mekya-opts.h2-pool-sizeMekya- HTTP/2 연결 풀 크기입니다.
mekya-opts.kcpMekya- Mekya 내부 KCP 매개변수이며 필드 의미는
mkcp-opts와 같습니다.
XHTTP
현재 XHTTP는 VLESS에서만 사용됩니다. 기본적으로 H2를 사용하며 H3를 사용할 때는 다음을 설정해야 합니다: tls: true 와 함께 사용하는 alpn: [h3]또한 현재 H3 구현은 Reality, ShadowTLS, Restls 또는 JLS를 허용하지 않습니다. HTTP/1.1을 사용할 때는 다음을 설정합니다: alpn: [http/1.1]。
UUID와 VLESS Encryption은 계속 노드 최상위에 둡니다. TLS와 Reality도 보통 최상위에 있지만 xhttp-opts.download-settings 은 다운링크 연결에서 TLS, Reality, ECH, SNI 등의 매개변수를 중첩해 덮어쓸 수 있습니다.
XHTTP 고급 필드는 업링크 분할, 패딩, 세션 식별 및 연결 재사용을 바꿉니다. 서버나 리버스 프록시에 해당 설정이 없다면 path、host 및 기본 모드부터 시작하고 모든 옵션을 한 번에 채우지 마세요.
xhttp-opts.path서버 설정 기준- 요청 경로이며 서버나 리버스 프록시 라우팅과 일치해야 합니다.
xhttp-opts.host서버 설정 기준- HTTP Host는 TLS의
servername와 다른 필드입니다. xhttp-opts.mode선택 사항- 사용 가능
auto、stream-one、stream-up또는packet-up。 xhttp-opts.headers선택 사항- 추가 HTTP 요청 헤더입니다.
xhttp-opts.no-grpc-header선택 사항- stream-up 또는 stream-one 업링크에서 gRPC로 위장하기 위한 Content-Type 헤더의 생략 여부를 제어합니다.
xhttp-opts.x-padding-bytes선택 사항- 요청 헤더 패딩 길이 범위이며 기본 범위는
100-1000。 xhttp-opts.x-padding-obfs-mode선택 사항- 패딩 난독화를 활성화하며 호환성을 위해 기본값은
false。 xhttp-opts.uplink-http-method선택 사항- 업링크에서는 POST, PUT, PATCH 또는 DELETE처럼 서버와 중간 네트워크가 허용하는 요청 본문 포함 메서드를 사용할 수 있습니다.
xhttp-opts.session-placement선택 사항- 세션 ID는 path, query, cookie 또는 header에 넣을 수 있습니다.
xhttp-opts.seq-placement선택 사항- 일련번호 위치는 세션 위치 규칙과 호환되어야 합니다. 세션을 path에 두면 일련번호도 path에 두어야 합니다.
xhttp-opts.uplink-data-placementpacket-up- 이
packet-up모드에서는 분할된 업링크 데이터의 위치를 제어합니다. xhttp-opts.uplink-chunk-size조건부 적용- 업링크 데이터를 body에 넣지 않을 때 개별 블록의 최대 바이트 수를 제어하며 최소값은 64바이트입니다.
xhttp-opts.reuse-settings선택 사항- XHTTP 연결 재사용 설정입니다. 기본값이 없으며 생략하면 재사용하지 않습니다.
xhttp-opts.reuse-settings.max-concurrency두 가지 중 하나- 기반 연결별 최대 동시 요청 수이며
max-connections와 충돌합니다. xhttp-opts.reuse-settings.max-connections두 가지 중 하나- 최대 동시 연결 수이며
max-concurrency와 충돌합니다. xhttp-opts.download-settings선택 사항- 다운링크 연결 매개변수를 덮어씁니다. TLS, Reality, ECH, SNI, ALPN 및 클라이언트 지문 등의 필드를 중첩할 수 있으며 입력하지 않은 값은 업링크 설정을 그대로 사용합니다.
- 사용 금지:
xhttp— VMess 또는 Trojan 노드에서 사용할 수 없습니다. - XHTTP의
reuse-settings및 범용smux을 동시에 활성화해 두 겹으로 중복 재사용하지 마세요. - 경로, Host, ALPN 또는 모드가 서버와 일치하지 않으면 이 기본 필드부터 수정하세요.
uplink-http-method: GET은 현재 필드 참고 자료의 사용 가능한 업링크 메서드에 포함되지 않습니다.
proxies:
- name: vless-xhttp-h2
type: vless
server: edge.example.com
port: 443
uuid: 00000000-0000-0000-0000-000000000001
encryption: ""
udp: true
tls: true
servername: origin.example.com
alpn:
- h2
client-fingerprint: chrome
network: xhttp
xhttp-opts:
path: /xhttp
host: origin.example.com
mode: auto