یک نیاز رایج: یک سرور واسط دارید با مسیر خوب ولی آیپی خراب، و یک سرور خروجی با آیپی تمیز که مسیر مستقیمش افتضاح است. میخواهید ترافیک اول از واسط رد شود و از سرور خروجی بیرون بزند. mihomo دو راه برای نوشتن این حالت دارد و این دو جای هم را نمیگیرند.
راه اول: گروه relay
سرراستترین راه. در proxy-groups یک گروه از نوع relay بسازید و هاپها را بهترتیب بنویسید:
proxy-groups:
- name: Chain
type: relay
proxies:
- Transit-HK
- Landing-JP
ترافیک بهترتیب همان فهرست میرود: دستگاه شما، بعد Transit-HK، بعد Landing-JP، بعد مقصد. کافی است یک قانون را به Chain اشاره بدهید؛ چیز دیگری لازم نیست.
داخل گروه relay باید نام سرورهای مشخص بیاید، نه نام گروههای دیگر. اگر میخواهید یکی از هاپها قابل تعویض بماند، از dialer-proxy پایین استفاده کنید.
راه دوم: dialer-proxy روی خود سرور
راه منعطفتر. به سرور خروجی فیلد dialer-proxy اضافه کنید تا بگوید اتصالهای خروجیاش اول از کجا رد شوند:
proxies:
- name: Landing-JP
type: vless
server: jp.example.com
port: 443
dialer-proxy: Transit
مقدار Transit میتواند نام یک سرور باشد یا نام یک گروه. اگر نام گروه بگذارید، هاپ واسط قابل تعویض میشود: هر وقت خواستید واسط را عوض میکنید و سرور خروجی سر جایش میماند. گروه relay چنین کاری نمیکند.
اول هزینهاش را حساب کنید
- تأخیر جمع میشود. دو رفتوبرگشت روی هم سوار میشوند. عددی که تست پینگ نشان میدهد مربوط به کل زنجیره است، پس با سرورهای تکهاپی مقایسهاش نکنید.
- پهنای باند کمترین را میگیرد. سرعت زنجیره برابر کندترین هاپ است؛ واسط محدود به ۲۰ مگابیت یعنی کل مسیر ۲۰ مگابیت.
- در دسترس بودن ضرب میشود. هر هاپی که بیفتد، کل زنجیره میافتد.
- UDP باید در همهٔ هاپها باشد. یک هاپ که UDP را عبور ندهد، UDP کل زنجیره را از بین میبرد. برای بازی از UDP و بهینهسازی بازی شروع کنید.
پس زنجیره روش تندتر کردن نیست. فقط وقتی میارزد که واسط واقعاً بخش دوردست مسیر را بهتر کند؛ مثل خط اختصاصی یا ترانزیت BGP خوب. در بقیهٔ حالتها یک هاپ اضافه صرفاً ضرر است.
مطمئن شوید زنجیره واقعاً بسته شده
- اول هاپها را جدا امتحان کنید. یکبار Transit را خروجی بگذارید و اتصال را بسنجید، بعد همان کار را با Landing بکنید. این مرحله را رد کنید، بعداً نمیفهمید کدام نیمه خراب است.
- بعد از بستن زنجیره، صفحهٔ «اتصالها» را باز کنید و یکی از اتصالها را بازتر کنید؛ هر دو نام سرور باید بهترتیب در فیلد زنجیره دیده شوند.
- دستور
curl ip.sbرا بزنید. آیپی برگشتی باید مال سرور خروجی باشد نه واسط.
اگر فقط میخواهید سایتهای خاصی از زنجیره رد شوند، یک قانون را به همان گروه اشاره بدهید؛ نحو نوشتنش در مرجع قوانین سفارشی هست. تفاوت کلی انواع گروه هم در راهنمای ساختار کانفیگ آمده.