آموزش راه اندازی DNS سرور در لینوکس - وان سرور آکـادمی
آموزش راه اندازی DNS سرور در لینوکس
آموزش راه اندازی DNS سرور در لینوکس

آموزش راه اندازی DNS سرور در لینوکس

زمان تقریبی مطالعه: 6 دقیقه

آموزش راه اندازی 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 کاهش میدهد.

برای خرید سرور مجازی با گارانتی 100% بازگشت وجه کلیک کنید.

مشخصات 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 پرداختیم. و همچنین با جزئیات ریز آن آشنا شدیم. امیدواریم از این آموزش بهره کافی را برده باشید.

لطفا جهت بهبهود کیفیت آموزش های ارسالی، نظرات خود را از طریق کامنت و درج ستاره ارسال کنید

4.8/5 - (20 امتیاز)