نودهای رله
مسائلی که نودهای رله حل میکنند
هنگامی که IP سرور خروجی شما مسدود شود، کلاینتها دسترسی را از دست میدهند. یک نود رله یک نقطه ورودی داخلی برای آنها فراهم میکند که مسدود کردن آن سختتر است:
کلاینت → رله (IP داخلی) → سرور خروجی (خارج) → اینترنت
سانسورکنندگان ترافیک را به IP داخلی میبینند. رله TCP خام را به سرور خروجی ارسال میکند — تمام رمزگذاری بین کلاینت و سرور خروجی end-to-end است. رله هرگز متن ساده را نمیبیند.
چگونه نودهای رله کار میکنند
یک رله Realm را اجرا میکند، یک forwarder TCP سبکوزن و بدون کپی (~5 مگابایت Rust باینری). به پورت 443 (قابل پیکربندی) گوش میدهد و تمام ترافیک را به پورت 443 سرور خروجی ارسال میکند. بدون Docker، بدون نرمافزار VPN، بدون پنل مدیریتی.
تمام پروتکلها از طریق رله کار میکنند:
- Reality — دستدهی end-to-end، رله کاملاً شفاف است
- XHTTP — مسیریابی شده از طریق رله با پارامتر صریح
sni= - WSS — حالت دامنه، مسیریابی شده با
sni=domain&host=domain
استقرار یک رله
ابتدا سرور خروجی را به طور عادی استقرار دهید. سپس یک رله به آن اشاره را استقرار دهید:
meridian relay deploy RELAY_IP --exit EXIT_IP
Provisioner:
- بستههای مورد نیاز را نصب میکند و BBR را فعال میکند
- firewall UFW را پیکربندی میکند (اجازه SSH + پورت رله)
- Realm باینری را دانلود میکند (نسخه ثابتشده، SHA256-تأییدشده)
- پیکربندی Realm را نوشته و سرویس systemd را شروع میکند
- اتصال رله → خروجی را تأیید میکند
پرچمها
| پرچم | پیشفرض | توضیح |
|---|---|---|
--exit/-e EXIT | (الزامی) | IP یا نام سرور خروجی |
--name NAME | (خودکار) | نام دوستانه برای رله (مثلاً ru-moscow) |
--port/-p PORT | 443 | پورت گوشدهی روی سرور رله |
--user/-u USER | root | کاربر SSH روی سرور رله |
--yes/-y | پرسشهای تأیید را رد کنید |
مثال با تمام گزینهها
meridian relay deploy 10.0.0.5 --exit 1.2.3.4 --name ru-moscow --port 443 --user ubuntu
چگونه کلاینتها اتصال برقرار میکنند
پس از استقرار یک رله، تمام صفحات اتصال کلاینت موجود بهطور خودکار دوباره تولید میشوند. URLهای رله به عنوان اتصال توصیهشده نشان داده میشوند، URLهای مستقیم به عنوان پشتیبان.
هنگام افزودن کلاینتهای جدید، URLهای رله بهطور خودکار شامل میشوند:
meridian client add alice --server 1.2.3.4 # URLهای رله شامل هستند
مدیریت نودهای رله
meridian relay list # تمام نودهای رله در تمام سرورهای خروجی
meridian relay list --exit 1.2.3.4 # نودهای رله برای یک خروجی خاص
meridian relay check RELAY_IP # بررسی سلامت 4 نقطهای
meridian relay remove RELAY_IP # توقف سرویس + حذف از پیکربندی
بررسی سلامت
meridian relay check چهار چیز را آزمایش میکند:
| بررسی | آنچه که آزمایش میشود |
|---|---|
| SSH به رله | آیا میتوانید به سرور رله متصل شوید؟ |
| سرویس Realm | آیا سرویس systemd فعال است؟ |
| رله → خروجی TCP | آیا رله میتواند سرور خروجی را در پورت 443 برسد؟ |
| محلی → رله TCP | آیا ماشین شما میتواند رله را در پورت گوشدهی خود برسد؟ |
حذف یک رله
meridian relay remove RELAY_IP [--exit EXIT_IP] [--yes]
این سرویس Realm را متوقف میکند، رله را از اعتبارات سرور خروجی حذف میکند و تمام صفحات اتصال کلاینت را دوباره تولید میکند (بازگشت به URLهای مستقیم تنهایی).
رلههای متعدد
میتوانید چندین رله را به یک سرور خروجی متصل کنید — برای مثال، رلههایی در شهرهای مختلف یا ISPهای مختلف:
meridian relay deploy 10.0.0.5 --exit 1.2.3.4 --name ru-moscow
meridian relay deploy 10.0.0.6 --exit 1.2.3.4 --name ru-spb
کلاینتها تمام گزینههای رله را در صفحه اتصال خود میبینند.
حل مسائل
تضاد پورت
یک سرویس دیگر از پورت 443 روی رله استفاده میکند. با ss -tlnp sport = :443 بررسی کنید و سرویس متضاد را متوقف کنید، یا از پورت دیگری با --port 8443 استفاده کنید.
مسدودسازی Firewall
اطمینان حاصل کنید که پورت 443 روی firewall تأمین کننده ابری رله / گروه امنیتی باز است، نه تنها UFW.
سرور خروجی غیرقابل دسترسی است
رله باید بتواند سرور خروجی را در پورت 443 برسد. با curl -I https://EXIT_IP از رله آزمایش کنید، یا meridian relay check را اجرا کنید.
سرویس رله شروع نشده است
سرویس Realm را بررسی کنید: systemctl status meridian-relay. لاگها را مشاهده کنید: journalctl -u meridian-relay --no-pager -n 20.