TrustTunnel
TrustTunnel یک پروتکل VPN است که در trusttunnel.org منتشر شده. ترافیک
شما را بهصورت درخواستهای HTTP CONNECT داخل یک اتصال HTTPS حمل میکند؛ با HTTP/2 روی TLS یا با
HTTP/3 روی QUIC. هیدیفای از کتابخانهٔ
sing-trusttunnel استفاده میکند. در کانفیگ،
خروجی "type": "trusttunnel" است و ورودی همین نوع یک سرور اجرا میکند.
چرا از آن استفاده کنیم
برای وصل شدن به یک سرور TrustTunnel، یا اجرای سرور خودتان با ورودی trusttunnel، از آن استفاده
کنید. جایی که HTTPS به سایتهای معمولی کار میکند ولی پروتکلهای پروکسی مسدودند انتخاب خوبی است و با
یک فیلد میتواند بین TCP (HTTP/2) و UDP (HTTP/3) جابهجا شود.
چطور از فیلترینگ عبور میکند
از دید فیلتر، اتصال TrustTunnel یک اتصال HTTPS به دامنهٔ سرور شماست: یک دستدادن عادی TLS و بعد
HTTP/2 یا HTTP/3. ترافیک پروکسیشده داخل جریانهای رمزنگاریشدهٔ HTTP است. ورود هم با سرآیند استاندارد
Proxy-Authorization داخل همین رمزنگاری انجام میشود.
میزان محافظت به تنظیم TLS شما بستگی دارد. دامنهٔ واقعی با گواهی معتبر شبیه هر سایت HTTPS دیگری است.
قابلیتهای TLS مثل اثرانگشت uTLS و ECH از بلوک tls میآیند. وقتی آدرس IP یا دامنهٔ سرور مسدود
است کمکی نمیکند، و حالت QUIC جایی که UDP یا QUIC مسدود است کمکی نمیکند.
چطور کار میکند
- کلاینت یک اتصال TLS (یا QUIC) به سرور باز میکند و هر اتصال TCP پروکسیشده را بهصورت یک درخواست
HTTP
CONNECTروی جریان جداگانه میفرستد. اتصالهای زیادی همین یک اتصال را با هم به کار میبرند. - ترافیک UDP از یک درخواست
CONNECTبه یک آدرس ویژه (_udp2) عبور میکند و بستهها داخل جریان قاببندی میشوند. - با روشن بودن
health_check، وقتی اتصال ۷ ثانیه بیکار بماند کلاینت یک درخواست بررسی کوچک میفرستد تا اتصال مرده زود پیدا شود. - وقتی شبکه عوض میشود، کلاینت اتصالهایش را میبندد و اتصالهای تازه باز میکند.
- سرور نام کاربر و رمز عبور هر درخواست را بررسی میکند و کاربر ناشناس را رد میکند.
پیکربندی
{
"outbounds": [
{
"type": "trusttunnel",
"tag": "trusttunnel-out",
"server": "vpn.example.com",
"server_port": 443,
"username": "alice",
"password": "<password>",
"tls": {
"enabled": true,
"server_name": "vpn.example.com"
}
}
]
}
فیلدهای خروجی
| فیلد | نوع | پیشفرض | معنی |
|---|---|---|---|
server |
string | الزامی | آدرس سرور. |
server_port |
عدد | الزامی | پورت سرور. |
username |
string | الزامی | نام کاربر. |
password |
string | الزامی | رمز عبور. |
tls |
object | الزامی | تنظیمات TLS خروجی. enabled باید true باشد. |
quic |
bool | false |
بهجای HTTP/2 روی TLS از HTTP/3 روی QUIC استفاده کند. |
quic_congestion_control |
string | "bbr" |
کنترل ازدحام QUIC: bbr، cubic یا reno. مقدار ناشناخته یعنی bbr. |
health_check |
bool | false |
وقتی اتصال ۷ ثانیه بیکار ماند آن را بررسی کند. |
| فیلدهای dialer | فیلدهای معمول dialer خروجی، مثل detour. |
فیلدهای ورودی
| فیلد | نوع | پیشفرض | معنی |
|---|---|---|---|
users |
فهرست | الزامی | کاربرها، هر کدام با username و password. |
network |
string | هر دو | tcp (HTTP/2)، udp (HTTP/3) یا خالی برای هر دو. |
quic_congestion_control |
string | "bbr" |
کنترل ازدحام برای کلاینتهای HTTP/3: bbr، cubic یا reno. |
tls |
object | تنظیمات TLS ورودی. وقتی network شامل udp باشد الزامی است. |
|
| فیلدهای listen | فیلدهای معمول listen ورودی، مثل listen و listen_port. |
نکتهها
- QUIC به برچسب ساخت
with_quicنیاز دارد. نسخههای هیدیفای آن را دارند. بدون آن،quic: trueبا خطای «QUIC is not included» شکست میخورد. - بدون TLS یا بدون نام کاربر و رمز عبور، خروجی بارگذاری نمیشود. ورودی هم بدون دستکم یک کاربر بارگذاری نمیشود.
- هر نام کاربر باید رمز عبور داشته باشد.