مسیریابی و DNS
مسیریابی تعیین میکند با هر اتصالی که به نود میرسد چه شود: کدام اوتباند آن را میبرد، یا مسدود شود یا نه. DNS تعیین میکند نود نامها را چطور ترجمه کند. هر دو بخشی از یک قالب هستند، در زبانههای روتینگ و DNS آن، پس همهی نودهای روی آن قالب به یک شکل مسیریابی میکنند.
مسیریابی چطور کار میکند
نود برای هر اتصال تازه قانونها را از بالا به پایین بررسی میکند. اولین قانونی که تطبیق کند تصمیم میگیرد. اتصالی که با هیچ قانونی تطبیق نکند به خروجی نهایی میرود.
بدون هیچ قانونی، همه چیز به خروجی نهایی میرود، که اگر چیز دیگری انتخاب نکنید همان direct داخلی است. این شروع معقولی است: فقط برای ترافیکی قانون اضافه کنید که باید جای دیگری برود.
نوشتن قانونها
در زبانهی روتینگ قالب:
- زیر رولستها، فهرستهایی را که قانونهایتان با آنها تطبیق میدهند انتخاب کنید. فقط رولستهای انتخابشده میتوانند در یک قانون نام برده شوند. رولستها را ببینید.
- روی افزودن قانون کلیک کنید.
- زیر تطبیق، تعیین کنید قانون با چه چیزی تطبیق دهد.
- اقدام را انتخاب کنید، و برای
route، خروجی را. - قانون را ذخیره کنید، و بعد قالب را.
فهرست قانونها را به همان ترتیبی که نود بررسیشان میکند شماره میزند. قانون تازه در انتها اضافه میشود؛ برای تغییر ترتیب، آن را در زبانهی JSON جابهجا کنید.
قانون با چه چیزهایی میتواند تطبیق دهد
یک قانون میتواند چند شرط تطبیق را با هم ترکیب کند. همهی آنها باید برقرار باشند، مگر اینکه Invert match را تیک بزنید. نام این فیلدها در همهی زبانها انگلیسی است.
| شرط | با چه تطبیق میدهد |
|---|---|
| Domain، Domain suffix، Domain keyword، Domain regex | نام مقصد |
| IP CIDR، IP is private، IP version | آدرس مقصد |
| Port، Port range | پورت مقصد |
| Rule set | هر فهرستی که قالب انتخاب کرده؛ Rule set matches source IP بهجای آن آدرس کاربر را با فهرست مقایسه میکند |
| Network | tcp یا udp |
| Protocol | آنچه sniff تشخیص داده: tls، http، quic، dns، bittorrent و غیره |
| Inbound | تگ اینباندی که اتصال از آن وارد شده |
| Auth user (panel user) | نام حساب کاربر |
| Source IP CIDR، Source port، Source IP is private | اینکه اتصال از کجا میآید |
قانونهایی دربارهی چیزهایی که فقط اپ گوشی یا دسکتاپ میتواند ببیند، مثل پردازهی اپ یا شبکهی Wi-Fi، هنگام ذخیره رد میشوند: نود هرگز آنها را نمیبیند، پس چنین قانونی هرگز تطبیق نمیکرد.
اقدامها
| اقدام | اثر |
|---|---|
route | اتصال را به اوتباند انتخابشده میفرستد. |
reject | اتصال را رد میکند. |
sniff | ابتدای اتصال را میخواند تا پروتکل و دامنهاش را تشخیص دهد، و بعد سراغ قانون بعدی میرود. |
resolve | دامنه را ترجمه میکند، تا قانونهای آدرس بعدی بتوانند با آن تطبیق دهند. |
hijack-dns | با DNS خود نود به اتصال بهعنوان یک پرسوجوی DNS پاسخ میدهد. |
route-options | گزینههای اتصال را بدون انتخاب اوتباند تنظیم میکند. |
تشخیص پروتکل (sniff)
بسیاری از اتصالها با یک آدرس و بدون نام میرسند. قانون sniff نام سرور TLS یا میزبان HTTP، و پروتکل را، از ابتدای اتصال میخواند. قانونهای بعد از آن میتوانند بر اساس دامنه و Protocol تطبیق دهند. وقتی قانونهای بعدی با دامنه یا پروتکل تطبیق میدهند، قانون sniff را اول بگذارید.
sniff فقط تشخیص است، نه تضمین: ترافیکی که آن را نشناسد بدون تطبیق به قانون بعدی میرود.
خروجی نهایی
خروجی نهایی هر اتصالی را که با هیچ قانونی تطبیق نکرده میگیرد. این پیشفرض نودهای روی آن قالب است. دو چیز آن را روی یک نود بازنویسی میکنند: مسیریابی خود نود (پایینتر)، و نودی که دقیقاً رلهی یک تونل است، که آن تونل را خروجی نهاییاش میکند.
وقتی فرم کافی نیست
زبانهی JSON کل بلوک مسیریابی را دقیقاً همانطور که نودها دریافت میکنند نشان میدهد. شکلی را که فرم ارائه نمیکند آنجا بنویسید. پنل همچنان گزینههایی را که باعث شوند نود پیکربندی را رد کند نمیپذیرد.
DNS
زبانهی DNS قالب ریزالورهایی را تعیین میکند که نود برای پرسوجوهای خودش استفاده میکند: برای قانونهای resolve، برای اوتباندهایی که با نام به یک سرور وصل میشوند، و برای hijack-dns.
سرورها را با افزودن سرور اضافه کنید و نوعشان را انتخاب کنید: UDP یا TCP ساده، tls، https، quic یا h3 رمزنگاریشده، ریزالور سیستم خود نود (local)، فایل hosts آن (hosts)، dhcp، یا fakeip. یک سرور میتواند پرسوجوهایش را با خروجی (detour) از راه یک اوتباند بفرستد. قانونهای DNS، زیر سرورها، نامهای انتخابشده را به سرورهای انتخابشده میفرستند.
وقتی قالبی بیش از یک سرور DNS تعریف میکند، در زبانهی روتینگ یک ریزالور دامنهٔ پیشفرض تعیین کنید. بدون آن، نود نمیتواند نام سرورهای اوتباند را ترجمه کند و کل پیکربندی را رد میکند. ویرایشگر وقتی این تنظیم نباشد هشدار میدهد.
پیشتنظیمها
از روی پیشتنظیم، در زبانههای روتینگ و DNS، یک بلوک آماده را اعمال میکند. برای فهرست آنها قالبها را ببینید.
- یک پیشتنظیم مسیریابی قانونهای قالب را جایگزین میکند، چون ترتیب قانونها خود مسیریابی است. مسدودسازی تورنت استثناست و جلوی قانونهای شما اضافه میشود. رولستهایی که پیشتنظیم لازم دارد به انتخاب اضافه میشوند.
- یک پیشتنظیم DNS بلوک DNS را با Cloudflare، Google، Quad9 یا AdGuard روی DNS-over-TLS، یا ریزالور سیستم نود، جایگزین میکند.
فهرستهایی که پیشتنظیم لازم دارد
پیشتنظیم فقط به اندازهی فهرستهایش خوب است. اگر پنل از فهرستی که پیشتنظیم استفاده میکند نسخهای نداشته باشد، آن فهرست و هر قانونی را که با آن تطبیق میدهد کنار میگذارد، و پیشتنظیم بیصدا هیچ کاری نمیکند. برای همین پنجره اول بررسی میکند:
- فهرستی که هنوز ندارید نام برده میشود، و افزودن فهرستها و اعمال اول آن را دانلود میکند؛
- فهرستی که پنل در فهرستش دارد اما نسخهای از آن ندارد نام برده میشود، و اول آن را در صفحهی رولستها درست میکنید؛
- فهرستی که فهرست پیشتنظیمها هیچ منبعی برایش نمیدهد مستقیماً رد میشود.
مسدود کردن تورنت
مسدودسازی تورنت یک قانون sniff اضافه میکند و آنچه شبیه BitTorrent است را به یک اوتباند مسدودکننده به نام block-torrent میفرستد. نود آنچه را مسدود میکند میشمارد: این عدد روی ردیف نود و در متریکهای پنل هست، و بالاتر از نرخی که تعیین میکنید یک رویداد node.rejections_high ایجاد میکند.
این کار در حد توان است. sniff دستدهی BitTorrent را میشناسد، و کلاینتهایی که آن را رمزنگاری میکنند، که بیشترشان بهطور پیشفرض این کار را میکنند، عبور میکنند. شمارنده را بهعنوان آنچه گرفته شده بخوانید، نه همهی آنچه بوده.
پیشتنظیمهای کشوری
ایران + مسدودسازی تبلیغات، چین + مسدودسازی تبلیغات و روسیه + مسدودسازی تبلیغات دامنهها و آدرسهای آن کشور را مستقیم از نود بیرون میفرستند، تا ترافیک داخلی جلوتر نرود، و فهرست تبلیغات را رد میکنند. روی یک رله این کار ترافیک محلی را از تونل دور نگه میدارد. نتیجه به اندازهی کامل بودن فهرستهای کشوری کامل است؛ اگر پوشش کاملتری لازم دارید، فهرست پیشتنظیمها را به فهرست کاملتری اشاره دهید (پایینتر).
پیشتنظیمهای خودتان
قفسههای پیشتنظیم (رولستها، اینباندها، مسیریابی و DNS) از فهرستی میآیند که پنل سرو میکند. میتوانید بدون منتظر ماندن برای یک نسخهی تازه، به آن اضافه کنید یا موردهایی از آن را جایگزین کنید:
- یک فایل
.jsonدر پوشهی پیشتنظیمها بگذارید: در نصب استاندارد/var/opt/nexora/presets/، یا پوشهای که زیر تنظیمات ← عمومی ← کاتالوگ پیشتنظیمها ← پوشهٔ کاتالوگ تعیین شده. - پنجرهی پیشتنظیمها را دوباره باز کنید. ریاستارت لازم نیست.
هر فایل *.json آنجا به ترتیب نام فایل با فهرست داخلی ادغام میشود. موردی با کلید یا تگ تازه اضافه میشود؛ موردی با کلید یا تگ موجود جای مورد داخلی را میگیرد. فایلی که خوانده نشود رد میشود و در لاگ پنل ثبت میشود، و صفحهی تنظیمات فایلهای در حال اعمال را نشان میدهد.
برای نمونه، فایلی که یک کشور را از یک آینهی تحت کنترل شما به قفسهی رولستها اضافه میکند:
{
"version": 1,
"ruleSets": {
"countries": [
{
"key": "tr",
"label": "Turkey",
"items": [
{ "tag": "geoip-tr", "url": "https://mirror.example.com/geoip-tr.srs", "label": "IP ranges" }
]
}
]
}
}یک مورد کشوری جای مورد داخلی با همان key را بهطور کامل میگیرد، پس برای اشاره دادن یکی از فهرستهای یک کشور داخلی به جای دیگر، بقیهی فهرستهای آن کشور را هم در مورد خودتان تکرار کنید. سرویسهای رولست بر اساس tag ادغام میشوند؛ پیشتنظیمهای اینباند، مسیریابی و DNS بر اساس key.
مسیریابی خود نود
یک نود میتواند مسیریابی قالبش را با مسیریابی خودش جایگزین کند. پنل پیکربندی نود را از ردیفش باز کنید و روتینگ (بازنویسی برای این نود) را پر کنید. این فقط روی همان نود بر قالب غلبه میکند، از جمله خروجی نهاییاش. از آن برای تنها سروری استفاده کنید که باید متفاوت مسیریابی کند، و بقیهی چیزها را در قالب نگه دارید.
بررسی یک مسیر
آزمون مسیر، در منوی ردیف یک نود یا کاربر، قانونهای خود نود را برای اتصالی که توصیف میکنید (مقصد، پورت، و در صورت تمایل پروتکل و دامنهی sniffشده) طی میکند و قانون و اوتباندی را که آن را میگیرند نام میبرد. آزمون و اتصال هم یک اتصال واقعی از نود در همان مسیر باز میکند. نودها را ببینید.
مرتبط
- رولستها: فهرستهایی که قانونها با آنها تطبیق میدهند.
- اوتباندها: قانونها ترافیک را به کجا میفرستند.
- قالبها: مسیریابی و DNS کجا قرار دارند.
- مسیر یک بسته: مسیری که یک اتصال درون نود طی میکند.
