بلاگ/نصب سرور DNS در CentOS 7
به‌روز شده

نصب سرور DNS در CentOS 7

DNS در انگلیسی مخفف عبارت «سیستم نامگذاری دامین» است و عنوان‌های هاست یا URL‌ها را به آدرس‌های IP ترجمه می‌کند. به عنوان مثال، اگر شما آدرس www.ariaservice.net را در مرورگر تایپ می‌کنید، سرور DNS نام دامین را به آدرس IP متناظر آن ترجمه می‌کند. از آنجایی که آدرس‌های IP را همیشه نمی‌توان به حافظه...

1399/04/242984 بازدید
نصب سرور DNS در CentOS 7
DNS در انگلیسی مخفف عبارت «سیستم نامگذاری دامین» است و عنوان‌های هاست یا URL‌ها را به آدرس‌های IP ترجمه می‌کند. به عنوان مثال، اگر شما آدرس www.ariaservice.net را در مرورگر تایپ می‌کنید، سرور DNS نام دامین را به آدرس IP متناظر آن ترجمه می‌کند. از آنجایی که آدرس‌های IP را همیشه نمی‌توان به حافظه سپرد، سرور‌های DNS ها نقش تعیین‌کننده‌ای پیدا می‌کنند. چرا که به خاطر ‌آوردن یک عنوان دامین بسیار ساده‌تر از یک آ‌درس IP خواهد بود. در این مطلب ‌آموزشی، به شما کمک می‌کنیم تا یک سرور DNS محلی را بر روی سیستم CentOS 7 نصب کنید. البته همین مراحل برای نصب سرور DNS  در لینوکس‌های RHEL و Scientific Linux 7 نیز قابل‌اجرا هستند.

نصب سرور DNS

نصب سرور DNS

سناریوی مراحل کار

به منظور رسیدن به اهداف آموزشی که در این مطلب دنبال می‌کنیم، از سه سیستم نقطه‌ای استفاده می‌کنیم. یکی به عنوان سرور Master DNS عمل می‌کند، دیگری Secondary DNS و سیستم سوم کلاینت DNS ما خواهد بود. در اینجا جزئيات سه سیستم را مرور می‌کنیم. جزئیات سرور DNS اصلی یا Master
  • سیستم‌عامل: CentOS 7 مینیمال سرور
  • عنوان هاست: ariaservice.local
  • آدرس IP: 168.1.101/24
جزئیات سرور DNS ثانویه یا Slave
  • سیستم‌عامل: CentOS 7 مینیمال سرور
  • عنوان هاست: ariaservice.local
  • آدرس IP: 168.1.102/24
جزئيات کلاینت
  • سیستم‌عامل: CentOS 6.5 دسکتاپ
  • عنوان هاست: ariaservice.local
  • آدرس IP: 168.1.103/24

نصب سرور DNS اصلی

برای این منظور باید بسته‌های bind9 را بر روی سرورتان نصب کنید.
php
yum install bind bind-utils -y

گام ۱) تنظیمات سرور DNS

برای این منظور، فایل ‘/etc/named.conf’ را ویرایش کنید.
php
vi /etc/named.conf
مواردی را که در زیر با فونت ضخیم نوشته شده‌اند، اضافه کنید.
php
//// 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; <strong>192.168.1.101;</strong>}; <strong>### Master DNS IP ###</strong>#    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; <strong>192.168.1.0/24;</strong>}; <strong>### IP Range ###</strong>    allow-transfer{ localhost; <strong>192.168.1.102;</strong> };   <strong>### Slave DNS IP ###</strong>    /*      - 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";};<strong>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; };};</strong>include "/etc/named.rfc1912.zones";include "/etc/named.root.key";</pre><pre>

گام ۲) ساخت فایل‌های Zone

در این مرحله می‌خواهیم Zone‌های فوروارد و ریورس را که در فایل ‘/etc/named.conf’ به آنها اشاره کرده بودیم، ایجاد کنیم.

ساخت Forward Zone

فایل forward.ariaservice را درون دایرکتوری ‘/var/named’  ایجاد کنید.
php
vi /var/named/forward.ariaservice
خطوط زیر را اضافه کنید.
php
$TTL 86400@   IN  SOA     masterdns.ariaservice.local. root.ariaservice.local. (        2011071001  ;Serial        3600        ;Refresh        1800        ;Retry        604800      ;Expire        86400       ;Minimum TTL)@       IN  NS          masterdns.ariaservice.local.@       IN  NS          secondarydns.ariaservice.local.@       IN  A           192.168.1.101@       IN  A           192.168.1.102@       IN  A           192.168.1.103masterdns       IN  A   192.168.1.101secondarydns    IN  A   192.168.1.102client          IN  A   192.168.1.103

ساخت Reverse Zone

فایل reverse.ariaservice را درون دایرکتوری ‘/var/named’ ایجاد کنید.
php
vi /var/named/reverse.ariaservice
حالا نوبت به اضافه‌کردن خطوط زیر است.
php
</pre><pre>$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.103masterdns       IN  A   192.168.1.101secondarydns    IN  A   192.168.1.102client          IN  A   192.168.1.103</pre><pre>

گام ۳) راه‌اندازی سرویس DNS

فعالسازی و شروع سرویس DNS را به صورت زیر انجام دهید.
php
systemctl enable namedsystemctl start named

گام ۴) تنظیمات فایروال

پورت پیش‌فرض شماره 53 سرویس DNS می‌بایست مجوّزهای لازم را در فایروال داشته باشد. برای این منظور، فرمان‌های زیر به کمک شما خواهند آمد.
php
firewall-cmd --permanent --add-port=53/tcpfirewall-cmd --permanent --add-port=53/udp

گام ۵) راه‌اندازی دوباره فایروال

فرمان زیر را تایپ کنید.
php
firewall-cmd --reload

گام ۶) تنظیمات مجوّزها، مالکیت‌ها و SELinux

فرمان‌های زیر را یک به یک اجرا کنید.
php
chgrp named -R /var/namedchown -v root:named /etc/named.confrestorecon -rv /var/namedrestorecon /etc/named.conf

گام ۷) تست تنظیمات سرور DNS و فایل‌های Zone

تست تنظیمات پیش‌فرض سرور DNS را  به صورت زیر می‌توان انجام داد.
php
named-checkconf /etc/named.conf
اگر چیزی نمایش داده نشد، فایل تنظیمات شما معتبر و در دسترس است. بررسی Forward zone
php
named-checkzone ariaservice.local /var/named/forward.ariaservice
نمونه خروجی
php
zone ariaservice.local/IN: loaded serial 2011071001OK
بررسی reverse zone
php
named-checkzone ariaservice.local /var/named/reverse.ariaservice
نمونه خروجی
php
zone ariaservice.local/IN: loaded serial 2011071001OK
حالا جزئیات سرور DNS را درون فایل تنظیمات رابط کاربری شبکه‌تان وارد کنید.
php
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
به صورت زیر:
php
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 است.
php
vi /etc/resolv.conf
برای nameserver آدرس IP را وارد کنید.
php
nameserver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.101
فایل را ذخیره کرده و ببندید. اکنون سرویس شبکه را دوباره راه‌اندازی کنید.
php
systemctl restart network

گام ۸) تست سرور DNS

php
dig masterdns.ariaservice.local
نمونه خروجی
php
</pre><pre>; <<>> 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
و با فرمان زیر:
php
nslookup ariaservice.local
نمونه خروجی
php
</pre><pre>Server:        192.168.1.101Address:    192.168.1.101#53Name:    unixmen.localAddress: 192.168.1.103Name:    unixmen.localAddress: 192.168.1.101Name:    unixmen.localAddress: 192.168.1.102</pre><pre>
حالا سرور اصلی DNS آماده استفاده است و باید خودمان را برای تنظیمات نصب سرور ثانویه کنیم.

نصب سرور DNS ثانویه

با استفاده از فرمان زیر، بسته‌های bind را نصب کنید.
php
yum install bind bind-utils -y

گام ۱) تنظیمات سرور DNS ثانویه

برای این منظور، باید فایل ‘/etc/named.conf’ را ویرایش کنید.
php
vi /etc/named.conf
مطابق زیر و خطوطی که با فونت ضخیم مشخص شده‌اند، تغییرات را انجام دهید.
php
//// 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&nbsp;&nbsp;&nbsp;&nbsp; { localhost; 192.168.1.0/24; };....zone "." IN {type hint;file "named.ca";};zone "ariaservice.local" IN {type slave;file "slaves/ariaservice.fwd";masters { 192.168.1.101; };};zone "1.168.192.in-addr.arpa" IN {type slave;file "slaves/ariaservice.rev";masters { 192.168.1.101; };};include "/etc/named.rfc1912.zones";include "/etc/named.root.key";

گام ۲) راه‌اندازی سرویس DNS

راه‌اندازی سرور DNS با کمک فرمان‌های زیر صورت می‌گیرد.
php
systemctl enable namedsystemctl start named
حالا Zone‌های فوروارد و ریورس به صورت خودکار از سرور اصلی DNS به آدرس ‘/var/named/slaves/’ در سرور DNS ثانویه کپی می‌شوند.
php
ls /var/named/slaves/
نمونه خروجی
php
ariaservice.fwd&nbsp; ariaservice.rev

گام ۳) اضافه‌کردن جزئیات سرور DNS

در فایل تنظیمات رابط کاربری شبکه، جزئیات سرور را مطابق زیر وارد کنید.
php
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
 
php
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 است.
php
vi /etc/resolv.conf
در اینجا باید آدرس IP سرور را وارد کنید.
php
nameserver 192.168.1.101nameserver 192.168.1.102
فایل را ذخیره کرده و ببندید. اکنون راه‌اندازی دوباره شبکه را باید انجام دهید.
php
systemctl restart network

گام ۴) تنظیمات فایروال

حتماً باید به پورت پیش‌فرض شماره 53 سرویس DNS برای عبور از فایروال مجوّز می‌دهیم.
php
firewall-cmd --permanent --add-port=53/tcp

گام ۵) راه‌اندازی دوباره فایروال

php
firewall-cmd –reload

گام ۶) تنظیمات مجوّزها، مالکیت و SELinux

php
chgrp named -R /var/namedchown -v root:named /etc/named.confrestorecon -rv /var/namedrestorecon /etc/named.conf

گام ۷) تست سرور DNS

php
dig masterdns.ariaservice.local
نمونه خروجی
php
</pre><pre>; <<>> 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</pre><pre>
و فرمان زیر:
php
dig secondarydns.ariaservice.local
نمونه خروجی
php
</pre><pre>; <<>> 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</pre><pre>
سپس فرمان زیر:
php
nslookup ariaservice.local
نمونه خروجی
php
</pre><pre>Server:        192.168.1.102Address:    192.168.1.102#53Name:    unixmen.localAddress: 192.168.1.101Name:    unixmen.localAddress: 192.168.1.103Name:    unixmen.localAddress: 192.168.1.102</pre><pre>

تنظیمات جبهه کلاینت

جزئیات سرور DNS را در فایل ‘/etc/resolv.conf’ در کلیه سیستم‌های کلاینت وارد کنید.
php
vi /etc/resolv.conf
به صورت زیر:
php
# Generated by NetworkManagersearch ariaservice.localnameserver 192.168.1.101nameserver 192.168.1.102
حالا سرویس شبکه دوباره راه‌اندازی کنید یا سیستم را ریبوت کنید.

تست سرور DNS

حالا می‌توانید با کمک یکی از فرمان‌های زیر، سرور DNS را تست کنید.
php
dig masterdns.ariaservice.localdig secondarydns.ariaservice.localdig client.ariaservice.localnslookup ariaservice.local
کار ما در اینجا خاتمه یافت. در حال حاضر سرور‌های DNS اصلی و ثانویه، آماده دسترسی و استفاده هستند.

جمع‌بندی

در این آموزش، نحوه نصب یک سرور DNS محلی را بر روی توزیع لینوکس CentOS 7 بررسی کردیم. امیدواریم که این مطلب نیز مورد توجه شما قرار گرفته باشد. منبع: Unixmen.com