นโยบายพร็อกซี
นโยบายพร็อกซีบ่งบอกถึงการส่งต่อคำขอไปยังเซิร์ฟเวอร์พร็อกซีอื่น Chute รองรับโปรโตคอลพร็อกซี HTTP/HTTPS/SOCKS5/SOCKS5-TLS/SS/SSR/Trojan/VMess/VLESS/AnyTLS/TUIC/Hysteria2/WireGuard/ShadowTLS/MASQUE/SSH
ส่วน [Proxy] ประกาศนโยบายพร็อกซี คุณสามารถสร้างพร็อกซีหลายตัวสำหรับกฎที่แตกต่างกัน
ตัวอย่าง:
[Proxy]
ProxyHTTP = http, 1.2.3.4, 443, username, password
ProxyHTTPS = https, 1.2.3.4, 443, username, password, sni=example.com
ProxySOCKS5 = socks5, 1.2.3.4, 443, username, password
ProxySOCKS5TLS = socks5-tls, 1.2.3.4, 443, username, password, sni=example.com
SS = ss, 1.2.3.4, 443, method, password, obfs=http
SSR = ssr, 1.2.3.4, 443, method, password, protocol=auth_chain_f, protocol_param=user:pass, obfs=http_post, obfs_param=example.com
Trojan = trojan, 1.2.3.4, 443, password=password, tls=true, sni=example.com, skip-cert-verify=false, ws=true
VMess = vmess, 1.2.3.4, 443, uuid=uuid, sni=example.com, tls=true, ws=true
VLESS = vless, 1.2.3.4, 443, uuid=uuid, sni=example.com, xtls=true
AnyTLS = anytls, 1.2.3.4, 443, password, sni=example.com
TUIC = tuic, 1.2.3.4, 443, uuid=uuid, password=password, sni=example.com
Hysteria2 = hysteria2, 1.2.3.4, 443, auth=password, sni=example.com, up=10, down=100
WireGuard = wireguard, private-key=base64key, peer-public-key=base64key, section-name=wg0, self-ip=10.0.0.2
ShadowTLS = shadowtls, 1.2.3.4, 443, password=password, sni=example.com, skip-cert-verify=false, fingerprint=chrome
ProxyMASQUE = masque, 1.2.3.4, 443, token=auth-token, mode=connect-udp, sni=example.com, alpn=h3, skip-cert-verify=false
SSH = ssh, 1.2.3.4, 22, root, password=pw
SCHEME = scheme, ssr://....
ข้อสังเกต: นโยบาย Trojan ต้องระบุ
tls=trueอย่างชัดเจน — TLS จะไม่ถูกกำหนดโดยนัย
พารามิเตอร์
| ประเภท | ชื่อผู้ใช้ | รหัสผ่าน | เมธอด | TLS | XTLS | WebSocket | QUIC |
|---|---|---|---|---|---|---|---|
| HTTP | √ | √ | |||||
| HTTPS | √ | √ | TLS | ||||
| Socks | √ | √ | |||||
| Socks5-TLS | √ | √ | TLS | ||||
| Shadowsocks | √ | เมธอด, OBFS | |||||
| ShadowsocksR | √ | เมธอด, โปรโตคอล, OBFS | |||||
| Trojan | √ | √ | TLS, ลายนิ้วมือ, ECH | WS, gRPC, XHTTP | |||
| VMess | uuid | TLS, ลายนิ้วมือ, ECH | WS, gRPC, XHTTP | ||||
| VLESS | uuid | TLS, ลายนิ้วมือ, ECH | XTLS | WS, gRPC, XHTTP | |||
| AnyTLS | √ | TLS | |||||
| TUIC | uuid | √ | TLS | √ | |||
| Hysteria2 | auth | TLS | √ | ||||
| WireGuard | private-key | WireGuard ดั้งเดิม | |||||
| ShadowTLS | √ | TLS, ลายนิ้วมือ | |||||
| MASQUE | token | TLS, โหมด, มัลติเพล็กซ์ | √ | ||||
| SSH | √ | การตรวจสอบสิทธิ์ | |
พารามิเตอร์สำหรับพร็อกซีด้วย TLS
tls: ไม่บังคับ
tls=true
เปิดใช้งานการขนส่ง TLS
skip-cert-verify: ไม่บังคับ
skip-cert-verify=true
หากเปิดใช้งานตัวเลือกนี้ Chute จะไม่ตรวจสอบใบรับรองของเซิร์ฟเวอร์
sni (ค่าเริ่มต้น: hostname)
sni=exmaple.com
คุณสามารถปรับแต่ง Server Name Indication (SNI) ในระหว่างการจับมือ TLS โดยค่าเริ่มต้น Chute จะส่ง SNI ด้วยชื่อโฮสต์เหมือนเบราว์เซอร์ส่วนใหญ่
fingerprint: ไม่บังคับ
fingerprint=chrome
ส่ง TLS ClientHello ของเบราว์เซอร์แทนของระบบ เพื่อไม่ให้การจับมือดูโดดเด่นว่าเป็น
ไคลเอนต์พร็อกซี ค่าที่รองรับคือ chrome, firefox, safari และ ios รวมถึง
edge, 360, qq, android และ random ซึ่งทั้งหมดถูกจัดการเป็น Chrome
ใช้ได้กับ Trojan, VMess และ VLESS ที่ทำงานบน TLS รวมถึงการขนส่งแบบ WebSocket และ gRPC ส่วน REALITY และ ShadowTLS มีตัวเลือกชื่อเดียวกันในหัวข้อของตนเอง หากต้องการ กำหนดลายนิ้วมือเดียวให้ทุกนโยบายที่ไม่ได้ระบุเอง ให้ใช้ global-client-fingerprint
การกำหนดลายนิ้วมือยังเปิดใช้การแลกเปลี่ยนคีย์แบบต้านควอนตัมด้วย: Chute จะเสนอกลุ่ม ไฮบริด X25519MLKEM768 ควบคู่ไปกับ X25519 ทำให้เซสชันที่ถูกบันทึกไว้วันนี้ไม่อาจถูก ถอดรหัสในภายหลังโดยผู้โจมตีที่มีคอมพิวเตอร์ควอนตัม เซิร์ฟเวอร์ที่ไม่รู้จักกลุ่มนี้จะเลือก X25519 ตามปกติ จึงไม่มีอะไรเสียหาย หากไม่ได้กำหนดลายนิ้วมือ การเชื่อมต่อจะใช้ TLS ของระบบซึ่งไม่เสนอกลุ่มนี้ ด้วยเหตุผลเดียวกับที่ ECH ต้องมีลายนิ้วมือ
พารามิเตอร์สำหรับพร็อกซีด้วย Shadowsocks
method: จำเป็นต้องระบุ
ปัจจุบันรองรับ:
rc4-md5
aes-128-cfb
aes-192-cfb
aes-256-cfb
aes-128-ctr
aes-192-ctr
aes-256-ctr
bf-cfb
camellia-128-cfb
camellia-192-cfb
camellia-256-cfb
salsa20
chacha20
chacha20-ietf
aes-128-gcm
aes-192-gcm
aes-256-gcm
chacha20-ietf-poly1305
xchacha20-ietf-poly1305
เมธอด Shadowsocks 2022
Chute รองรับโปรโตคอล Shadowsocks 2022 ซึ่งใช้การสร้างคีย์แบบ BLAKE3 และรหัส AEAD ชื่อเมธอดกำหนดชุดรหัส:
2022-blake3-aes-128-gcm
2022-blake3-aes-256-gcm
2022-blake3-chacha20-poly1305
รูปแบบรหัสผ่าน:
ฟิลด์รหัสผ่านสำหรับ SS2022 ประกอบด้วยคีย์ที่เข้ารหัส base64 หนึ่งหรือสองตัว คั่นด้วย : (ทวิภาค)
โหมดผู้ใช้เดียว (หนึ่งคีย์):
SS2022 = ss, 1.2.3.4, 443, 2022-blake3-aes-256-gcm, "base64-key"
โหมดหลายผู้ใช้ด้วยส่วนหัวระบุตัวตน (สองคีย์):
สำหรับ 2022-blake3-aes-128-gcm และ 2022-blake3-aes-256-gcm คุณสามารถระบุคีย์ส่วนหัวระบุตัวตนและคีย์ผู้ใช้ คั่นด้วย ::
SS2022 = ss, 1.2.3.4, 443, 2022-blake3-aes-256-gcm, "header-base64-key:user-base64-key"
แต่ละคีย์เป็นสตริงที่เข้ารหัส base64 (รองรับทั้ง base64 มาตรฐานและ URL-safe) ความยาวคีย์ที่ต้องการ:
| เมธอด | ความยาวคีย์ผู้ใช้ | ความยาวคีย์ส่วนหัว |
|---|---|---|
2022-blake3-aes-128-gcm |
16 ไบต์ | 16 ไบต์ |
2022-blake3-aes-256-gcm |
32 ไบต์ | 32 ไบต์ |
2022-blake3-chacha20-poly1305 |
32 ไบต์ | N/A (ไม่รองรับส่วนหัวระบุตัวตน) |
สร้างคีย์:
openssl rand -base64 32
หมายเหตุ: เมธอด SS2022 ไม่รองรับพารามิเตอร์
obfsเมธอด2022-blake3-chacha20-poly1305ไม่รองรับโหมดหลายผู้ใช้
เมธอด Shadowsocks AEGIS
Chute รองรับตระกูลรหัส AEAD แบบ AEGIS ด้วย รหัสเหล่านี้สร้างขึ้นบนฟังก์ชันรอบของ AES และเร็วกว่า AES-GCM หรือ ChaCha20-Poly1305 อย่างชัดเจนบนหน่วยประมวลผลที่มี AES ในฮาร์ดแวร์ ซึ่งรวมถึง iPhone, iPad, Apple TV และ Mac รุ่นใหม่ทั้งหมด:
aegis-128l
aegis-256
ตั้งค่าเหมือนเมธอด AEAD แบบดั้งเดิมด้านบน โดยรหัสผ่านเป็นวลีรหัสผ่านธรรมดา ไม่ใช่คีย์แบบ base64:
AEGIS = ss, 1.2.3.4, 443, aegis-128l, your-password
| เมธอด | คีย์ | Nonce | แท็ก |
|---|---|---|---|
aegis-128l |
16 ไบต์ | 16 ไบต์ | 16 ไบต์ |
aegis-256 |
32 ไบต์ | 32 ไบต์ | 16 ไบต์ |
ส่วนที่เหลือเป็นไปตาม SIP004 ทุกประการ: salt ยาวเท่ากับคีย์ คีย์ย่อยของเซสชันคือ HKDF-SHA1(key, salt, "ss-subkey") เพย์โหลด TCP ส่งเป็นชิ้น AEAD ที่มีคำนำหน้าความยาวและเพิ่มค่า nonce หลังแต่ละการดำเนินการ ส่วน UDP ใช้ nonce ที่เป็นศูนย์ทั้งหมด
คุณต้องรันเซิร์ฟเวอร์เอง AEGIS ไม่ได้เป็นส่วนหนึ่งของข้อกำหนด Shadowsocks ไม่มี SIP ใดนิยามไว้ และไม่มีเซิร์ฟเวอร์ Shadowsocks กระแสหลักตัวใดรองรับ ทั้ง shadowsocks-rust, shadowsocks-libev, shadowsocks-go, sing-box และ Xray การเลือกเมธอดเหล่านี้จะใช้งานได้เฉพาะกับเซิร์ฟเวอร์ที่คุณดูแลเองและสร้างมาให้รองรับเท่านั้น หากคุณเชื่อมต่อกับโหนดเชิงพาณิชย์หรือโหนดที่ใช้ร่วมกัน ให้ใช้เมธอดที่ใช้งานร่วมกันได้ด้านบนแทน
obfs: ไม่บังคับ
ปัจจุบันรองรับ:
tls
http
obfs_param: ไม่บังคับ
obfs_param=example.com
กำหนด Host ที่ชั้น obfs ใช้ หากไม่ได้ตั้งค่าจะใช้ค่าเริ่มต้น cloudfront.net
พารามิเตอร์สำหรับพร็อกซีด้วย ShadowsocksR/ShadowsocksRR/ShadowsocksR-Akarin
method: จำเป็นต้องระบุ
ปัจจุบันรองรับ:
rc4
rc4-md5-6
rc4-md5
aes-128-cfb
aes-192-cfb
aes-256-cfb
aes-128-ctr
aes-192-ctr
aes-256-ctr
bf-cfb
camellia-128-cfb
camellia-192-cfb
camellia-256-cfb
cast5-cfb
des-cfb
idea-cfb
rc2-cfb
seed-cfb
salsa20
chacha20
chacha20-ietf
protocol: ไม่บังคับ
ปัจจุบันรองรับ:
origin
auth_sha1
auth_sha1_v2
auth_sha1_v4
auth_aes128_md5
auth_aes128_sha1
auth_chain_a
auth_chain_b
auth_chain_c
auth_chain_d
auth_chain_e
auth_chain_f
auth_akarin_rand
auth_akarin_spec_a
protocol_param: ไม่บังคับ
obfs: ไม่บังคับ
ปัจจุบันรองรับ:
plain
http_simple
http_post
tls1.2_ticket_auth
obfs_param: ไม่บังคับ
พารามิเตอร์สำหรับพร็อกซีด้วย WebSocket
ws: ไม่บังคับ
ws=true
เปิดใช้งานการขนส่ง WebSocket
ws-path: ไม่บังคับ
ws-path=/exmaple
เปลี่ยนเส้นทางของคำขอ HTTP WebSocket
ws-headers: ไม่บังคับ
ws-headers=Header1:Value1|Header2:Value2
แก้ไขส่วนหัว HTTP ของคำขอ HTTP WebSocket
พารามิเตอร์สำหรับพร็อกซีด้วย gRPC
การขนส่ง gRPC มีให้สำหรับโปรโตคอล Trojan, VMess และ VLESS มันใช้การจัดเฟรม gRPC แบบ HTTP/2 ผ่าน TLS ซึ่งสามารถช่วยหลีกเลี่ยงข้อจำกัดเครือข่ายบางอย่าง
grpc: ไม่บังคับ
grpc=true
เปิดใช้งานการขนส่ง gRPC ต้องการให้เปิดใช้งาน TLS
grpc-service-name: จำเป็นต้องระบุเมื่อ grpc=true
grpc-service-name=MyService
ระบุชื่อ/เส้นทางบริการ gRPC สำหรับการมัลติเพล็กซ์ มันต้องตรงกับชื่อบริการที่กำหนดค่าบนเซิร์ฟเวอร์; ไม่มีค่าเริ่มต้น
grpc-multi-mode: ไม่บังคับ
grpc-multi-mode=true
เปิดใช้งานโหมดหลายตัวสำหรับ gRPC ซึ่งอนุญาตให้หลายสตรีมแชร์การเชื่อมต่อ gRPC เดียวเพื่อประสิทธิภาพที่ดีขึ้น
ตัวอย่างกับ VMess และ gRPC:
VMess = vmess, 1.2.3.4, 443, uuid=uuid, tls=true, grpc=true, grpc-service-name=GunService, sni=example.com
พารามิเตอร์สำหรับพร็อกซีด้วย XHTTP
การขนส่ง XHTTP ใช้ได้กับโปรโตคอล Trojan, VMess และ VLESS แทนที่จะเปิดการเชื่อมต่อ ค้างไว้หนึ่งเส้น มันจะบรรจุอุโมงค์ไว้ในคำขอ HTTP ธรรมดา ขาดาวน์โหลดมาเป็นการตอบกลับ เส้นเดียวที่ไม่จบ ส่วนขาอัปโหลดออกไปเป็นชุดคำขอ POST หรือเป็น POST เส้นเดียวที่ไม่จบ สิ่งนี้ทำให้ใช้งานผ่าน CDN ได้ ซึ่งเป็นเหตุผลหลักที่เลือกใช้แทน WebSocket หรือ gRPC
เวอร์ชัน HTTP ไม่ได้ตั้งค่าโดยตรง ถ้าไม่มี TLS จะเป็น HTTP/1.1 ถ้ามี TLS จะเป็น HTTP/2
เว้นแต่ alpn เป็น http/1.1 พอดี (ได้ HTTP/1.1) หรือเป็น h3 พอดี (ได้ HTTP/3)
ส่วน REALITY จะใช้ HTTP/2 เสมอ
xhttp: ไม่บังคับ
xhttp=true
เปิดใช้งานการขนส่ง XHTTP
xhttp-mode: ไม่บังคับ
xhttp-mode=packet-up
วิธีนำพาข้อมูลขาอัปโหลด ค่า auto (ค่าเริ่มต้น) เท่ากับ packet-up และเท่ากับ
stream-one เมื่อใช้ REALITY
packet-up— ขาอัปโหลดเป็นชุดคำขอ POST ที่มีหมายเลขกำกับ เข้ากันได้ดีที่สุดและ เหมาะกับ CDN มากที่สุดstream-up— ขาอัปโหลดเป็น POST เส้นเดียวที่ไม่จบ ส่วนขาดาวน์โหลดใช้คำขอแยกstream-one— คำขอเดียวรับส่งทั้งสองทิศทาง ต้องให้เซิร์ฟเวอร์และอุปกรณ์ระหว่างทาง รองรับ HTTP แบบสองทางพร้อมกัน
โดยทั่วไปเซิร์ฟเวอร์จะกำหนดโหมดตายตัว หากไม่ตรงกันจะตอบกลับด้วย 400
xhttp-path: ไม่บังคับ
xhttp-path=/yourpath
เส้นทางของคำขอ ค่าเริ่มต้นคือ / ต้องตรงกับเส้นทางที่เซิร์ฟเวอร์ให้บริการ XHTTP
xhttp-host: ไม่บังคับ
xhttp-host=example.com
ชื่อโฮสต์ที่ใช้ในส่วนหัว Host และ URL ของคำขอ ค่าเริ่มต้นคือ sni และใช้ที่อยู่
เซิร์ฟเวอร์เมื่อไม่ได้ตั้งค่า
xhttp-headers: ไม่บังคับ
xhttp-headers=Header1:Value1|Header2:Value2
ส่วนหัว HTTP เพิ่มเติม รูปแบบเดียวกับ ws-headers
xhttp-padding: ไม่บังคับ
xhttp-padding=100-1000
ช่วงความยาวของแพดดิงที่ทุกคำขอพกไป เขียนเป็น MIN-MAX หรือตัวเลขเดียว
ค่าเริ่มต้นคือ 100-1000 เซิร์ฟเวอร์บังคับให้มีแพดดิงและตรวจสอบความยาว ช่วงนี้จึง
ต้องอยู่ในกรอบที่เซิร์ฟเวอร์ยอมรับ คำขอที่ไม่มีแพดดิงหรือความยาวไม่ถูกต้องจะได้รับ 400
xhttp-max-post-bytes: ไม่บังคับ
xhttp-max-post-bytes=1000000
ขนาดสูงสุดของ POST ขาอัปโหลดหนึ่งครั้ง หน่วยเป็นไบต์ ค่าเริ่มต้นคือ 1000000
การเขียนที่ใหญ่กว่านั้นจะถูกแบ่งเป็นหลาย POST
xhttp-min-post-interval: ไม่บังคับ
xhttp-min-post-interval=30
ระยะห่างขั้นต่ำระหว่าง POST ขาอัปโหลดที่ต่อเนื่องกัน หน่วยเป็นมิลลิวินาที ค่าเริ่มต้นคือ 30
xhttp-xmux-max-concurrency, xhttp-xmux-max-connections, xhttp-xmux-max-reuse-times, xhttp-xmux-max-lifetime: ไม่บังคับ
xhttp-xmux-max-concurrency=4
XMUX จะรวมการเชื่อมต่อ HTTP/2 ที่อยู่เบื้องล่างไว้ในพูล เพื่อให้หลายอุโมงค์ใช้การเชื่อมต่อ
เดียวร่วมกัน ซึ่งดูเหมือนเซสชันเบราว์เซอร์ธรรมดามากกว่าการเปิดหนึ่งการเชื่อมต่อต่อหนึ่ง
อุโมงค์ ทั้งสี่ค่ามีค่าเริ่มต้นเป็น 0 ซึ่งปิดการรวมพูล
xhttp-xmux-max-concurrency— จำนวนอุโมงค์ที่ใช้การเชื่อมต่อเดียวร่วมกันได้xhttp-xmux-max-connections— จำนวนการเชื่อมต่อที่อนุญาตต่อเซิร์ฟเวอร์xhttp-xmux-max-reuse-times— การเชื่อมต่อหนึ่งรับกี่อุโมงค์ก่อนจะหยุดรับใหม่xhttp-xmux-max-lifetime— ผ่านไปกี่วินาทีแล้วจะหยุดรับอุโมงค์ใหม่
โปรดทราบว่านโยบาย XHTTP จะปฏิเสธ mux=true เพราะ XHTTP มีการมัลติเพล็กซ์ของตัวเองอยู่แล้ว
การซ้อนแบบทั่วไปทับลงไปจะกลายเป็นสองชั้น
xhttp-download-server, xhttp-download-port: ไม่บังคับ
xhttp-download-server=cdn.example.com
ส่งเฉพาะขาดาวน์โหลดผ่านที่อยู่อื่น ซึ่งโดยทั่วไปคือ CDN ที่อยู่หน้าเซิร์ฟเวอร์เดียวกัน ขณะที่ขาอัปโหลดยังใช้ที่อยู่หลัก ทั้งสองต้องไปถึงเซิร์ฟเวอร์เดียวกัน เพราะเซสชันเป็น สถานะฝั่งเซิร์ฟเวอร์ การเปลี่ยนเส้นทางทำได้ แต่เปลี่ยนเซิร์ฟเวอร์ไม่ได้
ตัวอย่างกับ VLESS และ XHTTP:
VLESS = vless, 1.2.3.4, 443, uuid=uuid, tls=true, xhttp=true, xhttp-mode=packet-up, xhttp-path=/yourpath, sni=example.com
พารามิเตอร์สำหรับพร็อกซีด้วย XTLS
xtls: ไม่บังคับ
xtls=true
เปิดใช้งานการขนส่ง XTLS ด้วยโฟลว์ xtls-rprx-direct หากต้องการใช้ XTLS Vision ให้ใช้พารามิเตอร์ flow แทน
flow: ไม่บังคับ
flow = xtls-rprx-vision
เลือกการควบคุมโฟลว์ของ XTLS ค่าเดียวที่รองรับคือ xtls-rprx-vision ซึ่งเปิดใช้การจัดเฟรมแบบ Vision โดยค่าโฟลว์นี้จะถูกส่งไปยังเซิร์ฟเวอร์ใน addons ของ VLESS
skip-cert-verify: ไม่บังคับ
skip-cert-verify=true
เหมือนกับ TLS
sni (ค่าเริ่มต้น: hostname)
sni=exmaple.com
เหมือนกับ TLS
พารามิเตอร์สำหรับพร็อกซีด้วย REALITY
REALITY เป็นเทคนิคการอำพรางแบบ TLS ที่ทำให้ทราฟฟิกพร็อกซีแยกไม่ออกจากทราฟฟิก TLS ปกติไปยังเว็บไซต์จริง มันสามารถใช้กับโปรโตคอล VLESS
reality: ไม่บังคับ
reality=true
เปิดใช้งานการอำพราง REALITY ต้องการเซิร์ฟเวอร์เป้าหมายที่จะทำหน้าที่เป็นปลายทางพราง
public-key: จำเป็นต้องระบุ
public-key=BASE64KEY
คีย์สาธารณะ X25519 ของเซิร์ฟเวอร์ (base64) การจับมือ REALITY ไม่สามารถสร้างได้หากไม่มีมัน
short-id: ไม่บังคับ
short-id=abcd1234
ตัวระบุสั้นที่ใช้สำหรับการตรวจสอบสิทธิ์ REALITY โดยทั่วไปเป็นสตริงฐานสิบหก
server-name: ไม่บังคับ
server-name=www.microsoft.com
SNI (Server Name Indication) ที่จะนำเสนอระหว่างการจับมือ TLS นี้ควรเป็นเว็บไซต์จริงที่เข้าถึงบ่อยเพื่อผลการพรางที่ดีที่สุด ใบรับรองของเซิร์ฟเวอร์เป้าหมายต้องตรงกับชื่อนี้
fingerprint: ไม่บังคับ
fingerprint=chrome
ลายนิ้วมือไคลเอนต์ TLS ที่จะเลียนแบบ ค่าที่รองรับรวมถึง chrome, firefox, safari, ios, edge, 360, qq, android, random การใช้ลายนิ้วมือเบราว์เซอร์ทั่วไปช่วยหลีกเลี่ยงการตรวจจับ โปรดทราบว่า android และ random ไม่ได้แตกต่างกันในที่นี้ — ทั้งสองค่าจะถูกถือว่าเป็น chrome (พร้อมบันทึกคำเตือนในล็อก)
spiderx: ไม่บังคับ
spiderx=/path
เส้นทางที่กำหนดเองสำหรับการพราง REALITY spider
ตัวอย่างกับ VLESS:
VLESS = vless, 1.2.3.4, 443, uuid=uuid, reality=true, public-key=BASE64KEY, server-name=www.microsoft.com, short-id=abcd, fingerprint=chrome
หมายเหตุ: REALITY ไม่ใช้ใบรับรองแบบดั้งเดิม การเชื่อมต่อใช้ใบรับรองจริงของเซิร์ฟเวอร์พราง
พารามิเตอร์สำหรับพร็อกซีที่ใช้ ECH
Encrypted Client Hello ซ่อนชื่อเซิร์ฟเวอร์จากผู้ที่เฝ้าดูการเชื่อมต่อ ชื่อจริงจะถูก
เข้ารหัสอยู่ภายในการจับมือ ส่วนชื่อที่ปรากฏบนเส้นทางคือ public_name ที่ ECHConfig
ของเซิร์ฟเวอร์ประกาศไว้
ECH สร้างอยู่บนชุดเดียวกับลายนิ้วมือไคลเอนต์ ดังนั้นนโยบายต้องตั้ง
fingerprint ด้วย หากไม่มี ech=true จะไม่ทำอะไรเลยและชื่อจริง
จะถูกส่งออกไปแบบไม่เข้ารหัส ใช้ได้กับ Trojan, VMess และ VLESS ที่ทำงานบน TLS ธรรมดา
รวมถึงการขนส่งแบบ WebSocket ของโปรโตคอลเหล่านั้น
Notice: การขนส่งแบบ gRPC ไม่รองรับ ECH เมื่อใช้
grpc=trueค่าech=trueจะถูกเพิกเฉยอย่างเงียบ ๆ และชื่อเซิร์ฟเวอร์จริงจะถูกส่งออกไปแบบไม่เข้ารหัส (ส่วนลายนิ้วมือไคลเอนต์และการแลกเปลี่ยนคีย์แบบต้านควอนตัมยังใช้ได้กับ gRPC)
ech: ไม่บังคับ
ech=true
เปิดใช้ ECH หากไม่ได้ตั้ง ech-config Chute จะค้นหา ECHConfig จากเรกคอร์ด DNS HTTPS
ของชื่อเซิร์ฟเวอร์ เช่นเดียวกับที่เบราว์เซอร์ทำ
ech-config: ไม่บังคับ
ech-config=AEX+DQBBAAAgACD...
ECHConfigList แบบ base64 ใช้แทนการค้นหาผ่าน DNS ตั้งค่านี้เมื่อเซิร์ฟเวอร์ไม่ได้ ประกาศเรกคอร์ด HTTPS หรือเมื่อต้องการตรึงการตั้งค่าใดค่าหนึ่ง
ech-public-name: ไม่บังคับ
ech-public-name=cover.example.com
แทนที่ชื่อกำบังที่ถูกส่งแบบไม่เข้ารหัส ค่าเริ่มต้นคือ public_name ภายใน ECHConfig
ซึ่งเป็นค่าที่เซิร์ฟเวอร์คาดหวัง ให้ตั้งค่านี้เฉพาะกรณีที่การติดตั้งใช้โฮสต์อื่นเป็น
ตัวประกาศการตั้งค่าแทน
ตัวอย่างกับ Trojan:
Trojan = trojan, 1.2.3.4, 443, password=pw, tls=true, sni=secret.example.com, fingerprint=chrome, ech=true
หากเซิร์ฟเวอร์ปฏิเสธ ECH ซึ่งมักเกิดจากการตั้งค่าที่เก่าไปแล้ว มันจะตอบด้วยชื่อกำบัง และแสดงใบรับรองของชื่อนั้น การเชื่อมต่อจึงล้มเหลวที่ขั้นตรวจสอบตัวตนแทนที่จะดำเนิน ต่อไปอย่างเงียบ ๆ ให้อัปเดต
ech-configหรือลบออกเพื่อกลับไปใช้การค้นหาผ่าน DNS
TCP Fast Open (ทดลอง)
tfo: ไม่บังคับ
tfo=true
ข้อมูลเพิ่มเติมของ TCP fast open สามารถอ่านได้ใน Wikipedia การเปิดใช้งาน TCP fast open อาจทำให้การเชื่อมต่อล้มเหลวอย่างไม่คาดคิด
พารามิเตอร์ทั่วไป
udp-relay: ไม่บังคับ (ค่าเริ่มต้น: true)
udp-relay=false
ทำเครื่องหมายนโยบายเป็น TCP เท่านั้น การรีเลย์ UDP เปิดโดยค่าเริ่มต้นเมื่อโปรโตคอลรองรับ ตั้งค่า udp-relay=false เพื่อยกเว้นนโยบายจากการรีเลย์ทราฟฟิก UDP
mux: ไม่บังคับ
mux=true
เปิดใช้งานการใช้การเชื่อมต่อซ้ำ / มัลติเพล็กซ์ ชื่อแฝง multiplex และ reuse ก็ยอมรับด้วย รองรับโดย Trojan, VMess, VLESS, Hysteria2, Shadowsocks(R), ShadowTLS และ MASQUE
cert-fingerprint-sha256: ไม่บังคับ
cert-fingerprint-sha256=<hex>
ตรึงใบรับรองเซิร์ฟเวอร์ด้วยลายนิ้วมือ SHA-256 ชื่อแฝง cert-fp ก็ยอมรับด้วย ปัจจุบันมีผลเฉพาะกับ MASQUE เท่านั้น
encrypt-method (VMess): ไม่บังคับ (ค่าเริ่มต้น: auto)
encrypt-method=aes-128-gcm
การเข้ารหัสเพย์โหลด VMess ค่าที่รองรับ: aes-128-gcm, chacha20-poly1305, aes-128-cfb (ชื่อแฝง legacy), none
alpn: ไม่บังคับ
alpn=h2|http/1.1
ค่า ALPN หลายค่าคั่นด้วย |
underlying-proxy: ไม่บังคับ
underlying-proxy=OtherProxy
การต่อพ่วงพร็อกซี: ค่าที่ระบุคือชื่อของอีกนโยบายหนึ่งที่ควรรับส่งทราฟฟิกของนโยบายนี้ ตัวเลือกนี้ถูกแยกวิเคราะห์และเก็บรักษาไว้เมื่อบันทึกการกำหนดค่า แต่ยังไม่มีผลในเคอร์เนลปัจจุบัน — จะมีการบันทึกคำเตือนลงในล็อก และนโยบายนั้นก็ยังคงเชื่อมต่อไปยังเซิร์ฟเวอร์ของตัวเองโดยตรง
หมายเหตุ: การนำเข้าโปรไฟล์ Clash/mihomo จะสร้างตัวเลือกนี้ขึ้นมาจาก
dialer-proxyดังนั้นหลังการนำเข้า นโยบายอาจดูเหมือนถูกต่อพ่วงไว้ทั้งที่ทราฟฟิกจริงไม่ได้ถูกต่อพ่วง
test-url: ไม่บังคับ
test-url=http://www.gstatic.com/generate_204
URL สำหรับทดสอบความหน่วงเฉพาะของแต่ละนโยบาย ค่านี้ถูกยอมรับและเก็บรักษาไว้เมื่อบันทึกการกำหนดค่า แต่ไม่เคยถูกอ่าน: การวัดประสิทธิภาพจะใช้ url ของกลุ่มนโยบายที่มีนโยบายนั้นอยู่เสมอ ต่างจากตัวเลือกที่ไม่รู้จัก ค่านี้จะไม่ทำให้เกิดคำเตือน เพราะอยู่ในรายชื่อตัวเลือกที่รู้จัก
พารามิเตอร์สำหรับพร็อกซีด้วย AnyTLS
AnyTLS เป็นโปรโตคอลพร็อกซีแบบ TLS พร้อมการอำพรางด้วย padding
AnyTLS = anytls, 1.2.3.4, 443, password, sni=example.com, skip-cert-verify=false
password: จำเป็นต้องระบุ
รหัสผ่าน/ข้อความรหัสผ่านที่ใช้สำหรับการตรวจสอบสิทธิ์
sni (ค่าเริ่มต้น: hostname)
sni=exmaple.com
เหมือนกับ TLS
skip-cert-verify: ไม่บังคับ
skip-cert-verify=true
เหมือนกับ TLS
รูปแบบ padding: ไม่บังคับ
Padding ถูกกำหนดค่าด้วย stop=N บวกกับคีย์ตัวเลขต่อแพ็กเก็ต:
AnyTLS = anytls, 1.2.3.4, 443, password, sni=example.com, stop=2, 0=30-30, 1=100-400+c
| พารามิเตอร์ | คำอธิบาย |
|---|---|
stop |
จำนวนแพ็กเก็ตที่มีการ padding |
0, 1, 2, ... |
รูปแบบ padding สำหรับแต่ละแพ็กเก็ต (คีย์ตัวเลข) |
แต่ละรูปแบบเป็นรายการของส่วน (segment) ที่เชื่อมด้วย + (หรือ ,) โดยส่วนหนึ่งเป็นได้ทั้ง c (check) หรือช่วงไบต์ min-max (สูงสุด 16384) เช่น stop=2, 0=30-30, 1=100-400+c
พารามิเตอร์สำหรับพร็อกซีด้วย TUIC
TUIC เป็นโปรโตคอลพร็อกซีแบบ QUIC ที่ให้การส่งต่อ TCP และ UDP แบบมัลติเพล็กซ์
TUIC = tuic, 1.2.3.4, 443, uuid=uuid, password=password, sni=example.com, skip-cert-verify=false, alpn=h3
uuid: จำเป็นต้องระบุ
UUID สำหรับการตรวจสอบสิทธิ์
password: จำเป็นต้องระบุ
รหัสผ่านสำหรับการตรวจสอบสิทธิ์
sni (ค่าเริ่มต้น: hostname)
sni=exmaple.com
เหมือนกับ TLS
skip-cert-verify: ไม่บังคับ
skip-cert-verify=true
เหมือนกับ TLS
alpn: ไม่บังคับ
alpn=h3
ระบุสตริง ALPN สำหรับการเชื่อมต่อ QUIC
พารามิเตอร์สำหรับพร็อกซีด้วย Hysteria2
Hysteria2 เป็นโปรโตคอลพร็อกซีแบบ QUIC พร้อมการควบคุมความแออัด Brutal สำหรับสถานการณ์ที่มีปริมาณงานสูง
Hysteria2 = hysteria2, 1.2.3.4, 443, auth=password, sni=example.com, skip-cert-verify=false, up=10, down=100, alpn=h3
auth: จำเป็นต้องระบุ
รหัสผ่าน/โทเค็นการตรวจสอบสิทธิ์
sni (ค่าเริ่มต้น: hostname)
sni=exmaple.com
เหมือนกับ TLS
skip-cert-verify: ไม่บังคับ
skip-cert-verify=true
เหมือนกับ TLS
up: ไม่บังคับ (Mbps)
up=10
แบนด์วิดธ์อัปโหลดเป็น Mbps
down: ไม่บังคับ (Mbps)
down=100
แบนด์วิดธ์ดาวน์โหลดเป็น Mbps
alpn: ไม่บังคับ
alpn=h3
ระบุสตริง ALPN สำหรับการเชื่อมต่อ QUIC
obfs: ไม่บังคับ
obfs=salamander
เปิดใช้งานการอำพราง Salamander สำหรับทราฟฟิก QUIC Salamander ใช้ BLAKE2b-256 XOR เพื่ออำพรางแพ็กเก็ต QUIC ทำให้ทนต่อ DPI (Deep Packet Inspection)
obfs-password: ไม่บังคับ
obfs-password=your-obfuscation-key
รหัสผ่าน/คีย์ที่ใช้สำหรับการอำพราง Salamander จำเป็นต้องระบุเมื่อตั้งค่า obfs=salamander
พารามิเตอร์สำหรับพร็อกซีด้วย WireGuard
WireGuard เป็นโปรโตคอล VPN สมัยใหม่ Chute รองรับ WireGuard เป็นนโยบายพร็อกซีขาออก ทั้งในบรรทัดหรือโดยอ้างอิงส่วน [WireGuard] ที่มีชื่อ
การกำหนดค่าในบรรทัด:
WireGuard = wireguard, private-key=base64key, peer-public-key=base64key, self-ip=10.0.0.2, server=1.2.3.4, port=51820
การอ้างอิงส่วน (แนะนำ):
WireGuard = wireguard, section-name=wg0
ดู การกำหนดค่า WireGuard สำหรับไวยากรณ์ส่วน [WireGuard]
private-key: จำเป็นต้องระบุ (เฉพาะในบรรทัด)
คีย์ส่วนตัว WireGuard ที่เข้ารหัส base64
peer-public-key: จำเป็นต้องระบุ (เฉพาะในบรรทัด)
คีย์สาธารณะของเพียร์ WireGuard ที่เข้ารหัส base64
self-ip: ไม่บังคับ (ในบรรทัด)
ที่อยู่ IP ในเครื่องที่กำหนดให้กับอินเทอร์เฟซ WireGuard (เช่น 10.0.0.2)
self-ip-v6: ไม่บังคับ (ในบรรทัด)
ที่อยู่ IPv6 ในเครื่องที่กำหนดให้กับอินเทอร์เฟซ WireGuard
server: จำเป็นต้องระบุ
ที่อยู่เซิร์ฟเวอร์ WireGuard ระยะไกล (อาจมาจากส่วน [WireGuard] ที่อ้างอิงแทนบรรทัดนโยบายก็ได้)
port: จำเป็นต้องระบุ
พอร์ตเซิร์ฟเวอร์ WireGuard ระยะไกล (อาจมาจากส่วน [WireGuard] ที่อ้างอิงแทนบรรทัดนโยบายก็ได้)
preshared-key: ไม่บังคับ
คีย์ที่แชร์ล่วงหน้าที่เข้ารหัส base64 สำหรับการต้านทานควอนตัม (post-quantum)
keepalive: ไม่บังคับ (วินาที)
keepalive=25
ช่วง keepalive ถาวรสำหรับการข้าม NAT
mtu: ไม่บังคับ
mtu=1420
MTU สำหรับอินเทอร์เฟซ WireGuard
reserved: ไม่บังคับ
reserved=0,1,2
ไบต์สงวนสำหรับส่วนหัวแพ็กเก็ต WireGuard ถูกแยกวิเคราะห์แต่ยังไม่มีผลในเคอร์เนลปัจจุบัน — ค่านี้ไม่รองรับโดย BoringTun FFI และจะถูกเพิกเฉยพร้อมบันทึกคำเตือนในล็อก
พารามิเตอร์สำหรับพร็อกซีด้วย ShadowTLS
ShadowTLS เป็นโปรโตคอลพร็อกซีแบบ TLS ที่ห่อหุ้มทราฟฟิกภายในเซสชัน TLS 1.3 มาตรฐาน มันใช้การจับมือแบบใช้รหัสผ่านหลังจากการจับมือ TLS เพื่อตรวจสอบสิทธิ์และสร้างการเชื่อมต่อพร็อกซี
ShadowTLS = shadowtls, 1.2.3.4, 443, password=password, sni=example.com, skip-cert-verify=false, fingerprint=chrome
password: จำเป็นต้องระบุ
รหัสผ่านที่ใช้สำหรับการตรวจสอบสิทธิ์การจับมือ ShadowTLS
sni (ค่าเริ่มต้น: hostname)
sni=example.com
เหมือนกับ TLS
skip-cert-verify: ไม่บังคับ
skip-cert-verify=true
เหมือนกับ TLS
fingerprint: ไม่บังคับ
fingerprint=chrome
ลายนิ้วมือไคลเอนต์ TLS ที่จะเลียนแบบ ค่าที่รองรับรวมถึง chrome, firefox, safari, ios, edge, 360, qq, android, random การใช้ลายนิ้วมือเบราว์เซอร์ทั่วไปช่วยหลีกเลี่ยงการตรวจจับ โปรดทราบว่า android และ random ไม่ได้แตกต่างกันในที่นี้ — ทั้งสองค่าจะถูกถือว่าเป็น chrome (พร้อมบันทึกคำเตือนในล็อก)
พารามิเตอร์สำหรับพร็อกซีด้วย MASQUE
MASQUE เป็นโปรโตคอลพร็อกซีที่ใช้ HTTP/3 ซึ่งส่งการรับส่งข้อมูลผ่าน QUIC นโยบาย MASQUE ต้องมี type, host และ port ส่วน token สำหรับการยืนยันตัวตนเป็นตัวเลือก
ProxyMASQUE = masque, 1.2.3.4, 443, token=auth-token, mode=connect-udp, sni=example.com, alpn=h3, skip-cert-verify=false, mux=true
token: ไม่บังคับ
token=auth-token
โทเคน Bearer แบบไม่บังคับสำหรับการยืนยันตัวตนกับเซิร์ฟเวอร์ MASQUE และยอมรับชื่อแฝง masque-token= ด้วยเช่นกัน
mode: ไม่บังคับ
mode=connect-udp
ยอมรับเพื่อความเข้ากันได้ แต่ไม่เปลี่ยนพฤติกรรมการทำอุโมงค์: โฟลว์ TCP จะใช้อุโมงค์ CONNECT ธรรมดาเสมอ และโฟลว์ UDP จะใช้ connect-udp เสมอ และยอมรับชื่อแฝง masque-mode= ด้วยเช่นกัน
mux: ไม่บังคับ
mux=true
เปิดใช้งานมัลติเพล็กซ์บนการเชื่อมต่อ QUIC ที่ใช้ร่วมกัน (ขึ้นอยู่กับการตั้งค่าพูลการเชื่อมต่อ)
sni / alpn / skip-cert-verify: ไม่บังคับ
เช่นเดียวกับ TLS เนื่องจาก MASQUE ทำงานบน QUIC จึงมักใช้ alpn=h3
พารามิเตอร์สำหรับพร็อกซีด้วย SSH
ดู SSH Proxy สำหรับเอกสารฉบับเต็ม
หน้านี้เป็นฉบับแปลจากเวอร์ชันภาษาอังกฤษ หากเนื้อหาไม่ตรงกัน ให้ยึดเวอร์ชันภาษาอังกฤษเป็นหลัก