راه‌اندازی DNS سرور لینوکس

راه‌اندازی DNS سرور در لینوکس

راه‌اندازی DNS سرور در لینوکس اوبونتو با دستورهای محیط ترمینال لینوکس

برای نصب DNS در اوبونتو کافی‌است اقدامات زیر را انجام دهید.

مراحل راه‌اندازی سرورDNS عبارتند از:

  1. نصب BIND
  2. پیکربندی DNS کش
  3. پیکربندی سرور DNS اصلی
  4. پیکربندی سرور DNS ثانویه
  5. آزمایش پیکربندی BIND9

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