آموزش نصب DNS Server در لینوکس

نصب DNS Server در لینوکس

در دنیای شبکه‌های کامپیوتری، سرویس DNS یکی از حیاتی‌ترین اجزای زیرساخت اینترنت به شمار می‌آید. این سرویس وظیفه دارد نام‌های دامنه‌ای که انسان‌ها به‌راحتی آن‌ها را به خاطر می‌سپارند (مانند parsdev.com) را به آدرس‌های IP قابل فهم برای ماشین‌ها (مانند ۱۹۲.۱۶۸.۱.۱۰) تبدیل کند.
در این مطلب، به‌صورت گام‌به‌گام نحوه‌ نصب، پیکربندی و ایمن‌سازی DNS Server در لینوکس را آموزش می‌دهیم. همچنین با انواع DNS، تنظیم Zoneها، بررسی صحت عملکرد و نکات بهینه‌سازی آن آشنا خواهیم شد.

DNS Server چیست و چرا اهمیت دارد؟

DNS یا Domain Name System یک سیستم سلسله‌مراتبی برای ترجمه‌ی نام دامنه‌ها به آدرس IP است. بدون وجود این سیستم، کاربران مجبور بودند برای دسترسی به سایت‌ها، آدرس عددی هر سرور را به خاطر بسپارند که عملاً غیرممکن است.

به‌طور خلاصه، DNS همان دفترچه تلفن اینترنت است که نام‌ها را به شماره‌ها تبدیل می‌کند. این سرویس به‌صورت غیرمتمرکز در سراسر دنیا توزیع شده است و هر بخش از آن مسئول پاسخ‌گویی به بخشی از فضای نام دامنه‌هاست.

وظایف اصلی DNS Server

ترجمه‌ی نام دامنه به IP

ذخیره‌ی موقت (Caching) نتایج پرس‌وجوها برای افزایش سرعت پاسخ‌گویی

پاسخ‌گویی به درخواست‌های Recursive یا Authoritative

نگهداری رکوردهای مهم مانند A، AAAA، MX، CNAME و NS

انواع DNS Server

برای درک بهتر ساختار DNS، باید با انواع سرورهای آن آشنا شویم:

Recursive DNS Server: در سمت کاربر قرار دارد و درخواست‌ها را تا یافتن پاسخ نهایی دنبال می‌کند.

Authoritative DNS Server: منبع اصلی رکوردهای دامنه است و پاسخ معتبر ارائه می‌دهد.

Caching DNS Server: فقط نتایج قبلی را ذخیره می‌کند تا پاسخ‌های بعدی سریع‌تر انجام شوند.

Forwarding DNS Server: درخواست‌های ناموفق را به DNSهای خارجی مثل Google DNS یا Cloudflare ارسال می‌کند.

نرم‌افزار BIND9 می‌تواند هر یک از این نقش‌ها یا ترکیبی از آن‌ها را بر عهده بگیرد.

پیش‌نیازهای نصب DNS Server در لینوکس

پیش از شروع نصب و راه‌اندازی، مطمئن شوید که سرور شما شرایط زیر را دارد:

  • سیستم‌عامل لینوکس (مانند Ubuntu)
  • دسترسی به کاربر root یا sudo
  • اینترنت فعال برای دریافت پکیج‌ها
  • آشنایی مقدماتی با خط فرمان (Terminal)
  • داشتن IP استاتیک

نکته مهم: DNS Server باید IP ثابت داشته باشد. در غیر این صورت، کاربران هنگام پرس‌وجو به خطا برمی‌خورند.

برای مشاهده‌ی IP فعلی سیستم از دستور زیر استفاده کنید:

ip a

معرفی نرم‌افزار BIND9

پرکاربردترین نرم‌افزار برای راه‌اندازی DNS در لینوکس، سرویس BIND (مخفف Berkeley Internet Name Domain) است. نسخه نهم آن با نام BIND9 شناخته می‌شود و تقریبا روی تمام توزیع‌های مدرن لینوکس پشتیبانی می‌گردد.

ویژگی‌های مهم BIND9:

  • پشتیبانی از IPv6
  • امنیت بالا با قابلیت DNSSEC
  • امکان اجرا به‌صورت Master و Slave
  • قابلیت لاگ‌گیری و کشینگ
  • تنظیم Zoneهای داخلی و خارجی

مراحل نصب DNS Server در Ubuntu

ابتدا بسته‌های سیستم را به‌روزرسانی کنید:

sudo apt update && sudo apt upgrade -y

سپس سرویس BIND9 را نصب نمایید:

sudo apt install bind9 bind9utils bind9-dnsutils -y

بعد از نصب، سرویس را فعال و اجرا کنید:

sudo systemctl enable bind9
sudo systemctl start bind9

برای اطمینان از وضعیت سرویس:

sudo systemctl status bind9

پیکربندی Zoneها در BIND9

فایل‌های پیکربندی اصلی در Ubuntu معمولا در مسیر زیر قرار دارند:

/etc/bind/named.conf
/etc/bind/named.conf.local
/etc/bind/named.conf.options

برای ایجاد Zone جدید، فایل named.conf.local را باز کنید:

sudo nano /etc/bind/named.conf.local

و خطوط زیر را اضافه نمایید:

zone "example.com" {
type master;
file "/etc/bind/db.example.com";
};

اکنون باید فایل Zone مربوطه را ایجاد کنید:

sudo cp /etc/bind/db.local /etc/bind/db.example.com
sudo nano /etc/bind/db.example.com

محتوای فایل نمونه:

$TTL 604800
@ IN SOA ns1.example.com. admin.example.com. (
۳ ; Serial
۶۰۴۸۰۰ ; Refresh
۸۶۴۰۰ ; Retry
۲۴۱۹۲۰۰ ; Expire
۶۰۴۸۰۰ ) ; Negative Cache TTL
;
@ IN NS ns1.example.com.
@ IN A 192.168.1.10
ns1 IN A 192.168.1.10
www IN A 192.168.1.10
mail IN A 192.168.1.10
@ IN MX 10 mail.example.com.

پیکربندی Reverse DNS Zone (PTR Record)

Reverse DNS برای ترجمه‌ی IP به نام دامنه استفاده می‌شود و در بسیاری از سرویس‌های ایمیل و امنیت شبکه ضروری است.

ابتدا فایل پیکربندی Reverse Zone را اضافه کنید:

sudo nano /etc/bind/named.conf.local

و این بخش را بیفزایید:

zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192.168.1";
};

سپس فایل مربوطه را بسازید:

sudo cp /etc/bind/db.127 /etc/bind/db.192.168.1
sudo nano /etc/bind/db.192.168.1

محتوای فایل:

$TTL 604800
@ IN SOA ns1.example.com. admin.example.com. (
۱ ; Serial
۶۰۴۸۰۰ ; Refresh
۸۶۴۰۰ ; Retry
۲۴۱۹۲۰۰ ; Expire
۶۰۴۸۰۰ ) ; Negative Cache TTL
;
@ IN NS ns1.example.com.
۱۰ IN PTR example.com.

برای تست عملکرد، از دستور زیر استفاده کنید:

dig -x 192.168.1.10

تنظیم DNS Forwarders

درصورتی‌که DNS سرور شما نتواند رکوردی را پیدا کند، می‌تواند درخواست را به DNS دیگری فوروارد کند.
برای این کار فایل زیر را باز کنید:

sudo nano /etc/bind/named.conf.options

و در بخش options، موارد زیر را اضافه کنید:

forwarders {
۸.۸.۸.۸;
۱.۱.۱.۱;
};

سپس سرویس را ریستارت کنید:

sudo systemctl restart bind9

بررسی صحت عملکرد DNS

برای بررسی پیکربندی:

</pre>
sudo named-checkconf
sudo named-checkzone example.com /etc/bind/db.example.com
<pre>

در صورت عدم وجود خطا، سرویس را ریستارت کنید:

sudo systemctl restart bind9

برای تست عملکرد:

dig @localhost example.com
nslookup example.com 127.0.0.1

اگر پاسخ شامل IP موردنظر بود، تنظیمات به درستی انجام شده‌اند.

نکات امنیتی در DNS Server

DNS یکی از اهداف محبوب حملات سایبری است؛ از جمله DNS Spoofing، Cache Poisoning و Amplification Attack.
برای افزایش امنیت:

دسترسی به Zone Transfer را محدود کنید.

سرویس را با کاربر محدود اجرا کنید.

DNSSEC را فعال کنید.

از فایروال برای محدود کردن پورت ۵۳ استفاده کنید.

BIND را به‌صورت منظم به‌روزرسانی کنید.

نمونه تنظیم فایروال در Ubuntu:

sudo ufw allow 53/tcp
sudo ufw allow 53/udp
sudo ufw reload

 

مانیتورینگ و بهینه‌سازی DNS Server

برای بررسی وضعیت عملکرد:

sudo journalctl -u bind9

فعال‌سازی Query Logging:

sudo rndc querylog on

در صورت نیاز به Debug:

sudo named -g -d 3

برای عملکرد بهتر:

  • حافظه کش را محدود کنید.
  • لاگ‌ها را به‌صورت دوره‌ای چرخش (rotation) دهید.
  • Zoneهای غیرضروری را حذف کنید.
  • از ابزارهای مانیتورینگ مانند Zabbix یا Prometheus برای پایش وضعیت استفاده کنید.

عیب‌یابی مشکلات رایج

اگر DNS پاسخ نمی‌دهد:

  • اطمینان حاصل کنید که سرویس فعال است.
  • آدرس IP سرور با رکوردهای Zone هم‌خوانی دارد.
  • فایل Zone فاقد خطای سینتکسی است.
  • پورت ۵۳ در فایروال باز است.

جمع‌بندی

در این آموزش یاد گرفتیم چگونه با استفاده از BIND9، یک DNS Server قدرتمند و امن در لینوکس راه‌اندازی کنیم. از نصب پکیج‌ها و ساخت Zone File گرفته تا تنظیم Reverse Zone و فعال‌سازی Forwarders، تمام مراحل به‌صورت گام‌به‌گام توضیح داده شد.

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

نوشتن نظر

نوشتن دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *