نصب و کانفیگ 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 نیاز خواهید داشت.