در آموزش های قبلی به مبحث DNS پرداختیم و متوجه شدیم که DNS (سیستم نام دامنه) چیست. اما در آموزش به نحوه ی راه اندازی DNS سرور در لینوکس میپردازیم.
در اینجا ما از سه نود استفاده میکنیم. که اولی به عنوان DNS سرور اصلی یا Master DNS server ، دومی به عنوان DNS ثانویه یا Secondary DNS ، و سومی قرار است به عنوان DNS کلاینت یا DNS client باشد. در ادامه به جزئیات این سه نود میپردازیم.
یک راز بزرگ درمورد 90 % هاستینگ های ایرانی، اورسل کردن بیش از حد است که باعث افت کیفیت سرورها میشود.
وان سرور با ارائه دسترسی های مختلف این امکان را به شما خواهد داد که تمامی منابع سرورتان را مدیریت و بررسی کنید و همچنین با ارائه گارانتی 100% برگشت وجه ریسک خرید شما را به %0 کاهش میدهد.
در اینجا ما پکیج های bind را بر روی سرور نصب میکنیم.
yum install bind bind-utils -y
فایل 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 ، فایل های forward و reverse را در فایل etc/named.conf/ میسازیم.
ایجاد فایل 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.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 را فعال و استارت می کنیم
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
دستورات زیر را یکی یکی اجرا می کنیم.
chgrp named -R /var/named
chown -v root:named /etc/named.conf
restorecon -rv /var/named
restorecon /etc/named.conf
فایل پیشفرض پیکربندی 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
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 ثانویه است.
پکیج های bind را با توجه به دستورات زیر نصب می کنیم.
yum install bind bind-utils -y
فایل 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 سرور را در فایل اینترفیس شبکه اضافه میکنیم.
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
chgrp named -R /var/named
chown -v root:named /etc/named.conf
restorecon -rv /var/named
restorecon /etc/named.conf
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 سرور را آزمایش کنیم.
dig masterdns.unixmen.local
dig secondarydns.unixmen.local
dig client.unixmen.local
nslookup unixmen.local
خب در این جا سرور های DNS اصلی و ثانویه برای استفاده آماده هستند.
ما در این آموزش به نحوه ی راه اندازی و پیکربندی DNS سرور با استفاده از bind پرداختیم. و همچنین با جزئیات ریز آن آشنا شدیم. امیدواریم از این آموزش بهره کافی را برده باشید.
لطفا جهت بهبهود کیفیت آموزش های ارسالی، نظرات خود را از طریق کامنت و درج ستاره ارسال کنید
X