راهاندازی DNS سرور در لینوکس
راهاندازی DNS سرور در لینوکس اوبونتو با دستورهای محیط ترمینال لینوکس
برای نصب DNS در اوبونتو کافیاست اقدامات زیر را انجام دهید.
مراحل راهاندازی سرورDNS عبارتند از:
1- نصب BIND
نصب و راهاندازی بسته نصبی BIND
در اولین مرحله از راه اندازی DNS Server در لینوکس، قصد نصب پکیج BIND را داریم. این پکیج مخفف Berkeley Internet Naming Daemon است. برنامه کاربردی BIND برای نگهداری Name Server در لینوکس و نصب DNS به کار میرود.
ازطریق دستور زیر این بسته را نصب میکنیم:
sudo apt install bind9
یک بسته نصبی مفید دیگر برای تست و عیبیابی DNS، ابزار dnsutils است. در نصب DNS در اوبونتو این ابزار بهصورت خودکار نصب میشود.
برای اینکه ببینیم dnsutils قبلاً نصب شده یا نه، کافیاست با وارد کردن دستور زیر خیال خودمان را راحت کنیم:
sudo apt install dnsutils
BIND9 یک سرویس DNS است که به روشهای مختلفی پیکربندی میشود.
برخی از رایجترین روشها عبارتند از:
Name Server کش (Caching Nameserver): در این روش، سرور پاسخ هر درخواستی را ذخیره میکند و زمانی که مجدد درخواست شود، پاسخ را از حافظه کش خود ارائه میدهد. درواقع، مثل یک دفترچه تلفن برای وبسایت عمل کرده و به شما کمک میکند آدرس IP هر سایت را بهسرعت پیدا کنید.
- سرور اصلی (Primary Server): این سرور، مثل یک بانک اطلاعاتی عمل میکند که اطلاعات مربوط به یک دامنه را در خود ذخیره میکند. هنگام فراخوانی دامنه، دادهها را از فایل ذخیره خود میخواند.
- سرور ثانویه (Secondary Server): این سرور، مثل یک کپی از بانک اطلاعاتی است که داده را از یک Name Server معتبر دیگر دریافت میکند. درصورت بروز مشکل در سرور اصلی، میتوانید از این گزینه استفاده کنید.
اکنون پیکربندی هر سه گزینه را در نصب DNS در اوبونتو انجام دهیم.
2- پیکربندی DNS کش
پیکربندی BIND9 به عنوان یک سرور DNS کش
برای پیکربندی سرور DNS از طریق ترمینال اوبونتو میتوانید به آدرس زیر بروید:
/etc/bind/named.conf.options
آن را بهکمک ویرایشگر nano با دستور باز کنید:
sudo nano /etc/bind/named.conf.options
اکنون، بهدنبال خطوط زیر باشید. سپس کامنت آنها را بردارید:
forwarders {
1.2.3.4;
5.6.7.8;
};
در دستور بالا، بهجای 1.2.3.4 و 5.6.7.8 آدرس IP سرور DNS خود را قرار دهید. اکنون فایل را ذخیره کنید.
در آخر، سرویس BIND9 را با دستور زیر دوباره راه اندازی کنید:
sudo systemctl restart bind9.service
تا این مرحله از آموزش نصب DNS در لینوکس، موفق شدید سرور DNS کش را باموفقیت پیکربندی کنید.
3- پیکربندی سرور DNS اصلی
پیکربندی BIND9 به عنوان یک سرور DNS اصلی
پس از نصب DNS در لینوکس، میخواهیم پیکربندی BIND9 را بهعنوان یک سرور DNS اصلی برای دامنهای مانند example.com انجام دهیم. (توجه داشته باشید بهجای example نام دامنهتان را وارد کنید)
فایل پیکربندی BIND9 را با دستور زیر باز کنید.
sudo nano /etc/bind/named.conf.local
ایجاد DNS Zone برای دامنه
در مرحله دوم راه اندازی DNS Server در لینوکس، با وارد کردن متن زیر یک DNS Zone برای دامنه ایجاد کنید.
zone "example.com" {
type master;
file "/etc/bind/db.example.com";
};
سپس با دستور زیر، یک فایل برای DNS Zone خود تعریف کنید:
sudo cp /etc/bind/db.local /etc/bind/db.example.com
اکنون فایل را بهصورت زیر ویرایش کنید:
- localhost را به FQDN سرور خود تغییر دهید.
- 127.0.0.1 را به آدرس IP سرور خود تغییر دهید.
- root.localhost را به یک آدرس ایمیل معتبر تغییر دهید.
- یک رکورد A برای دامنه پایه example.com ایجاد کنید.
- یک رکورد A برای سرور نام خود ns.example.com ایجاد کنید.
بهطور کلی، با انجام تغییرات بالا خروجی شما شبیه به دستور زیر خواهد بود:
;
; BIND data file for example.com
;
$TTL 604800
@ IN SOA example.com. root.example.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
@ IN NS ns.example.com.
@ IN A 192.168.1.10
@ IN AAAA ::1
ns IN A 192.168.1.10
;
; BIND data file for example.com
;
$TTL 604800
@ IN SOA example.com. root.example.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
@ IN NS ns.example.com.
@ IN A 192.168.1.10
@ IN AAAA ::1
ns IN A 192.168.1.10
;
; BIND data file for example.com
;
$TTL 604800
@ IN SOA example.com. root.example.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
@ IN NS ns.example.com.
@ IN A 192.168.1.10
@ IN AAAA ::1
ns IN A 192.168.1.10
درنهایت، پس از ایجاد تغییرات با استفاده از دستور زیر سرویس bind9 را ریاستارت کنید.
sudo systemctl restart bind9.service
در پنجمین مرحله از گام سوم راه اندازی DNS Server در لینوکس، برای ارتباط دامنه با برخی از آدرس آیپیها نیاز است File Zone معکوس را تنظیم کنید.
برای این کار فایل /etc/bind/named.conf.local را باز کنید.
سپس متن زیر را به آن اضافه کنید:
zone “1.168.192.in-addr.arpa” {
type master;
file “/etc/bind/db.192”;
};
بهجای 192.168.1 سه اکتت اول شبکه خود قرار دهید. اکنون با استفاده از دستور زیر یک File Zone معکوس ایجاد کنید:
sudo cp /etc/bind/db.127 /etc/bind/db.192
اکنون فایل را ویرایش کنید. باتوجهبه موارد زیر آن را تغییر دهید:
- root.localhost را به ns. تغییر دهید.
- برای هر رکورد A در فایل زون اصلی، یک رکورد PTR در فایل زون معکوس ایجاد کنید.
- هر بار تغییراتی در فایل زون معکوس ایجاد کردید، نیاز است Serial Number را افزایش دهید.
خروجی شما میبایست شبیه فایل زیر باشد:
;
; BIND reverse data file for local 192.168.1.XXX net
;
$TTL 604800
@ IN SOA ns.example.com. root.example.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.
10 IN PTR ns.example.com.
درنهایت، با دستور زیر، سرور را ریاستارت کنید.
sudo systemctl restart bind9.service
4- پیکربندی سرور DNS ثانویه
پیکربندی BIND9 به عنوان یک سرور DNS ثانویه
پس از نصب DNS در لینوکس و پیکربندی آن در سرور اصلی، بهتر است برای روز مبادا هم که شده یک سرور ثانویه تنظیم کنید تا در شرایطی که سرور اصلی دردسترس نبود، درخواستهای DNS بدون پاسخ باقی نماند. برای این کار بهصورت زیر عمل میکنیم:
ابتدا به سرور اصلی امکان انتقال زون را بدهید. برای این کار، گزینه allow-transfer را در زون Forward و Reverse در فایل /etc/bind/named.conf.local بهصورت زیر اضافه کنید:
zone “example.com” {
type master;
file “/etc/bind/db.example.com”;
allow-transfer { 192.168.1.11; };
};
zone “1.168.192.in-addr.arpa” {
type master;
file “/etc/bind/db.192”;
allow-transfer { 192.168.1.11; };
};
بهجای 192.168.1.11 آیپی سرور ثانویه خود را اضافه کنید. سپس برای ریاستارت مجدد BIND9 دستور زیر را وارد کنید:
sudo systemctl restart bind9.service
اکنون قصد داریم تغییرات لازم را به همان ترتیبی که روی سرور اصلی ایجاد کردیم، در این سرور نیز اعمال کنیم.
این کار را با ویرایش فایل /etc/bind/named.conf.local آغاز کرده و موارد زیر را به زون Forward و Reverse اضافه کنید:
zone “example.com” {
type secondary;
file “db.example.com”;
masters { 192.168.1.10; };
};
zone “1.168.192.in-addr.arpa” {
type secondary;
file “db.192”;
masters { 192.168.1.10; };
};
پس از انجام این مراحل، سرور ثانویه شما پیکربندی شده است؛ درنتیجه درصورت در دسترس نبودن سرور اصلی، کوئریهای DNS بیپاسخ باقی نمیماند. با این کار، دامنه شما همیشه دردسترس خواهد بود.
5- آزمایش پیکربندی BIND9
آزمایش درست بودن پیکربندی BIND9
در ابتدای نصب و تنظیم DNS در لینوکس، با نصب dnsutils کارمان برای تست راحت شده است.
با وارد کردن دستور زیر بررسی میکنیم آیا BIND9 کارش را بهدرستی انجام داده است یا خیر:
dig -x 127.0.0.1
پس از وارد کردن دستور زیر، خروجی مانند دستور زیر را خواهید دید:
;; Query time: 1 msec
;; SERVER: 192.168.1.10#53(192.168.1.10)
اگر BIND9 را بهعنوان Caching Nameserver پیکربندی کردید،
آدرس IP برای نام دامنه خود را با استفاده از دستور dig بهصورت زیر بررسی کنید.
dig www.example.com
اگر خروجی دستور dig آدرس IP صحیح برای نام دامنه شما را نشان داد، DNS سرور شما به درستی پیکربندی شده است.
پایان
Setting up a DNS server on Linux