راهنمای جامع راه‌اندازی BIND DNS Resolver روی RHEL 9/Rocky 9/Alma 9
چگونه یک resolver DNS ایمن و بهینه با BIND در توزیع‌های RHEL 9 راه‌اندازی کنیم؟

راهنمای جامع راه‌اندازی BIND DNS Resolver روی RHEL 9/Rocky 9/Alma 9

این راهنما به شما کمک می‌کند تا یک resolver DNS امن و بهینه با BIND روی RHEL 9، Rocky Linux 9 یا Alma Linux 9 راه‌اندازی کنید. با نکات کاربردی، امنیت و بهینه‌سازی کش آشنا می‌شوید و می‌توانید latency را کاهش دهید.
0 اشتراک گذاری
0
0
0
0

آیا می‌خواهید یک resolver محلی و امن روی RHEL 9/ Rocky 9/ Alma 9 راه‌اندازی کنید؟

در این راهنما قدم‌به‌قدم پیاده‌سازی یک resolver (کَش‌کننده‌ی محلی) مبتنی بر BIND روی توزیع‌های مبتنی بر RHEL 9 مانند Rocky Linux 9 و Alma Linux 9 را بررسی می‌کنیم. هدف ارائه یک resolver امن، قابل مانیتورینگ و بهینه برای استفاده در شبکه‌های داخلی، سرورهای ابری و خوشه‌های کاری است — مناسب برای مدیران سایت، DevOps، تریدرها، گیمرها و تیم‌های AI که نیاز به کاهش latency و افزایش پایداری رزولوشن DNS دارند.

پیش‌نیازها و نصب اولیه

پیش‌نیازها

  • سرور RHEL 9/Rocky Linux 9/Alma Linux 9 با دسترسی روت یا sudo.
  • دسترسی به اینترنت برای آپدیت و دانلود root hints/forwarders.
  • پکیج‌های bind و bind-utils.

نصب اولیه

برای به‌روزرسانی و نصب BIND از دستورات زیر استفاده کنید:

sudo dnf update -y
sudo dnf install -y bind bind-utils
sudo systemctl enable --now named
sudo systemctl status named

بررسی فایل‌های پایه و اعتبارسنجی کانفیگ

فایل‌ها و مسیرهای مهم:

  • /etc/named.conf — کانفیگ اصلی
  • /var/named — دایرکتوری پیش‌فرض zoneها
  • /etc/rndc.key (بعد از rndc-confgen -a)
  • /var/named/data — لاگ‌ها و cache dump

برای بررسی سریع کانفیگ از ابزارهای زیر استفاده کنید:

sudo named-checkconf
sudo named-checkzone example.com /var/named/example.com.zone

کانفیگ پیشنهادی برای یک caching resolver (پایه)

در /etc/named.conf بخش options را به شکل زیر ویرایش کنید. این مثال عملیاتی برای یک resolver محلی با محدودسازی پرس‌وجوها و forwarders است:

options {
    directory "/var/named";
    listen-on port 53 { 127.0.0.1; 10.10.10.5; };
    listen-on-v6 { none; };
    allow-query { localhost; localnets; 10.10.10.0/24; };
    recursion yes;
    forwarders { 1.1.1.1; 8.8.8.8; };
    dnssec-validation auto;
    managed-keys-directory "/var/named/dynamic";
    minimal-responses yes;
    max-cache-ttl 86400;
    max-ncache-ttl 3600;
    rate-limit {
        responses-per-second 10;
        window 5;
    };
    auth-nxdomain no;
};

نکات عملی:

  • forwarders را می‌توان به resolverهای Anycast شرکت یا به Cloudflare/Google گذاشت؛ برای کاهش latency توصیه می‌شود از نزدیک‌ترین لوکیشن استفاده کنید.
  • minimal-responses و TTLهای معقول باعث کاهش ترافیک و بهبود کارایی می‌شوند.

تولید کلید RNDC و مدیریت از راه دور

برای مدیریت امن BIND از RNDC استفاده کنید. ابتدا کلید را تولید و سپس سرویس را ری‌استارت کنید:

sudo rndc-confgen -a
sudo systemctl restart named
sudo rndc status

فایروال و SELinux

باز کردن پورت‌ها در firewalld

sudo firewall-cmd --permanent --add-port=53/udp
sudo firewall-cmd --permanent --add-port=53/tcp
sudo firewall-cmd --reload

تنظیمات SELinux

در صورت استفاده از SELinux از دستورات زیر برای تنظیم context و مجوزها بهره ببرید:

sudo restorecon -Rv /var/named
sudo setsebool -P named_write_master_zones on
sudo semanage port -a -t dns_port_t -p tcp 53
sudo semanage port -a -t dns_port_t -p udp 53

امنیت بیشتر: محدودسازی، مانیتورینگ و جلوگیری از سوءاستفاده

منع تکثیر (zone transfer) غیرمجاز

برای جلوگیری از AXFR غیرمجاز در zoneهای authoritative از کلیدهای TSIG استفاده کنید. مثال زیر نشان‌دهنده تعریف کلید و محدودسازی allow-transfer است:

key "xfr-key" {
    algorithm hmac-sha256;
    secret "BASE64-SECRET";
};
zone "example.com" IN {
    type master;
    file "example.com.zone";
    allow-transfer { key "xfr-key"; };
};

راهکارهای مقابله با DDoS و rate-limit

  • از rate-limit در options استفاده کنید.
  • استفاده از RPZ (Response Policy Zone) برای بلاک کردن دامنه‌های مخرب.
  • در سطح شبکه از راهکارهای Anti-DDoS و Anycast/BGP بهره ببرید تا ترافیک مخرب توزیع شود.

DNSSEC و Validation

با فعال کردن dnssec-validation auto، resolver امضای DNSSEC را بررسی می‌کند و پاسخ‌های مخرب رد می‌شوند. مطمئن شوید managed-keys موجود است:

sudo ls /var/named/dynamic

مانیتورینگ، لاگینگ و عیب‌یابی

لاگ‌ها و rotate

BIND به‌صورت پیش‌فرض لاگ را به /var/named/data/ می‌ریزد. برای مدیریت فایل‌ها از logrotate استفاده کنید یا لاگ‌ها را به syslog/journal هدایت نمایید.

دستورات کاربردی

dig @10.10.10.5 example.com +stats
dig @10.10.10.5 google.com +short
sudo rndc flush
sudo named-checkconf
sudo named-checkzone example.com /var/named/example.com.zone
sudo systemctl status named
sudo journalctl -u named -f

سناریوهای پیشرفته: views، split-horizon و سرورهای توزیع‌شده

views برای split-horizon

برای پاسخ‌دهی متفاوت به کلاینت‌های داخلی و خارجی از views استفاده کنید. مثال:

acl "internal" { 10.10.10.0/24; localhost; };
view "internal" {
    match-clients { "internal"; };
    recursion yes;
    zone "example.com" {
        type master;
        file "zones/db.example.internal";
    };
};
view "external" {
    match-clients { any; };
    recursion no;
    zone "example.com" {
        type master;
        file "zones/db.example.public";
    };
};

توزیع جغرافیایی و Anycast

برای سرویس‌هایی با نیاز latency پایین (تریدرها، گیمرها)، توزیع resolverها در لوکیشن‌های مختلف و استفاده از Anycast/BGP بهترین نتیجه را می‌دهد. شرکت ارائه‌دهنده این راهکار دارای بیش از 85 لوکیشن جهانی و زیرساخت Anycast و CDN برای راه‌اندازی resolverهای توزیع‌شده، محافظت DDoS و اتصال BGP است.

نکات عملی برای کاربردهای مختلف

برای مدیران وب‌سایت و وردپرس

  • استفاده از caching resolver داخلی روی سرورهای cloud برای کاهش DNS lookups.
  • تنظیم minimal-responses و معقول‌سازی TTLها برای بهبود سرعت بارگذاری صفحات.
  • ترکیب CDN و DNS برای کاهش latency و افزایش availability توصیه می‌شود.

برای DevOps و کلاسترهای AI / Render

  • اجرای resolver محلی روی هر نود یا یک resolver مرکزی با ظرفیت بالا برای دسترسی سریعتر به registryها و منابع.
  • استفاده از caching DNS در jobهای CI/CD و دانلود پکیج‌ها.
  • در محیط‌های بزرگ از split-horizon برای جداسازی سرویس‌های داخلی و خارجی استفاده کنید.

برای تریدرها و گیمرها

  • قرار دادن resolver در نزدیک‌ترین لوکیشن جغرافیایی از بین 85 لوکیشن برای کاهش پینگ توصیه می‌شود.
  • استفاده از resolverهای Anycast و سرورهای Anti-DDoS برای افزایش ثبات و محافظت در برابر حملات.

نمونه کانفیگ کامل خلاصه (مثال سریع)

تکه مهم از /etc/named.conf:

options {
    directory "/var/named";
    listen-on port 53 { 127.0.0.1; 10.10.10.5; };
    allow-query { localhost; localnets; 10.10.10.0/24; };
    recursion yes;
    forwarders { 1.1.1.1; 8.8.8.8; };
    dnssec-validation auto;
    minimal-responses yes;
    rate-limit { responses-per-second 10; window 5; };
};

نکات پایانی و بهترین روش‌ها

  • همیشه قبل از ری‌استارت named-checkconf و named-checkzone را اجرا کنید.
  • دسترسی را محدود به subnets مشخص کنید؛ از باز گذاشتن resolver به همه خودداری کنید.
  • از کلیدهای TSIG برای zone transfers و rndc-confgen -a برای مدیریت امن استفاده کنید.
  • لاگ‌ها را مانیتور کنید و آستانه‌های alert برای افزایش ترافیک یا خطاها تعریف نمایید.
  • در صورت سرویس‌دهی به عموم از زیرساخت Anti-DDoS و توزیع جغرافیایی بهره ببرید.

چرا این سرویس را در زیرساخت ابری شرکت ارائه‌دهنده پیاده کنید؟

مزایا:

  • استقرار resolverها در لوکیشن‌های جغرافیایی مختلف برای کاهش پینگ و پاسخ‌دهی سریع.
  • حفاظت پیشرفته با Anti-DDoS و فایروال‌های شبکه‌ای.
  • یکپارچگی با CDN و شبکه‌های توزیع‌شده برای افزایش availability و کاهش latency.
  • پلن‌های مدیریت‌شده (Managed DNS) و امکان میزبانی GitLab، دیتابیس و زیرساخت‌های AI.

سؤالات متداول

شاید دوست داشته باشید