در دنیای شبکههای کامپیوتری، سرویس 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 یکی از اجزای کلیدی هر شبکه است و یادگیری آن، برای هر مدیر سیستم یا کارشناس شبکه ضروری محسوب میشود. با رعایت نکات امنیتی، مانیتورینگ منظم و بهروزرسانی مستمر، میتوانید یک سرویس پایدار و ایمن در زیرساخت خود داشته باشید.