DNS در انگلیسی مخفف عبارت «سیستم نامگذاری دامین» است و عنوانهای هاست یا URLها را به آدرسهای IP ترجمه میکند. به عنوان مثال، اگر شما آدرس www.ariaservice.net را در مرورگر تایپ میکنید، سرور DNS نام دامین را به آدرس IP متناظر آن ترجمه میکند. از آنجایی که آدرسهای IP را همیشه نمیتوان به حافظه سپرد، سرورهای DNS ها نقش تعیینکنندهای پیدا میکنند. چرا که به خاطر آوردن یک عنوان دامین بسیار سادهتر از یک آدرس IP خواهد بود.
در این مطلب آموزشی، به شما کمک میکنیم تا یک سرور DNS محلی را بر روی سیستم CentOS 7 نصب کنید. البته همین مراحل برای نصب سرور DNS در لینوکسهای RHEL و Scientific Linux 7 نیز قابلاجرا هستند.
نصب سرور 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 را بر روی سرورتان نصب کنید.
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; <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’ ایجاد کنید.
vi /var/named/forward.ariaservice
خطوط زیر را اضافه کنید.
$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.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.ariaservice را درون دایرکتوری ‘/var/named’ ایجاد کنید.
vi /var/named/reverse.ariaservice
حالا نوبت به اضافهکردن خطوط زیر است.
</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.103 masterdns IN A 192.168.1.101 secondarydns IN A 192.168.1.102 client IN A 192.168.1.103</pre> <pre>
گام ۳) راهاندازی سرویس DNS
فعالسازی و شروع سرویس DNS را به صورت زیر انجام دهید.
systemctl enable named systemctl start named
گام ۴) تنظیمات فایروال
پورت پیشفرض شماره 53 سرویس DNS میبایست مجوّزهای لازم را در فایروال داشته باشد. برای این منظور، فرمانهای زیر به کمک شما خواهند آمد.
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
تست تنظیمات پیشفرض سرور DNS را به صورت زیر میتوان انجام داد.
named-checkconf /etc/named.conf
اگر چیزی نمایش داده نشد، فایل تنظیمات شما معتبر و در دسترس است.
بررسی Forward zone
named-checkzone ariaservice.local /var/named/forward.ariaservice
نمونه خروجی
zone ariaservice.local/IN: loaded serial 2011071001 OK
بررسی reverse zone
named-checkzone ariaservice.local /var/named/reverse.ariaservice
نمونه خروجی
zone ariaservice.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
برای nameserver آدرس IP را وارد کنید.
nameserver&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 192.168.1.101
فایل را ذخیره کرده و ببندید.
اکنون سرویس شبکه را دوباره راهاندازی کنید.
systemctl restart network
گام ۸) تست سرور DNS
dig masterdns.ariaservice.local
نمونه خروجی
</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
و با فرمان زیر:
nslookup ariaservice.local
نمونه خروجی
</pre> <pre>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</pre> <pre>
حالا سرور اصلی DNS آماده استفاده است و باید خودمان را برای تنظیمات نصب سرور ثانویه کنیم.
نصب سرور 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.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&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;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 با کمک فرمانهای زیر صورت میگیرد.
systemctl enable named systemctl start named
حالا Zoneهای فوروارد و ریورس به صورت خودکار از سرور اصلی DNS به آدرس ‘/var/named/slaves/’ در سرور DNS ثانویه کپی میشوند.
ls /var/named/slaves/
نمونه خروجی
ariaservice.fwd&amp;nbsp; ariaservice.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
گام ۴) تنظیمات فایروال
حتماً باید به پورت پیشفرض شماره 53 سرویس DNS برای عبور از فایروال مجوّز میدهیم.
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.ariaservice.local
نمونه خروجی
</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>
و فرمان زیر:
dig secondarydns.ariaservice.local
نمونه خروجی
</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>
سپس فرمان زیر:
nslookup ariaservice.local
نمونه خروجی
</pre> <pre>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</pre> <pre>
تنظیمات جبهه کلاینت
جزئیات سرور DNS را در فایل ‘/etc/resolv.conf’ در کلیه سیستمهای کلاینت وارد کنید.
vi /etc/resolv.conf
به صورت زیر:
# Generated by NetworkManager search ariaservice.local nameserver 192.168.1.101 nameserver 192.168.1.102
حالا سرویس شبکه دوباره راهاندازی کنید یا سیستم را ریبوت کنید.
تست سرور DNS
حالا میتوانید با کمک یکی از فرمانهای زیر، سرور DNS را تست کنید.
dig masterdns.ariaservice.local dig secondarydns.ariaservice.local dig client.ariaservice.local nslookup ariaservice.local
کار ما در اینجا خاتمه یافت. در حال حاضر سرورهای DNS اصلی و ثانویه، آماده دسترسی و استفاده هستند.
جمعبندی
در این آموزش، نحوه نصب یک سرور DNS محلی را بر روی توزیع لینوکس CentOS 7 بررسی کردیم. امیدواریم که این مطلب نیز مورد توجه شما قرار گرفته باشد.
منبع: Unixmen.com