Comprehensive guide to setting up BIND DNS Resolver on RHEL 9/Rocky 9/Alma 9
چگونه یک resolver DNS ایمن و بهینه با BIND در توزیع‌های RHEL 9 راه‌اندازی کنیم؟

Comprehensive guide to setting up BIND DNS Resolver on RHEL 9/Rocky 9/Alma 9

This guide will help you set up a secure and optimized DNS resolver with BIND on RHEL 9, Rocky Linux 9, or Alma Linux 9. You will learn practical tips, security, and cache optimization, and you can reduce latency.
0 Shares
0
0
0
0

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

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

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

Prerequisites

  • Server RHEL 9/Rocky Linux 9/Alma Linux 9 با دسترسی روت یا sudo.
  • دسترسی به اینترنت برای آپدیت و دانلود root hints/forwarders.
  • پکیج‌های bind and 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 (پایه)

In /etc/named.conf Section 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;
};

Practical tips:

  • 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

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

DNSSEC و Validation

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

sudo ls /var/named/dynamic

Monitoring, logging and troubleshooting

لاگ‌ها و 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 global locations و زیرساخت Anycast و CDN برای راه‌اندازی resolverهای توزیع‌شده، محافظت DDoS و اتصال BGP است.

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

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

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

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

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

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

  • قرار دادن resolver در نزدیک‌ترین لوکیشن جغرافیایی از بین 85 locations برای کاهش پینگ توصیه می‌شود.
  • استفاده از 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; };
};

Final Tips and Best Practices

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

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

Advantages:

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

Frequently Asked Questions

You May Also Like