搭建DNS服務器


(1).實驗環境

  DNS服務器:youxi1  192.168.5.101

  測試主機:youxi2  192.168.5.102

(2).DNS資源記錄說明

  SOA資源記錄(起始授權資源記錄):全稱Start of Authority Record,定義了域的全局參數,進行整個域的管理設置。每個域在域開頭處都包含了一個SOA資源記錄,一個域文件只允許存在唯一的SOA記錄。

  NS資源記錄(域名服務器資源記錄):用來指定該域名由哪個DNS服務器來進行解析。每個域在域根處至少包含一個NS記錄。

  A資源記錄(地址資源記錄):用來把FQDN(全限定域名)映射到IP地址,正是因為有此記錄DNS服務器才能解析域名對應的IP地址。

  PTR資源記錄(指針資源記錄):用來把IP地址映射到FQDN,用於反向查詢。

  CNAME資源記錄(別名資源記錄):創建特定的FQDN的別名,隱藏用戶網絡的實現細節,使客戶機無法知道真正的域名。

  MX資源記錄(郵件交換資源記錄):為DNS域名指定郵件交換服務器。

  郵件交換服務器是為DNS域名處理或轉發郵件的主機。處理郵件指把郵件投遞到目的地或轉交另一不同類型的郵件傳送者。轉發郵件指把郵件發送到最終目的的服務器,用簡單郵件傳輸協議SMTP把郵件發送給離最終目的地最近的郵件交換服務器,或使郵件經過一定時間的排隊

(3).實驗

1)安裝DNS

[root@youxi1 ~]# yum -y install bind bind-chroot bind-utils

  BIND 全稱為Berkeley Internet Name Domain(伯克利因特網名稱域系統),BIND 主要有三個版本:BIND4、BIND8、BIND9。BIND8版本融合了許多提高效率、穩定性和安全性的技術,而BIND9 增加了一些超前的理念,例如IPv6支持、密鑰加密、多處理器支持、線程安全操作、增量區傳送等。

  bind包里包含了DNS服務的主程序包。

  bind-chroot包是bind的一個功能包,使bind可以在chroot模式下運行。也就是說bind運行的主目錄並不是系統的根目錄,只是系統的一個子目錄而已。這是為了提高安全性,使得訪問的范圍僅限於這個子目錄。

  bind-utils包是客戶端工具,系統默認安裝,用於搜索域名指令。

2)DNS相關配置文件

  /etc/named.conf 是BIND的核心配置文件,它包含了BIND 的基本配置,但其並不包括區域數據。

  /var/named/目錄是DNS數據庫文件存放目錄,每一個域文件都放在這里。

  注意:DNS服務器名是named,端口53用於客戶端查詢,端口953用於DNS主從同步

 

[root@youxi1 ~]# systemctl start named
[root@youxi1 ~]# systemctl enable named
[root@youxi1 ~]# netstat -antup | grep named
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2347/named          
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2347/named          
tcp6       0      0 ::1:53                  :::*                    LISTEN      2347/named          
tcp6       0      0 ::1:953                 :::*                    LISTEN      2347/named          
udp        0      0 127.0.0.1:53            0.0.0.0:*                           2347/named          
udp6       0      0 ::1:53                  :::*                                2347/named

 

3)配置文件參數

  在/etc/named.conf中大致分為針對全局生效,存放常規設置的options部分;以及針對某個區域,由各個區域設置的zone部分。另外還有logging(日志選項)和acl(訪問控制列表)可選。

  去除注釋后的/etc/named.conf配置文件如下:

[root@youxi1 ~]# cat /etc/named.conf 
options {
//指定BIND通過哪些網絡接口和哪個端口來接收客戶端請求。如果省略端口號,則使用默認端口53。127.0.0.1允許接收來自本地的請求。如果完全省略此項或網絡接口是any,則默認使用所有端口。
        listen-on port 53 { 127.0.0.1; };
//指定BIND通過哪個端口監聽IPv6客戶端請求。IPv6,服務器只接受通配符地址,any和none。
        listen-on-v6 port 53 { ::1; };
//BIND可以在該目錄中找到包含區域數據的文件
        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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
//定義客戶端可以自此發送DNS請求的網絡。可以用地址信息(192.168.5.101/24)替換或使用any替換
        allow-query     { localhost; };
        recursion yes;
        dnssec-enable yes;
        dnssec-validation yes;
        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";  //區域文件,需要手動創建。范例文件為named.localhost
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

  type字段指定區域的類型,對於區域的管理至關重要,一共分為5種:

  master:主DNS服務器,擁有區域數據文件,並對此區域提供管理數據。

  slave:輔助DNS服務器,擁有主DNS服務器的區域數據文件的副本,服務器DNS服務器會從主DNS服務器同步所有區域數據。

  stub:stub區域與slave區域類似,但只復制主DNS服務器上的NS記錄,而不像slave會復制所有區域數據

  forward:轉發配置域

  hint:根域服務器的初始化使用的參數

4)搭建內網DNS服務器

  備份DNS服務器的配置文件/etc/named.conf

[root@youxi1 ~]# cp /etc/named.conf /etc/named.conf.bak

  修改DNS服務器的配置文件/etc/named.conf

[root@youxi1 ~]# cat /etc/named.conf
options {
        listen-on port 53 { any; };  //修改為
        listen-on-v6 port 53 { any; };  //修改為any
        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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { any; };
        recursion yes;
        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;  //添加此行
        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 "test.cn" IN {  //區域名稱改為test.cn
        type master;  //區域類型為主DNS服務器
        file "test.cn.zone";  //區域文件,需要手動創建。范例文件為named.localhost
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

  創建區域文件,修改權限,並進行修改

//-a選項保留源文件的權限
[root@youxi1 ~]# cp -a /var/named/named.localhost /var/named/test.cn.zone
-rw-r----- 1 root named 257 5月 20 17:13 /var/named/test.cn.zone
[root@youxi1 ~]# vim /var/named/test.cn.zone
$TTL 1D  //設置有效地址解析記錄的默認緩存時間,默認為1天
//test.cn.也可以使用@,表示當前的域
//dns.test.cn.該域的主域名
//root.test.cn.管理員郵件地址
test.cn.        IN SOA  dns.test.cn. root.test.cn. (
//更新序列號,用於標示數據庫的變換,可以在10位以內。如果存在輔助DNS區域,建議每次更新完數據庫,手動加1
                                        0       ; serial
//刷新時間,從域名服務器更新該地址數據庫文件的間隔時間,默認為1天
                                        1D      ; refresh
//重試延時,從域名服務器更新地址數據庫失敗后,等待多長時間,默認為1小時
                                        1H      ; retry
//到期失效時間,超過改時間人無法更新地址數據庫,那么不再嘗試,默認為1周
                                        1W      ; expire
//無效地址解析記錄默認緩存時間(該數據庫中不存在的地址),默認為3小時。
                                        3H )    ; minimum
test.cn.        NS      dns.test.cn.
dns.test.cn.    A       192.168.5.101
www.test.cn.    A       192.168.5.101
cname.test.cn.  CNAME   www.test.cn.

  重啟DNS服務器

[root@youxi1 ~]# systemctl restart named

  到測試主機youxi2上修改DNS地址和網卡信息,然后重啟網絡服務

[root@youxi2 ~]# vim /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.5.101
[root@youxi2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="yes"
NAME="ens33"
UUID="a12d9bb2-85cb-4db0-9b94-e4ed3baa6470"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.5.102"
PREFIX="24"
GATEWAY="192.168.5.2"
DNS1="192.168.5.101"
[root@youxi2 ~]# systemctl restart network

  最后測試

[root@youxi2 ~]# ping www.test.cn
PING www.test.cn (192.168.5.101) 56(84) bytes of data.
64 bytes from youxi1.cn (192.168.5.101): icmp_seq=1 ttl=64 time=2.73 ms
64 bytes from youxi1.cn (192.168.5.101): icmp_seq=2 ttl=64 time=0.423 ms
^C
--- www.test.cn ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 0.423/1.581/2.739/1.158 ms
[root@youxi2 ~]# ping cname.test.cn
PING www.test.cn (192.168.5.101) 56(84) bytes of data.
64 bytes from youxi1.cn (192.168.5.101): icmp_seq=1 ttl=64 time=4.39 ms
64 bytes from youxi1.cn (192.168.5.101): icmp_seq=2 ttl=64 time=0.414 ms
^C
--- www.test.cn ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.414/2.405/4.396/1.991 ms
[root@youxi2 ~]# ping dns.test.cn  
PING dns.test.cn (192.168.5.101) 56(84) bytes of data.
64 bytes from youxi1.cn (192.168.5.101): icmp_seq=1 ttl=64 time=2.81 ms
64 bytes from youxi1.cn (192.168.5.101): icmp_seq=2 ttl=64 time=0.388 ms
^C
--- dns.test.cn ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.388/1.601/2.814/1.213 ms

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM