نصب و کانفیگ Bind9 در Ubuntu/Debian

سرویس DNS یا Domain Name System همانظور که میدانیم سرویس اینترنتی است که ترجمه دامنه را به IP انجام میدهد.با استفاده از DNS نه تنها میتوانیم دامنه را به IP ترجمه کنیم بلکه میتوانیم IP را نیز به دامنه ترجمه کنیم.

در این آموزش نصب و تنظیمات DNS Server بر پایه BIND را روی Ubuntu بررسی خواهیم کرد.

عبارت BIND = Berkeley Internet Name Domain تقریباً برای همه توزیع های لینوکس در دسترس میباشد و این امکان را به ما میدهد که اطلاعات DNS را در اینترنت منتشر کنیم.

این آموزش بر اساس اطلاعات زیر پیش خواهد رفت :

 Bind Server IP : 192.168.1.100
 Domain Name : 4nix.localPrivate
 Network : 192.168.1.0/24


نصب BIND9 روی Ubuntu :

برای نصب BIND به این ابزار های نیاز داریم : bind9 bind9utils bind9-doc dnsutils

دستور زیر را در ترمینال وارد نمایید :

sudo apt-get install bind9 bind9utils bind9-doc dnsutils

بعد از اینکه تمام بسته های نصب شد به سراغ کانفیگ کردن BIND میریم.

ابتدا Bind رو برای IPv4 تنظیم میکنیم، برای انجام این کار فایل “etc/default/bind9” را ویرایش و “۴-” را به OPTIONS اضافه میکنیم.فایل نهایی باید شبیه زیر باشد.

تمام فایل های کانفیگی در دایرکتوری etc/bind/ قرار دارند.

یکی از فایل های کانفیگی مهم برای bind فایل “/etc/bind/named.conf.options“ هست، در این فایل میتوانیم مشخص کنیم :

  • درخواست ها از Private Network به سمت سرور ارسال شوند
  • سرور recursive یا Non-recursive عمل کند
  • پورت DNS را مشخص کنیم (53)
  • Forwarders ها را مشخص کنیم ( زمانی که DNS سرور قادر به پیدا کردن جواب درسخواست نباشد درخواست را به سمت Forwarders ها ارسال میکند)

بر اساس شبکه داخلی خودم پارامتر های زیر را در نظر گرفتم :

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


 options {
 directory “/var/cache/bind”;
 auth-nxdomain no;    # conform to RFC1035
 // listen-on-v6 { any; };
 listen-on port 53 { localhost; 192.168.1.0/24; };
 allow-query { localhost; 192.168.1.0/24; };
 forwarders { 8.8.8.8; };
 recursion yes;
 };

فایل کانفیگ مهم بعدی “/etc/bind/named.conf.local“ هست، در این فایل ما zone های مربوط به دامنه  را تعریف میکنیم.فایل را باز کنید و موارد زیر را به فایل اضافه کنید :

sudo vim named.conf.local


 zone    “۴nix.local”   {
 type master;
 file    “/etc/bind/forward.4nix.local”;
 };
 zone   “1.168.192.in-addr.arpa”        {
 type master;
 file    “/etc/bind/reverse.4nix.local”;
 };

فایل را ذخیره کنید و از آن خارج شوید.

ما در اینجا محل فایل forward lookup zone و reverse lookup zone را مشخص کردیم، قدم بعدی ساخت این فایل ها میباشد.

اول فایل forward lookup zone را ایجاد میکنیم، فایل db.local به عنوان فایل نمونه zone در آدرس ‘/etc/bind folder‘ موجود میباشد، فایل نمونه را کپی و با توجه به نیاز تغییر میدهیم استفاده کنیم.

 sudo cp db.local forward.4nix.local
 sudo vim forward.4nix.local


 $TTL    604800
 @       IN      SOA     primary.4nix.local. root.primary.4nix.local. (
 6         ; Serial
 604820         ; Refresh
 86600         ; Retry
 2419600         ; Expire
 604600 )       ; Negative Cache TTL
 ;Name Server Information
 @       IN      NS      primary.4nix.local.
 ;IP address of Your Domain Name Server(DNS)
 primary IN       A      192.168.1.100
 ;Mail Server MX (Mail exchanger) Record
 ۴nix.local. IN  MX  10  mail.4nix.local.
 ;A Record for Host names
 www     IN       A      192.168.1.50
 mail    IN       A       192.168.1.60
 ;CNAME Record
 ftp     IN      CNAME    www.4nix.local.

مطمئن شوید که این فایل را بر اساس شبکه خود تغییر داده اید.

قدم بعدی ساخت فایل reverse lookup zone در همان دایرکتوری است که فایل forward lookup zone را ایجاد کردیم.فایل نمونه کانفیگ reverse lookup zone در دایرکتوری ‘/etc/bind‘ با نام db.127 قرار دارد.

 sudo cp db.127 reverse.4nix.local
 sudo vim /etc/bind/reverse.4nix.local


 $TTL    604800
 @       IN      SOA     4nix.local. root.4nix.local. (
 21         ; Serial
 604820         ; Refresh
 864500        ; Retry
 2419270        ; Expire
 604880 )       ; Negative Cache TTL
 ;Your Name Server Info
 @       IN      NS      primary.4nix.local.
 primary IN      A       192.168.1.100
 ;Reverse Lookup for Your DNS Server
 100      IN      PTR     primary.4nix.local.
 ;PTR Record IP address to HostName
 50      IN      PTR     www.4nix.local.
 60      IN      PTR     mail.4nix.local.

فایل را ذخیره کنید و از آن خارج شوید.

حالا میبایست سرویس را restart کنیم تا تغییرات اعمال شوند.

 sudo systemctl restart bind9
 sudo systemctl enable bind9

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

sudo ufw allow 53

اگر میخواهید syntax فایل کانفیگ bind9 را بررسی کنید (named.conf.local) میتوانید از دستور “named-checkconf” استفاده کنید.به عنوان مثال :

sudo named-checkconf /etc/bind/named.conf.local

اگر هیچ خطایی وجود نداشته باشد بدون هیچ خروجی مجدداً shell در اختیار شما قرار خواهد گرفت.

برای چک کردن syntax در فایل های  forward و reverse lookup zone از دستور زیر “named-checkzone” استفاده میکنیم.مثال :

sudo named-checkzone nix.local /etc/bind/forward.nix.local


 zone nix.local/IN: loaded serial 6
 OK
 nix@bind-server:~$
 nix@bind-server:~$ sudo named-checkzone nix.local /etc/bind/reverse.nix.local
 zone nix.local/IN: loaded serial 21
 OK

تست DNS Server :

برای تست کردن DNS Server از ابزار های dig و nslookup استفاده میکنیم.

برای انجام این تست در یک سیستم لینوکسی به نحو زیر میتوانیم این کار را انجام دهیم.برای تغییر DNS Server فایل ‘/etc/resol.conf‘  را باز میکنیم و تغییر را اعمال میکنیم :

 nix@joke:~$ sudo vi /etc/resolv.conf
 search 4nix.local
 nameserver 192.168.1.100

فایل را ذخیره و خارج شوید.

سوال : خط اول این فایل توضیح داده که نباید این فایل را ادیت کنیم.تغییر این فایل چه ریسک هایی میتواند داشته باشد و اه کار اصولی تغییر DNS چی هست ؟

حالا با استفاده از ابزار dig می توانیم اطلاعات مربوط به DNS را بدست آوریم :

dig primary.4nix.local

باید اطلاعاتی شبیه به زیر را در هروجی دستور مشاهده نماییم.

این اطلاعات نشان میدهد که dns ما به خوبی کار میکند.

با استفاده از دستور زیر  reverse lookup query(PTR) را تست کنیم :

dig -x 192.168.1.100

خروجی دستور باید چیزی شبیه به عکس زیر باشد

نکته : در صورتی که در زمان اجرای دستور dig با خطای  ‘command not found’ روبه رو شدید باید پکیج dnsutils را نصب نمایید.

sudo apt-get install dnsutils -y

همچنین میتوانیم از ابزار nslookup استفاده کنیم.

nslookup primary.4nix.local

خب DNS Server ما به خوبی کار میکند و میتوانید بقیه سرور ها مثل mail,ftp,web و … را DNS اضافه کنید.

ما در این آموزش نصب local DNS server را داشتیم، اگر میخواهید public DNS server داشته باشید شما به IP Public نیاز خواهید داشت.