Mieru
Mieru یک پروتکل پروکسی از پروژهٔ mieru است. همهٔ بایتهایی که
میفرستد رمزنگاری شدهاند و پرکنندهٔ تصادفی دارند، پس ترافیک هیچ سرآیند یا الگوی ثابتی برای شناسایی
ندارد. روی TCP یا UDP کار میکند. در کانفیگ، خروجی "type": "mieru" است؛ هیدیفای یک ورودی mieru
هم برای اجرای سرور دارد.
چرا از آن استفاده کنیم
برای وصل شدن به یک سرور mieru (سرور رسمی mita یا ورودی mieru در sing-box) از آن استفاده کنید.
به گواهی TLS و دامنه نیازی ندارد و میتواند از یک بازهٔ پورت استفاده کند. جایی که پروتکلهای مبتنی بر
TLS با بررسی SNI یا گواهی مسدود میشوند ولی ترافیک تصادفینما هنوز عبور میکند، انتخاب خوبی است.
چطور از فیلترینگ عبور میکند
Mieru ادای پروتکل دیگری را درنمیآورد. بهجای آن چیزی برای شناختن به فیلتر نمیدهد: هیچ دستدادن متن ساده، سرآیند پروتکل یا اندازهٔ ثابت بستهای وجود ندارد، چون همهچیز، حتی بستهٔ اول، رمزنگاری و پر شده است. سرور فقط به کلاینتی که کلید معتبر دارد جواب میدهد، پس کاوشگری که دادهٔ تصادفی بفرستد پاسخ مفیدی نمیگیرد.
در شبکههایی که ترافیک ناشناخته را مسدود میکنند یا فقط پروتکلهای شناختهشده را راه میدهند کمکی نمیکند. چنین شبکههایی اغلب ترافیک کاملاً تصادفی را میبندند، پس آن را روی شبکهٔ خودتان امتحان کنید.
چطور کار میکند
- کلید رمزنگاری از نام کاربر، رمز عبور و زمان فعلی ساخته میشود. زمان به گامهای ۲ دقیقهای گرد میشود، پس ساعت کلاینت و سرور باید حداکثر چند دقیقه با هم فاصله داشته باشند. وگرنه اتصال شکست میخورد.
- کلاینت به یکی از port bindingهای سرور، با TCP یا UDP به گفتهٔ همان binding، وصل میشود.
- چند اتصال پروکسیشده میتوانند یک اتصال زیرین را با هم به کار ببرند (
multiplexing). - ترافیک UDP داخل جریان mieru حمل میشود، پس روی binding از نوع TCP هم UDP کار میکند.
- با
handshake_modeبرابرHANDSHAKE_NO_WAIT، کلاینت اولین داده را همراه درخواست اتصال میفرستد (0-RTT). باHANDSHAKE_STANDARDصبر میکند تا سرور به مقصد وصل شود (1-RTT).
پیکربندی
{
"outbounds": [
{
"type": "mieru",
"tag": "mieru-out",
"server": "203.0.113.10",
"portBindings": [
{ "protocol": "TCP", "portRange": "2012-2022" }
],
"username": "alice",
"password": "<password>",
"multiplexing": "MULTIPLEXING_LOW"
}
]
}
فیلدهای خروجی
| فیلد | نوع | پیشفرض | معنی |
|---|---|---|---|
server |
string | الزامی | آدرس IP یا دامنهٔ سرور. |
server_port |
عدد | ندارد | یک پورت سرور. اگر تنظیم شود، portBindings باید دقیقاً یک binding با همین port داشته باشد. معمولاً آن را نگذارید و از portBindings استفاده کنید. |
portBindings |
فهرست | الزامی | پورتهای سرور. پایینتر را ببینید. |
username |
string | الزامی | نام کاربر. |
password |
string | الزامی | رمز عبور. |
multiplexing |
string | "" |
چند اتصال یک اتصال زیرین را با هم به کار ببرند: ""/DEFAULT، LOW، MIDDLE (یا MEDIUM)، HIGH. پیشوند MULTIPLEXING_ اختیاری است. |
handshake_mode |
string | "" |
""/DEFAULT، STANDARD یا NO_WAIT. پیشوند HANDSHAKE_ اختیاری است. |
network |
string | هر دو | tcp، udp یا خالی برای هر دو. اینکه این خروجی کدام نوع ترافیک را میپذیرد. |
| فیلدهای dialer | فیلدهای معمول dialer خروجی، مثل detour. |
فیلدهای port binding (portBindings)
| فیلد | نوع | پیشفرض | معنی |
|---|---|---|---|
protocol |
string | الزامی | TCP یا UDP. |
port |
عدد | ندارد | یک پورت. |
portRange |
string | ندارد | یک بازهٔ پورت، مثل "2012-2022". |
هر binding باید یا port داشته باشد یا portRange، نه هر دو. پورتها بین ۱ و ۶۵۵۳۵ هستند.
فیلدهای ورودی
ورودی mieru یک سرور mieru اجرا میکند. فیلدهای معمول listen را میپذیرد و اینها را:
| فیلد | نوع | پیشفرض | معنی |
|---|---|---|---|
users |
فهرست | الزامی | کاربرها، هر کدام با username و password. |
portBindings |
فهرست | الزامی | پورتهایی که روی آنها گوش میدهد، با همان قالب بالا. |
network |
string | هر دو | tcp، udp یا خالی برای هر دو. |
اگر listen_port تنظیم شود، portBindings باید دقیقاً یک binding با همین port داشته باشد.
نکتهها
- بزرگی و کوچکی حروف مقادیر مهم نیست. مقدار ناشناخته برای
multiplexingیاhandshake_mode، نبودن نام کاربر یا رمز عبور، یا port binding نادرست جلوی بارگذاری کانفیگ را میگیرد و خطا مشکل را نام میبرد. - Mieru از TLS استفاده نمیکند، پس بلوک
tlsبرای آن کاربردی ندارد.