Skip to content

مسیریابی و DNS ​

مسیریابی تعیین می‌کند با هر اتصالی که به نود می‌رسد چه شود: کدام اوتباند آن را می‌برد، یا مسدود شود یا نه. DNS تعیین می‌کند نود نام‌ها را چطور ترجمه کند. هر دو بخشی از یک قالب هستند، در زبانه‌های روتینگ و DNS آن، پس همه‌ی نودهای روی آن قالب به یک شکل مسیریابی می‌کنند.

مسیریابی چطور کار می‌کند ​

نود برای هر اتصال تازه قانون‌ها را از بالا به پایین بررسی می‌کند. اولین قانونی که تطبیق کند تصمیم می‌گیرد. اتصالی که با هیچ قانونی تطبیق نکند به خروجی نهایی می‌رود.

بدون هیچ قانونی، همه چیز به خروجی نهایی می‌رود، که اگر چیز دیگری انتخاب نکنید همان direct داخلی است. این شروع معقولی است: فقط برای ترافیکی قانون اضافه کنید که باید جای دیگری برود.

نوشتن قانون‌ها ​

در زبانه‌ی روتینگ قالب:

  1. زیر رول‌ست‌ها، فهرست‌هایی را که قانون‌هایتان با آن‌ها تطبیق می‌دهند انتخاب کنید. فقط رول‌ست‌های انتخاب‌شده می‌توانند در یک قانون نام برده شوند. رول‌ست‌ها را ببینید.
  2. روی افزودن قانون کلیک کنید.
  3. زیر تطبیق، تعیین کنید قانون با چه چیزی تطبیق دهد.
  4. اقدام را انتخاب کنید، و برای route، خروجی را.
  5. قانون را ذخیره کنید، و بعد قالب را.

فهرست قانون‌ها را به همان ترتیبی که نود بررسی‌شان می‌کند شماره می‌زند. قانون تازه در انتها اضافه می‌شود؛ برای تغییر ترتیب، قانون را از دستگیره‌ی ابتدای ردیفش بکشید. با صفحه‌کلید، روی دستگیره بروید و کلید جهت‌نمای بالا یا پایین را بزنید.

قانون با چه چیزهایی می‌تواند تطبیق دهد ​

یک قانون می‌تواند چند شرط تطبیق را با هم ترکیب کند. همه‌ی آن‌ها باید برقرار باشند، مگر این‌که 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 به‌جای آن آدرس کاربر را با فهرست مقایسه می‌کند
Networktcp یا 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 از بالا به پایین بررسی می‌شوند. بدون Final server، اولین سرور به هر پرس‌وجویی که هیچ قانونی آن را نگیرد پاسخ می‌دهد. قانونی که روی پاسخ تطبیق می‌دهد (match_response) یک قانون evaluate بالای خودش لازم دارد؛ اگر بالاتر از آن برده شود با ترتیب نادرست علامت می‌خورد و تا سر جایش برنگردد قالب ذخیره نمی‌شود، چون نود کل پیکربندی را به خاطر آن رد می‌کند.

وقتی قالبی بیش از یک سرور DNS تعریف می‌کند، در زبانه‌ی روتینگ یک ریزالور دامنهٔ پیش‌فرض تعیین کنید. بدون آن، نود نمی‌تواند نام سرورهای اوتباند را ترجمه کند و کل پیکربندی را رد می‌کند. ویرایشگر وقتی این تنظیم نباشد هشدار می‌دهد.

پیش‌تنظیم‌ها ​

از روی پیش‌تنظیم، در زبانه‌های روتینگ و DNS، یک بلوک آماده را اعمال می‌کند. برای فهرست آن‌ها قالب‌ها را ببینید.

  • یک پیش‌تنظیم مسیریابی قانون‌های قالب را جایگزین می‌کند، چون ترتیب قانون‌ها خود مسیریابی است. مسدودسازی تورنت استثناست و جلوی قانون‌های شما اضافه می‌شود. رول‌ست‌هایی که پیش‌تنظیم لازم دارد به انتخاب اضافه می‌شوند.
  • یک پیش‌تنظیم DNS بلوک DNS را با Cloudflare، Google، Quad9 یا AdGuard روی DNS-over-TLS، یا ریزالور سیستم نود، جایگزین می‌کند.

فهرست‌هایی که پیش‌تنظیم لازم دارد ​

پیش‌تنظیم فقط به اندازه‌ی فهرست‌هایش خوب است. اگر پنل از فهرستی که پیش‌تنظیم استفاده می‌کند نسخه‌ای نداشته باشد، آن فهرست و هر قانونی را که با آن تطبیق می‌دهد کنار می‌گذارد، و پیش‌تنظیم بی‌صدا هیچ کاری نمی‌کند. برای همین پنجره اول بررسی می‌کند:

  • فهرستی که هنوز ندارید نام برده می‌شود، و افزودن فهرست‌ها و اعمال اول آن را دانلود می‌کند؛
  • فهرستی که پنل در فهرستش دارد اما نسخه‌ای از آن ندارد نام برده می‌شود، و اول آن را در صفحه‌ی رول‌ست‌ها درست می‌کنید؛
  • فهرستی که فهرست پیش‌تنظیم‌ها هیچ منبعی برایش نمی‌دهد مستقیماً رد می‌شود.

مسدود کردن تورنت ​

مسدودسازی تورنت یک قانون sniff اضافه می‌کند و آنچه شبیه BitTorrent است را به یک اوتباند مسدودکننده به نام block-torrent می‌فرستد. نود آنچه را مسدود می‌کند می‌شمارد: این عدد روی ردیف نود و در متریک‌های پنل هست، و بالاتر از نرخی که تعیین می‌کنید یک رویداد node.rejections_high ایجاد می‌کند.

این کار در حد توان است. sniff دست‌دهی BitTorrent را می‌شناسد، و کلاینت‌هایی که آن را رمزنگاری می‌کنند، که بیشترشان به‌طور پیش‌فرض این کار را می‌کنند، عبور می‌کنند. شمارنده را به‌عنوان آنچه گرفته شده بخوانید، نه همه‌ی آنچه بوده.

پیش‌تنظیم‌های کشوری ​

ایران + مسدودسازی تبلیغات، چین + مسدودسازی تبلیغات و روسیه + مسدودسازی تبلیغات دامنه‌ها و آدرس‌های آن کشور را مستقیم از نود بیرون می‌فرستند، تا ترافیک داخلی جلوتر نرود، و فهرست تبلیغات را رد می‌کنند. روی یک رله این کار ترافیک محلی را از تونل دور نگه می‌دارد. نتیجه به اندازه‌ی کامل بودن فهرست‌های کشوری کامل است؛ اگر پوشش کامل‌تری لازم دارید، فهرست پیش‌تنظیم‌ها را به فهرست کامل‌تری اشاره دهید (پایین‌تر).

پیش‌تنظیم‌های خودتان ​

قفسه‌های پیش‌تنظیم (رول‌ست‌ها، اینباندها، مسیریابی و DNS) از فهرستی می‌آیند که پنل سرو می‌کند. می‌توانید بدون منتظر ماندن برای یک نسخه‌ی تازه، به آن اضافه کنید یا موردهایی از آن را جایگزین کنید:

  1. یک فایل .json در پوشه‌ی پیش‌تنظیم‌ها بگذارید: در نصب استاندارد /var/opt/nx-panel/presets/، یا پوشه‌ای که زیر تنظیمات ← عمومی ← کاتالوگ پیش‌تنظیم‌ها ← پوشهٔ کاتالوگ تعیین شده.
  2. پنجره‌ی پیش‌تنظیم‌ها را دوباره باز کنید. ری‌استارت لازم نیست.

هر فایل *.json آن‌جا به ترتیب نام فایل با فهرست داخلی ادغام می‌شود. موردی با کلید یا تگ تازه اضافه می‌شود؛ موردی با کلید یا تگ موجود جای مورد داخلی را می‌گیرد. فایلی که خوانده نشود رد می‌شود و در لاگ پنل ثبت می‌شود، و صفحه‌ی تنظیمات فایل‌های در حال اعمال را نشان می‌دهد.

برای نمونه، فایلی که یک کشور را از یک آینه‌ی تحت کنترل شما به قفسه‌ی رول‌ست‌ها اضافه می‌کند:

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شده) طی می‌کند و قانون و اوتباندی را که آن را می‌گیرند نام می‌برد. آزمون و اتصال هم یک اتصال واقعی از نود در همان مسیر باز می‌کند. نودها را ببینید.

متن و تصویرها با مجوز CC BY 4.0.