اگر میخواهید روی Ubuntu یک DNS Server اختصاصی داشته باشید، این مطلب از مجلۀ ویپیاس مارکت که دربارۀ آموزش نصب BIND9 است، مسیر کار را از نصب بستهها گرفته تا ساخت Zone و تست DNS نشان میدهد. در ادامه، این آموزش را مرحلهبهمرحله پیش میبریم تا در پایان یک DNS Server Authoritative برای دامنۀ خود داشته باشید.
لطفا دقت داشته باشید که نسخۀ مرجع این آموزش: Ubuntu 24.04 LTS است.
BIND9 چیست و چه کاربردی دارد؟
BIND9 یکی از نرمافزارهای شناختهشده برای راهاندازی DNS Server در لینوکس است و میتواند بهعنوان Resolver ،Caching Server یا DNS Server اصلی دامنه استفاده شود. در حالت Authoritative، رکوردهای Zone مانندA، MX ، NS و CNAME روی سرور نگهداری میشوند و bind9 پاسخ درخواستهای همان دامنه را از روی این رکوردها برمیگرداند. همچنین از BIND9 میتوان برای دامنههای واقعی، محیطهای آزمایشی، شبکههای داخلی و زیرساختهای سازمانی استفاده کرد.
BIND9 روی VPS به چه منابعی نیاز دارد؟
BIND9 برای یک DNS Server معمولی منابع سنگینی نمیخواهد و نیاز واقعی آن بیشتر به RAM، CPU و پهنای باند به تعداد Zoneها و حجم Queryها بستگی دارد. البته توجه داشته باشید که برای چند دامنه یا محیط آزمایشی، VPS پایه معمولاً کافی است، اما در ترافیک بالا، ظرفیت شبکه، پایداری IP و DNS Server ثانویه را هم در نظر بگیرید.
اگر برای اجرای bind9 به زیرساخت لینوکسی نیاز دارید، خرید vps لینوکس میتواند نقطۀ شروع مناسبی برای این سناریو باشد.
تجربۀ کاربر ایرانی با BIND9
برای کاربران ایرانی، انتخاب لوکیشن VPS روی سرعت پاسخگویی DNS تأثیر مستقیمی دارد. در VPS Market، سرور مجازی ایران معمولاً برای زمانی که بیشتر کاربران DNS داخل ایران هستند، انتخاب منطقیتری است؛ چون فاصله شبکهای کمتر میتواند به کاهش Latency کمک کند. اگر DNS Server برای کاربران خارج از ایران یا سرویسهای بینالمللی استفاده میشود، بهتر است لوکیشن را بر اساس محل کاربران نهایی و مسیر شبکه انتخاب کنید و قبل از خرید، تأخیر و پایداری اتصال را تست کنید.
پیشنیازهای نصب BIND9 روی Ubuntu
در ادامۀ آموزش نصب BIND9، ابتدا بستههای موردنیاز را روی Ubuntu نصب میکنیم و سپس سراغ تنظیمات اصلی DNS Server میرویم. قبل از شروع نصب bind در اوبونتو بهتر است موارد زیر آماده باشند:
- سیستمعامل: استفاده از Ubuntu Server بهعنوان محیط اجرای BIND9.
- دسترسی SSH: دسترسی SSH به سرور برای نصب بستهها و ویرایش فایلهای پیکربندی.
- دسترسی sudo: داشتن کاربری با دسترسی «sudo» برای نصب BIND9 و اعمال تغییرات سیستمی.
- IP ثابت: اختصاص یک IP ثابت به DNS Server برای پاسخگویی پایدار به درخواستهای DNS.
- اتصال شبکه: دسترسی پایدار به اینترنت برای دریافت بستهها و برقراری ارتباط DNS.
در سناریوی واقعی، بهتر است DNS Server از طریق IP عمومی قابل دسترسی باشد و پورت 53 پروتکلهای TCP و UDP روی فایروال باز باشد.
آموزش نصب BIND9 روی Ubuntu
اول فهرست پکیجها را بهروزرسانی کنید:
sudo apt update
سپس بستۀ BIND9 و ابزارهای موردنیاز را نصب کنید:
sudo apt install bind9 bind9utils bind9-doc dnsutils -y
پس از نصب، وضعیت سرویس را بررسی کنید:
sudo systemctl status bind9
اگر سرویس بدون خطا اجرا شده باشد، باید وضعیتی مشابه «active (running)» مشاهده کنید.
برای اطمینان از اجرای خودکار bind9 پس از راهاندازی مجدد سرور نیز میتوانید از دستور زیر استفاده کنید:
sudo systemctl enable bind9
در این مرحله، نصب BIND9 انجام شده و سرویس آماده پیکربندی است.
فایلهای مهم در BIND9
در Ubuntu، فایلهای اصلی تنظیمات BIND9 در مسیر «/etc/bind» قرار دارند. مهمترین این فایلها عبارتاند از:
- فایل /etc/bind/named.conf : فایل اصلی تنظیمات BIND9 است که برای مدیریت و فراخوانی سایر فایلهای پیکربندی استفاده میشود.
- فایل /etc/bind/named.conf.options : که محل تنظیم گزینههای عمومی مانند: Forwarder، دسترسی کلاینتها و برخی تنظیمات رفتار DNS است.
- فایل /etc/bind/named.conf.local : که برای تعریف Zoneهای اختصاصی که توسط مدیر DNS ایجاد و مدیریت میشوند.
- فایل Zone File: که رکوردهای DNS یک دامنه مانند A ،AAAA ،MX و NS در آن تعریف میشوند.
پیکربندی bind برای DNS Server
پس از نصب BIND9، باید تنظیمات آن را متناسب با نقشی که برای DNS Server در نظر گرفتهاید انجام دهید. در این مرحله، نحوۀ پاسخگویی سرور به درخواستها، دسترسی کاربران و شبکهها و رفتار bind در برابر Queryهای مختلف مشخص میشود. اگر هدف راهاندازی یک DNS Server Authoritative است، تنظیم این بخش اهمیت زیادی دارد؛ چون علاوه بر عملکرد صحیح سرویس، از تبدیلشدن سرور به یک Resolver عمومی و ایجاد مشکلات امنیتی نیز جلوگیری میکند. در ادامه، تنظیمات اصلی BIND را مرحلهبهمرحله بررسی میکنیم. ابتدا تنظیمات عمومی BIND را باز کنید:
sudo nano /etc/bind/named.conf.options
برای یک DNS Server ساده میتوانید تنظیماتی مشابه نمونۀ زیر داشته باشید:
options {
directory "/var/cache/bind";
recursion no;
listen-on { any; };
listen-on-v6 { any; };
allow-query { any; };
};
در این نمونه، «recursion no» باعث میشود سرور برای درخواستهای عمومی نقش Recursive Resolver نداشته باشد و برای سناریوی DNS Authoritative مناسبتر باشد.
اگر BIND را برای شبکۀ داخلی یا Resolver استفاده میکنید، تنظیمات Recursion و «allow-query» باید متناسب با شبکۀ شما محدود شوند.
ساخت Zone برای دامنه
حالا باید به BIND اعلام کنیم که مسئول پاسخگویی به دامنۀ موردنظر است. فایل زیر را باز کنید:
sudo nano /etc/bind/named.conf.local
برای دامنۀ فرضی «example.com» این Zone را اضافه کنید:
zone "example.com" {
type primary;
file "/etc/bind/db.example.com";
};
در اینجا «type primary» مشخص میکند که BIND9 اطلاعات اصلی Zone را از فایل معرفیشده دریافت کند.
ساخت فایل Zone
اکنون فایل Zone را ایجاد کنید:
sudo nano /etc/bind/db.example.com
یک نمونۀ ساده میتواند به شکل زیر باشد:
$TTL 86400 @ IN SOA ns1.example.com. admin.example.com. ( 2026090601 3600 1800 604800 86400 ) @ IN NS ns1.example.com. ns1 IN A 203.0.113.10 @ IN A 203.0.113.10 www IN A 203.0.113.10
در این مثال، 203.0.113.10 صرفاً یک IP نمونه است و باید با IP واقعی DNS Server خود جایگزین شود. عدد مربوط به «serial» در SOA نیز اهمیت دارد. هر بار که Zone را تغییر میدهید، بهتر است این مقدار افزایش پیدا کند؛ مثل تغییر زیر:
2026090601
به:
2026090602
تعریف Name Server برای دامنه
برای استفاده واقعی از DNS Server، باید Name Serverهای دامنه را نیز در پنل ثبتکننده دامنه تنظیم کنید.
برای مثال:
ns1.example.com → 203.0.113.10
اگر DNS Server شما با نامی در همان دامنه فعالیت میکند، معمولاً باید Glue Record مربوط به آن را نیز در Registrar ثبت کنید؛ در غیر این صورت ممکن است دامنه نتواند Name Server خود را پیدا کند.
بررسی تنظیمات BIND9 قبل از اجرا
قبل از Restart کردن سرویس، بهتر است تنظیمات را بررسی کنید. برای بررسی Syntax فایلهای تنظیمات از «named-checkconf» استفاده کنید:
sudo named-checkconf
اگر خروجی خاصی نمایش داده نشد، معمولاً یعنی خطای Syntax در فایلهای اصلی تنظیمات وجود ندارد. این ابزار برای بررسی Syntax فایل کانفیگ طراحی شده است. حالا فایل Zone را نیز بررسی کنید:
sudo named-checkzone example.com /etc/bind/db.example.com
در صورت صحیح بودن Zone، خروجی باید شامل وضعیت «OK» باشد. ابزار «named-checkzone» علاوه بر Syntax، یکپارچگی Zone را نیز بررسی میکند.
راهاندازی مجدد bind9
پس از اینکه تنظیمات بدون خطا بودند، سرویس را Restart کنید:
sudo systemctl restart bind9
سپس وضعیت سرویس را دوباره بررسی کنید:
sudo systemctl status bind9
اگر همه چیز درست باشد، باید «active (running)» را مشاهده کنید. در صورت مشاهدۀ خطا، لاگهای سرویس میتوانند دلیل مشکل را مشخص کنند:
sudo journalctl -u bind9 --no-pager -n 50
باز کردن پورت DNS در فایروال
DNS از پورت 53 استفاده میکند و برای پاسخگویی عمومی، باید TCP و UDP این پورت در فایروال اجازه دسترسی داشته باشند. اگر از UFW استفاده میکنید:
sudo ufw allow 53/tcp sudo ufw allow 53/udp
سپس وضعیت قوانین را بررسی کنید:
sudo ufw status
باز بودن پورت بهتنهایی کافی نیست و سرویس BIND نیز باید روی IP مناسب Listen کند و تنظیمات Zone بدون خطا باشند.
تست DNS Server با dig
یکی از مراحل مهم آموزش نصب BIND9، بررسی پاسخ DNS پس از اعمال تنظیمات است. با ابزارهایی مانند «dig» میتوان مطمئن شد Zone و رکوردهای تعریفشده بهدرستی پاسخ میدهند. یکی از بهترین ابزارها برای تست DNS، دستور «dig» است. برای آزمایش رکورد A دامنه، مستقیماً DNS Server خود را مشخص کنید:
dig @203.0.113.10 example.com
در صورت صحیح بودن تنظیمات، در بخش Answer باید رکورد A دامنه و IP تعریفشده را مشاهده کنید. برای آزمایش رکورد NS نیز میتوانید این دستور را اجرا کنید:
dig @203.0.113.10 example.com NS
اگر پاسخی دریافت نمیکنید، مواردی مانند IP سرور، پورت 53، فایروال، تنظیمات Zone و Name Serverهای ثبتشده در Registrar را بررسی کنید. مستندات رسمی Ubuntu نیز استفاده از «dig» را برای بررسی عملکرد DNS پیشنهاد میکند.
نکات مهم پیکربندی BIND
در پیکربندی bind چند نکته را همیشه در نظر داشته باشید:
- IP ثابت: برای DNS Server از یک IP ثابت استفاده کنید تا رکوردهای DNS و تنظیمات دامنه دچار تغییر ناخواسته نشوند.
- فایروال: پورتهای موردنیاز DNS، بهویژه TCP و UDP پورت 53، باید در Firewall بهدرستی تنظیم شوند.
- صحت تنظیمات: قبل از Restart کردن BIND9، فایلهای پیکربندی و Zone را با ابزارهای بررسی داخلی bind9 کنترل کنید.
- امنیت DNS: دسترسی به سرویس را فقط برای Clientها و شبکههای موردنیاز باز بگذارید و از ایجاد یک DNS Resolver عمومی ناخواسته جلوگیری کنید.
- ثبت لاگها: لاگهای BIND9 را برای شناسایی خطاهای پیکربندی، درخواستهای غیرعادی و مشکلات احتمالی بررسی کنید.
- پشتیبانگیری: از فایلهای پیکربندی و Zoneها نسخه پشتیبان داشته باشید تا در صورت بروز خطا بتوانید تنظیمات را بازیابی کنید.
اگر مدیریت DNS برایتان اولویت بیشتری دارد و نمیخواهید همه تنظیمات را بهصورت دستی انجام دهید، میتوانید روشهای مدیریت DNS را نیز بررسی کنید.
جمعبندی
آموزش نصب BIND9 زمانی کامل میشود که علاوه بر نصب پکیج، Zone را تعریف کنید، فایل DNS را بسازید، تنظیمات را با named-checkconf و named-checkzone بررسی کنید و در نهایت با dig پاسخگویی DNS را تست کنید. bind9 انعطاف زیادی برای ساخت DNS Server اختصاصی دارد، اما امنیت و پایداری آن به پیکربندی صحیح وابسته است. اگر فقط به مدیریت رکوردهای دامنه نیاز دارید، استفاده از سرویسهای مدیریت DNS میتواند سادهتر باشد؛ BIND9 امکان ایجاد و مدیریت DNS Server اختصاصی، تعریف Zone و رکوردهای DNS، پاسخگویی به درخواستهای نام دامنه و کنترل دقیق رفتار DNS را در اختیار مدیر سرور قرار میدهد. به همین دلیل برای زیرساختهایی که به مدیریت مستقیم DNS نیاز دارند، انتخابی انعطافپذیر است.
توجه داشته باشید که قبل از انتقال یک دامنه واقعی به DNS Server جدید، ابتدا Zone را تست کنید و در صورت امکان DNS ثانویه داشته باشید تا خرابی یک سرور باعث از دسترس خارجشدن DNS دامنه نشود.
سؤالات متداول
BIND9 چیست و چه کاربردی دارد؟
BIND9 یک نرمافزار DNS Server متنباز است که برای پاسخگویی به درخواستهای DNS و مدیریت اطلاعات دامنهها استفاده میشود. با BIND9 میتوان یک DNS Server اختصاصی ساخت و رکوردهایی مانند A، NS، MX و CNAME را برای دامنه مدیریت کرد.
آیا نصب BIND9 روی Ubuntu دشوار است؟
خیر. نصب bind روی Ubuntu با استفاده از مخزن رسمی APT انجام میشود و مراحل اصلی آن شامل نصب بسته، تعریف Zone، ساخت فایل Zone و بررسی تنظیمات است. با استفاده از ابزارهایی مانند named-checkconf و named-checkzone نیز میتوان قبل از راهاندازی، خطاهای پیکربندی را شناسایی کرد.
برای نصب BIND9 به VPS نیاز داریم؟
برای راهاندازی یک DNS Server عمومی، داشتن سروری با IP ثابت و دسترسی شبکه مناسب ضروری است و Vps یکی از گزینههای متداول برای این کار محسوب میشود. برای تعداد محدود دامنهها، معمولاً منابع زیادی نیاز نیست؛ اما در حجم بالای درخواستهای DNS باید منابع و ظرفیت شبکه متناسب با ترافیک انتخاب شوند.
چگونه صحت پیکربندی BIND9 را بررسی کنیم؟
برای بررسی تنظیمات اصلی BIND میتوانید از named-checkconf و برای بررسی فایل Zone از named-checkzone استفاده کنید. پس از آن نیز با دستور dig میتوان مستقیماً از DNS Server درخواست ارسال کرد و رکوردهای دامنه را بررسی کرد.
پورت DNS در BIND9 چیست؟
DNS بهطور معمول از پورت 53 استفاده میکند. برای پاسخگویی به درخواستهای DNS، باید دسترسی مناسب به پورت 53 روی TCP و UDP برقرار باشد. اگر فایروال روی سرور فعال است، بسته به سناریوی استفاده باید این پورتها را در قوانین فایروال مجاز کنید.
آیا BIND9 برای DNS عمومی مناسب است؟
بله، BIND9 میتواند بهعنوان DNS Authoritative برای دامنههای عمومی استفاده شود. بااینحال، تنظیمات امنیتی اهمیت زیادی دارند. بهخصوص نباید Recursive Query را بدون محدودیت برای کاربران اینترنت باز بگذارید، زیرا پیکربندی نادرست میتواند سرور را در معرض سوءاستفاده قرار دهد.






