آموزش راه اندازی DNS سرور در لینوکس
در آموزش های قبلی به مبحث DNS پرداختیم و متوجه شدیم که DNS (سیستم نام دامنه) چیست. اما در آموزش به نحوه ی راه اندازی DNS سرور در لینوکس میپردازیم.
آموزش نصب DNS سرور در لینوکس
سناریو
در اینجا ما از سه نود استفاده میکنیم. که اولی به عنوان DNS سرور اصلی یا Master DNS server ، دومی به عنوان DNS ثانویه یا Secondary DNS ، و سومی قرار است به عنوان DNS کلاینت یا DNS client باشد. در ادامه به جزئیات این سه نود میپردازیم.
مشخصات DNS سرور اصلی (یا Primary (Master) DNS)
- سیستم عامل : centOS 7
- اسم میزبان یا هاست : masterdns.unixmen.local
- آدرس IP : 192.168.1.101/24
یک راز بزرگ درمورد 90 % هاستینگ های ایرانی، اورسل کردن بیش از حد است که باعث افت کیفیت سرورها میشود.
وان سرور با ارائه دسترسی های مختلف این امکان را به شما خواهد داد که تمامی منابع سرورتان را مدیریت و بررسی کنید و همچنین با ارائه گارانتی 100% برگشت وجه ریسک خرید شما را به %0 کاهش میدهد.
مشخصات DNS سرور ثانویه (یا Secondary (Slave) DNS)
- سیستم عامل : centOS 7
- اسم میزبان یا هاست : secondarydns.unixmen.local
- آدرس IP : 192.168.1.102/24
مشخصات کلاینت
- سیستم عامل : centOS 6.5
- اسم میزبان یا هاست : client.unixmen.local
- آدرس IP : 192.168.1.103/24
تنظیم DNS سرور اصلی
در اینجا ما پکیج های bind را بر روی سرور نصب میکنیم.
yum install bind bind-utils -y
پیکربندی DNS سرور
فایل etc/named.conf/ را ویرایش میکنیم.
vi /etc/named.conf
خطوط زیر را طبق مثال تغییر می دهیم.
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { 127.0.0.1; 192.168.1.101;}; ### Master DNS IP ###
# listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; 192.168.1.0/24;}; ### IP Range ###
allow-transfer{ localhost; 192.168.1.102; }; ### Slave DNS IP ###
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "unixmen.local" IN {
type master;
file "forward.unixmen";
allow-update { none; };
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "reverse.unixmen";
allow-update { none; };
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
ایجاد فایل های zone
در این قسمت ما در فایل های zone ، فایل های forward و reverse را در فایل etc/named.conf/ میسازیم.
ساخت forward zone
ایجاد فایل forward.unixmen در پوشه یvar/named/
vi /var/named/forward.unixmen
خطوط زیر را اضافه می کنیم.
$TTL 86400
@ IN SOA masterdns.unixmen.local. root.unixmen.local. (
2011071001 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
@ IN NS masterdns.unixmen.local.
@ IN NS secondarydns.unixmen.local.
@ IN A 192.168.1.101
@ IN A 192.168.1.102
@ IN A 192.168.1.103
masterdns IN A 192.168.1.101
secondarydns IN A 192.168.1.102
client IN A 192.168.1.103
ایجاد reverse zone
ایجاد فایل reverse.unixmen در پوشه یvar/named/
vi /var/named/reverse.unixmen
خطوط زیر را اضافه می کنیم.
$TTL 86400
@ IN SOA masterdns.unixmen.local. root.unixmen.local. (
2011071001 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
@ IN NS masterdns.unixmen.local.
@ IN NS secondarydns.unixmen.local.
@ IN PTR unixmen.local.
masterdns IN A 192.168.1.101
secondarydns IN A 192.168.1.102
client IN A 192.168.1.103
101 IN PTR masterdns.unixmen.local.
102 IN PTR secondarydns.unixmen.local.
103 IN PTR client.unixmen.local.
استارت کردن سرویس DNS
سرویس DNS را فعال و استارت می کنیم
systemctl enable named
systemctl start named
پیکر بندی فایروال
ما باید از طریق فایروال به پورت پیشفرض سرویس DNS که 53 است ، اجازه دهیم. یا به عبارت دیگر پورت مورد نظر را بر روی فایروال باز کنیم و اجازه فعالیت دهیم.
firewall-cmd --permanent --add-port=53/tcp
firewall-cmd --permanent --add-port=53/udp
راه اندازی مجدد فایروال
firewall-cmd --reload
پیکربندی سطح دسترسی ها ، مالکیت و SELinux
دستورات زیر را یکی یکی اجرا می کنیم.
chgrp named -R /var/named
chown -v root:named /etc/named.conf
restorecon -rv /var/named
restorecon /etc/named.conf
آزمایش پیکربندی DNS و فایل های zone برای خطا های syntax
فایل پیشفرض پیکربندی DNS را بررسی میکنیم.
named-checkconf /etc/named.conf
اگر چیزی را بر نگرداند به معنی این هست که پیکربندی ما صحیح است.
بررسی کردن forward zone :
named-checkzone unixmen.local /var/named/forward.unixmen
خروجی نمونه :
zone unixmen.local/IN: loaded serial 2011071001
OK
بررسی کردن reverse zone :
named-checkzone unixmen.local /var/named/reverse.unixmen
خروجی :
zone unixmen.local/IN: loaded serial 2011071001
OK
جزئیات DNS سرور را در فایل اینترفیس شبکه اضافه میکنیم.
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="enp0s3"
UUID="5d0428b3-6af2-4f6b-9fe3-4250cd839efa"
ONBOOT="yes"
HWADDR="08:00:27:19:68:73"
IPADDR0="192.168.1.101"
PREFIX0="24"
GATEWAY0="192.168.1.1"
DNS="192.168.1.101"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
فایل etc/resolv.conf/ را ویرایش میکنیم.
vi /etc/resolv.conf
آدرس ip نیم سرور را اضافه می کنیم.
nameserver 192.168.1.101
فایل را ذخیره و سپس می بندیم.
سرویس شبکه را مجددا راه اندازی می کنیم.
systemctl restart network
تست کردن DNS سرور
dig masterdns.unixmen.local
خروجی نمونه :
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> masterdns.unixmen.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25179
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;masterdns.unixmen.local. IN A
;; ANSWER SECTION:
masterdns.unixmen.local. 86400 IN A 192.168.1.101
;; AUTHORITY SECTION:
unixmen.local. 86400 IN NS secondarydns.unixmen.local.
unixmen.local. 86400 IN NS masterdns.unixmen.local.
;; ADDITIONAL SECTION:
secondarydns.unixmen.local. 86400 IN A 192.168.1.102
;; Query time: 0 msec
;; SERVER: 192.168.1.101#53(192.168.1.101)
;; WHEN: Wed Aug 20 16:20:46 IST 2014
;; MSG SIZE rcvd: 125
nslookup unixmen.local
خروجی :
Server: 192.168.1.101
Address: 192.168.1.101#53
Name: unixmen.local
Address: 192.168.1.103
Name: unixmen.local
Address: 192.168.1.101
Name: unixmen.local
Address: 192.168.1.102
اکنون DNS اولیه یا اصلی برای استفاده آماده است.
حالا وقت پیکر بندی DNS ثانویه است.
تنظیم DNS سرور ثانویه (slave)
پکیج های bind را با توجه به دستورات زیر نصب می کنیم.
yum install bind bind-utils -y
پیکربندی DNS سرور Slave
فایل etc/named.conf/ را ویرایش می کنیم.
vi /etc/named.conf
و در آن ، با توجه به متن زیر تغییرات را اعمال می کنیم.
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { 127.0.0.1; 192.168.1.102; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; 192.168.1.0/24; };
.
.
.
.
zone "." IN {
type hint;
file "named.ca";
};
zone "unixmen.local" IN {
type slave;
file "slaves/unixmen.fwd";
masters { 192.168.1.101; };
};
zone "1.168.192.in-addr.arpa" IN {
type slave;
file "slaves/unixmen.rev";
masters { 192.168.1.101; };
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
سرویس DNS را استارت می کنیم.
systemctl enable named
systemctl start named
حال zone های forward و reverse به صورت اتوماتیک از DNS سرور اصلی به /var/named/slaves/ در DNS سرور ثانویه تکرار می شود.
ls /var/named/slaves/
خروجی :
unixmen.fwd unixmen.rev
اضافه کردن جزئیات DNS سرور
جزئیات DNS سرور را در فایل اینترفیس شبکه اضافه میکنیم.
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="enp0s3"
UUID="5d0428b3-6af2-4f6b-9fe3-4250cd839efa"
ONBOOT="yes"
HWADDR="08:00:27:19:68:73"
IPADDR0="192.168.1.102"
PREFIX0="24"
GATEWAY0="192.168.1.1"
DNS1="192.168.1.101"
DNS2="192.168.1.102"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
فایل etc/resolv.conf/ را ویرایش می کنیم.
vi /etc/resolv.conf
آدرس ip نیم سرور ها را اضافه می کنیم.
nameserver 192.168.1.101
nameserver 192.168.1.102
فایل را ذخیره و می بندیم.
سرویس شبکه را مجددا راه اندازی می کنیم.
systemctl restart network
پیکربندی فایروال
ما باید پورت اصلی سرویس DNS راکه 53 است ، در فایروال باز کنیم.
firewall-cmd --permanent --add-port=53/tcp
راه اندازی مجدد فایروال
firewall-cmd --reload
پیکربندی سطح دسترسی ها ، مالکیت و SELinux
chgrp named -R /var/named
chown -v root:named /etc/named.conf
restorecon -rv /var/named
restorecon /etc/named.conf
آزمایش DNS سرور
dig masterdns.unixmen.local
خروجی :
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> masterdns.unixmen.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18204
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;masterdns.unixmen.local. IN A
;; ANSWER SECTION:
masterdns.unixmen.local. 86400 IN A 192.168.1.101
;; AUTHORITY SECTION:
unixmen.local. 86400 IN NS masterdns.unixmen.local.
unixmen.local. 86400 IN NS secondarydns.unixmen.local.
;; ADDITIONAL SECTION:
secondarydns.unixmen.local. 86400 IN A 192.168.1.102
;; Query time: 0 msec
;; SERVER: 192.168.1.102#53(192.168.1.102)
;; WHEN: Wed Aug 20 17:04:30 IST 2014
;; MSG SIZE rcvd: 125
dig secondarydns.unixmen.local
خروجی :
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> secondarydns.unixmen.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60819
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;secondarydns.unixmen.local. IN A
;; ANSWER SECTION:
secondarydns.unixmen.local. 86400 IN A 192.168.1.102
;; AUTHORITY SECTION:
unixmen.local. 86400 IN NS masterdns.unixmen.local.
unixmen.local. 86400 IN NS secondarydns.unixmen.local.
;; ADDITIONAL SECTION:
masterdns.unixmen.local. 86400 IN A 192.168.1.101
;; Query time: 0 msec
;; SERVER: 192.168.1.102#53(192.168.1.102)
;; WHEN: Wed Aug 20 17:05:50 IST 2014
;; MSG SIZE rcvd: 125
nslookup unixmen.local
خروجی :
Server: 192.168.1.102
Address: 192.168.1.102#53
Name: unixmen.local
Address: 192.168.1.101
Name: unixmen.local
Address: 192.168.1.103
Name: unixmen.local
Address: 192.168.1.102
پیکر بندی کلاینت
جزئیات DNS سرور را در فایل etc/resolv.conf/ را در تمامی سیستم های کلاینت اضافه می کنیم.
vi /etc/resolv.conf
# Generated by NetworkManager
search unixmen.local
nameserver 192.168.1.101
nameserver 192.168.1.102
سرویس شبکه را مجددا راه اندازی می کنیم و یا سیستم را ری استارت می کنیم.
آزمایش DNS سرور
حال ، ما می توانیم با اجرای هر یک از دستورات زیر DNS سرور را آزمایش کنیم.
dig masterdns.unixmen.local
dig secondarydns.unixmen.local
dig client.unixmen.local
nslookup unixmen.local
خب در این جا سرور های DNS اصلی و ثانویه برای استفاده آماده هستند.
جمع بندی
ما در این آموزش به نحوه ی راه اندازی و پیکربندی DNS سرور با استفاده از bind پرداختیم. و همچنین با جزئیات ریز آن آشنا شدیم. امیدواریم از این آموزش بهره کافی را برده باشید.
لطفا جهت بهبهود کیفیت آموزش های ارسالی، نظرات خود را از طریق کامنت و درج ستاره ارسال کنید
اولین نفر باشید که نظر ارسال میکنید