DevOps Engineer / personal Site : sadeghkhademi.com
نصب و کانفیگ 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 نیاز خواهید داشت.
مطلبی دیگر از این انتشارات
تنظیمات L2TP-IPSec میکروتیک برای کاربران موبایل
مطلبی دیگر از این انتشارات
نصب نرم افزار مانیتورینگ Cacti در Ubuntu 16.04
مطلبی دیگر از این انتشارات
چرا بهتر است کودکان با لینوکس کار کنند؟