DNS域名管理服務學習筆記

DNS域名管理服務

1、DNS介紹

  • 域名:

有特定的格式組成,用來表示互聯網中某一臺計算機或者計算機組的名稱,可以是人更方便的訪問互聯網,而不用記住可以被機器直接讀取的IP地址。linux

1.DNS的做用

  • 域名的正向解析shell

    將主機域名轉換爲對應的IP地址,以便網絡程序可以經過主機域名訪問到對應的服務器主機vim

    域名——>IP A記錄緩存

  • 域名的方向解析安全

    將主機的IP地址轉換爲對應的域名,以便網絡(服務)程序可以經過IP地址查詢到主機的域名服務器

    IP——>域名 PTR記錄網絡

2.DNS協議及端口

  • TCP 53(主從同步)
  • UDP 53(正常查詢)
  • 啓動腳本:/etc/init.d/named

3.DNS的結構

DNS域名管理服務學習筆記

根域.dom

  • 在整個DNS系統的最上方必定是.(小數點)這個DNS服務器(稱爲root),也叫「根域」。
  • 根域<13臺 全世界只有13臺;1個位主根服務器,放置在美國。其他12個均爲輔根服務器,其中9個放置在美國,歐洲2個,位於英國和瑞典,亞洲1個,位於日本

一級域名<頂級域|國家域>ssh

com :頂級域,由ICANN組織指定和管理tcp

分類:

  • 國家地區域名:cn(中國)、hk(香港)、sg(新加坡)等
  • 通用頂級域名:com(商業機構)、org(非營利組織)、edu(教育機構)等
  • 新通用頂級域名:red(紅色、熱情)、top(頂級、高端)

baidu:二級域(註冊域),可由我的或組織申請註冊

www:三級域(子域),服務器網站名錶明

域名機構

收費:新網|萬網

免費域名:TK頂級域名、TK域名DNS、TK域名商

http://www.freehao123.com

3.DNS工做原理

DNS域名管理服務學習筆記

  • 客戶機首先查找本地hosts文件,若是有則返回,不然進行下一步

  • 客戶機查看本地緩存,是否存在本條目的緩存,若是有則直接返回,不然進行下一步

  • 將請求轉發給指向的DNS服務器

  • 查看域名是否本地解析,是則本地解析返回,不然進行下一步

  • 本地DNS服務器首先在緩存中查找,有則返回,無則進行下一步

若是詢問一次獲得結果 遞歸查詢 C-S

若是詢問屢次獲得結果 迭代查詢 S-S

dig +trace www.baidu.com    --追蹤dns解析過程
dig @server www.baiducom    --正向解析查詢
dig -x 192.168.0.1 @server  --反向解析查詢
dig +trace www.baidu.com    --追蹤一個域名解析過程

2、DNS服務器搭建

  • DNS的域名解析都是udp/53. 主從之間的數據傳輸默認使用tcp/53

  • DNS軟件:

    Bind是一款開放源碼的DNS服務器軟件,Bind由美國加州大學Berkeley(伯克利)分校開發和維護的,全名爲Berkeley Internet Name Domain,它是目前世界上使用最爲普遍的DNS服務器軟件,支持各類Unix平臺和Windows平臺。Bind如今由互聯網系統協會(Internet Systems Consortium)負責開發與維護

需求1:

搭建DNS服務器,可以將www.misshou.io解析成192.168.1.254——>正向解析

思路:

  1. 關閉防火牆和selinux

    [root@localhost ~]# vim /etc/sysconfig
    [root@localhost ~]# vim /etc/sysconfig/network
    [root@localhost ~]# service iptables stop
    [root@localhost ~]# chkconfig iptables off
    [root@localhost ~]# getenforce 
    Permissive
    [root@localhost ~]# vim /etc/sysconfig/selinux
    [root@localhost ~]# grep ^SELINUX /etc/sysconfig/selinux
    SELINUX=disabled
    SELINUXTYPE=targeted
  2. 配置yum源

    已配,略

  3. 軟件三部曲

    • 查看並安裝軟件

      [root@server ~]#yum -y install bind
    • 肯定成功安裝

      [root@server ~]# rpm -q bind
      bind-9.8.2-0.30.rc1.el6.x86_64
    • 查看軟件列表

      /etc/logrotate.d/named         --日誌輪轉文件
      /etc/named                     --配置文件的主目錄
      /etc/named.conf                    --主配置文件
      /etc/named.rfc1912.zones       --Zone文件,定義域
      /etc/rc.d/init.d/named         --啓動腳本
      
      /usr/sbin/named                    --二進制命令
      /usr/sbin/named-checkconf      --檢查配置文件的命令 named.conf  named.rfc1912.zones
      /usr/sbin/named-checkzone      --檢查區域文件的命令 
      
      /var/log/named.log             --日誌文件
      /var/named                     --數據文件的主目錄
      /var/named/data
      /var/named/named.ca                --根域服務器
      /var/named/named.empty
      /var/named/named.localhost     --正向解析區域文件的模板
      /var/named/named.loopback      --反向解析區域文件的模板
      /var/named/slaves              --從dns服務器下載文件的默認路徑
      /var/run/named                 --進程文件
  4. 瞭解配置文件(語法、參數配置)——>man 5 xxx.conf

    • 主配置文件:
    [root@server ~]# vim /etc/named.conf
    options {
           listen-on port 53 { 127.0.0.1; any; };       --監聽方式,any表示全網監聽    
           listen-on-v6 port 53 { ::1; };
           directory       "/var/named";                --數據文件的主目錄
           dump-file       "/var/named/data/cache_dump.db"; --DNS緩存
           statistics-file "/var/named/data/named_stats.txt";   --統計
           memstatistics-file "/var/named/data/named_mem_stats.txt";    --內存統計
           allow-query     { localhost; any; };     --容許哪些人能夠查詢;any表明任何人
           recursion yes;                               --是否遞歸
    
           dnssec-enable yes;                           --dns安全擴展機制(簽名認證)
           dnssec-validation yes;
           dnssec-lookaside auto;
    
           /* Path to ISC DLV key */
           bindkeys-file "/etc/named.iscdlv.key";
    
           managed-keys-directory "/var/named/dynamic";
    };
    說明:
    #DNSSEC 域名系統安全,它是DNS的安全擴展協議
    #DLV DNSSEC 後備祕鑰
    #這些安全機制的設定,是爲了保護DNS服務器與用戶之間的數據安全,避免惡意數據對用戶的欺騙
    
    zone "." IN {
           type hint;
           file "named.ca";
    };
    
    include "/etc/named.rfc1912.zones";
    include "/etc/named.root.key";
    • 子配置文件:
    [root@server ~]# vim /etc/named.rfc1912.zones
    
    //定義正向域的模板
    zone "localhost.localdomain" IN {
           type master;
           file "named.localhost";
           allow-update { none; };
    };
    
    //定義反向域的模板
    zone "1.0.0.127.in-addr.arpa" IN {
           type master;
           file "named.loopback";
           allow-update { none; };
    };
    
    [root@server named]# cd /var/named/
    [root@server named]# ll
    -rw-r-----. 1 root  named  152 Jun 21  2007 named.localhost
    -rw-r-----. 1 root  named  168 Dec 15  2009 named.loopback
    drwxrwx---. 2 named named 4096 Oct 15  2014 slaves
    
    #解釋:
    #    $ITL    --緩存的生命週期
    #    @ = zonename = cnpcic.com   --當前域
    #    IN      --互聯網
    #    SOA     --開始受權
    #    NS      --DNS服務端    nameserver
    #    A       --ipv4正向
    #    AAAA    --ipv6
    #    CNAME   --別名
    #    MX      ---郵件交互記錄   5 表明數字優先級 數字越小優先級越高
    
    [root@server named]# cat named.localhost
    $TTL 1D
    @    IN SOA  @ rname.invalid. (
                    0   ; serial        --更新序列號
                    1D  ; refresh       --更新間隔(從服務器下載數據)
                    1H  ; retry         --失敗重試
                    1W  ; expire        --區域文件的過時時間
                    3H )    ; minimum   --緩存的最小生存週期
    NS  @
    A   127.0.0.1
    AAAA    ::1
  5. 根據需求經過修改配置文件完成服務的搭建

    dnl.cnpcchad.cot——>10.184.162.99

    #1.修改主配置文件/etc/named.conf——>監聽方式和容許誰來查詢
    [root@server ~]# vim /etc/named.conf
    options {
           listen-on port 53 { 127.0.0.1; any; }; --any全網監聽
           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; any; }; --any容許任何人查詢
           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";
    };
    
    #2.修改子配置文件/etc/named.rfc1912.zones ——>定義管理域 cnpcchad.cot
    [root@server ~]# vim /etc/named.rfc1912.zones
    在該文件最後面添加以下內容:
    zone "cnpcchad.cot" IN {
           type master;
           file "cnpcchad.cot.zone";
           allow-update { none; };
    };
    
    #3.在/var/named目錄建立相應的zone文件(cnpcchad.cot.zone)
    [root@server ~]# ll /var/named
    -rw-r-----. 1 root  named  152 Jun 21  2007 named.localhost
    
    [root@server ~]# cp -p /var/named/named.localhost /var/named/cnpcchad.cot.zone
    [root@server ~]# ll /var/named/cnpcchad.cot.zone
    -rw-r-----. 1 root named 152 Jun 21  2007 /var/named/cnpcchad.cot.zone
    
    [root@server ~]# vim /var/named/cnpcchad.cot.zone
    $TTL 1D
    @       IN SOA cnpcchad.cot. rname.invalid. (
                                           0       ; serial
                                           1D      ; refresh
                                           1H      ; retry
                                           1W      ; expire
                                           3H )    ; minimum
    @       NS      dns1.cnpcchad.cot.       //dns1能夠任意指定,可是需跟後面的A記錄保持一致
    dns1    A       192.168.1.128            //前兩行必定是當前DNS服務器的IP
    daniela  A       192.168.1.129
           AAAA    ::1
    
    #4.使用命令檢查當前配置語法是否正確
    [root@server ~]# named-checkconf /etc/named.conf
    [root@server ~]# named-checkconf /etc/named.rfc1912.zones
    [root@server ~]# cd /var/named/
    [root@server named]# ls
    cnpcchad.cot.zone  data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
    [root@server named]# named-checkzone cnpcchad.cot.zone cnpcchad.cot.zone //區域文件寫2遍
    zone cnpcchad.cot.zone/IN: loaded serial 0
    OK
  6. 啓動服務,開機自啓動

    [root@server named]# service named start
    Generating /etc/rndc.key:                                  [  OK  ]
    Starting named:                                            [  OK  ]
    [root@server named]# chkconfig named on
    [root@server named]# netstat -nltup|grep 53
    tcp        0      0 192.168.1.128:53            0.0.0.0:*                   LISTEN      20137/named         
    tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN      20137/named         
    tcp        0      0 127.0.0.1:953               0.0.0.0:*                   LISTEN      20137/named         
    tcp        0      0 ::1:53                      :::*                        LISTEN      20137/named         
    tcp        0      0 ::1:953                     :::*                        LISTEN      20137/named         
    udp        0      0 192.168.1.128:53            0.0.0.0:*                               20137/named         
    udp        0      0 127.0.0.1:53                0.0.0.0:*                               20137/named         
    udp        0      0 ::1:53                      :::*                                    20137/named
  7. 測試驗證

client端:192.168.1.129

#1.指定DNS服務器
[root@client ~]# echo nameserver 192.168.1.128 > /etc/resolv.conf 
[root@client ~]# cat /etc/resolv.conf 
nameserver 192.168.1.128
#2.使用相應的工具測試
[root@client ~]# service iptables stop
iptables:將鏈設置爲政策 ACCEPT:filter                    [肯定]
iptables:清除防火牆規則:                                 [肯定]
iptables:正在卸載模塊:                                   [肯定]
[root@client ~]# getenforce
Enforcing
[root@client ~]# setenforce 0
[root@client ~]# getenforce
Permissive

#nslookup命令
[root@client ~]# nslookup daniela.cnpcchad.cot
Server:     192.168.1.128
Address:    192.168.1.128#53

Name:   daniela.cnpcchad.cot
Address: 192.168.1.129

#dig命令
[root@client ~]# dig @192.168.1.128 daniela.cnpcchad.cot
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> @192.168.1.128 daniela.cnpcchad.cot
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52861
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;daniela.cnpcchad.cot.      IN  A

;; ANSWER SECTION:
daniela.cnpcchad.cot.   86400   IN  A   192.168.1.129

;; AUTHORITY SECTION:
cnpcchad.cot.       86400   IN  NS  dns1.cnpcchad.cot.

;; ADDITIONAL SECTION:
dns1.cnpcchad.cot.  86400   IN  A   192.168.1.128

;; Query time: 2 msec
;; SERVER: 192.168.1.128#53(192.168.1.128)
;; WHEN: Thu Nov 21 17:51:39 2019
;; MSG SIZE  rcvd: 89

#host命令
[root@client ~]# host daniela.cnpcchad.cot
daniela.cnpcchad.cot has address 192.168.1.129
daniela.cnpcchad.cot has IPv6 address ::1

結果:
1.看到以上信息說明正向解析沒有問題
2.不可以方向解析,緣由沒有配置
3.若是配置文件沒有錯誤,服務啓動了,那麼解析不了需檢查你的防火牆selinux和網絡

需求2:

搭建DNS服務器,可以正向和方向解析192.168.1.254——www.misshou.io
步驟:

#1./etc/named.conf
#2./etc/named.rfc1912.zones     //定義了cnpcchad.cot正向域
[root@server ~]# vim /etc/named.rfc1912.zones
zone "1.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.1.zone";
        allow-update { none; };
};
#3.建立192.168.1.zone文件
[root@server ~]# vim /var/named/192.168.1.zone 
$TTL 1D
@       IN SOA  cnpcchad.cot rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@       NS      dns1.cnpcchad.cot   //若是dns1.cnpcchad.cot在正向區域文件存在,能夠不用寫A記錄
dns1    A       192.168.1.128
128     PTR     daniela.cnpcchad.cot.   //128對應的是192.168.1.128

#4.重啓服務
[root@server ~]# service named restart
Stopping named:                                            [  OK  ]
Starting named:                                            [  OK  ]

#5.測試驗證
[root@client ~]#echo nameserver 192.168.1.128 >/etc/resolv.conf
[root@client ~]# cat /etc/resolv.conf
nameserver 192.168.1.128
#方式1:
[root@client ~]# nslookup daniela.cnpcchad.cot
Server:     192.168.1.128
Address:    192.168.1.128#53

Name:   daniela.cnpcchad.cot
Address: 192.168.1.129

[root@client ~]# nslookup 192.168.1.129
Server:     192.168.1.128
Address:    192.168.1.128#53

129.1.168.192.in-addr.arpa  name = daniela.cnpcchad.cot.
#方式2:
[root@client ~]# dig @192.168.1.128 -x 192.168.1.129

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> @192.168.1.128 -x 192.168.1.129
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13524
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;129.1.168.192.in-addr.arpa.    IN  PTR

;; ANSWER SECTION:
129.1.168.192.in-addr.arpa. 86400 IN    PTR daniela.cnpcchad.cot.

;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 86400   IN  NS  dns1.cnpcchad.cot.

;; ADDITIONAL SECTION:
dns1.cnpcchad.cot.  86400   IN  A   192.168.1.128

;; Query time: 1 msec
;; SERVER: 192.168.1.128#53(192.168.1.128)
;; WHEN: Fri Nov 22 09:07:04 2019
;; MSG SIZE  rcvd: 113
#方式3:
[root@client ~]# host 192.168.1.129
129.1.168.192.in-addr.arpa domain name pointer daniela.cnpcchad.cot.

3、主從DNS搭建

1.搭建時間同步服務器

方法1:

ntp(network time protocol) 端口:123

[root@server ~]# vim /etc/ntp.conf
restrict 192.168.1.0 mask 255.255.0.0 nomodify notrap   //容許192.168.1.0網段的主機同步時間
restrict 172.16.0.0 mask 255.255.0.0 nomodify notrap
restrict 10.1.1.0 mask 255.0.0.0 nomodify notrap    

[root@client ~]# ntpdate 192.168.1.128

方法2:

vim /etc/xinetd.d/time-dgram
service time
{
# This is for quick on or off of the service
        disable         = no
        ...

}

[root@server ~]# vim /etc/xinetd.d/time-stream 
service time
{
        disable         = no
        ...
}

[root@server ~]# netstat -nltup|grep :37
tcp        0      0 :::37                       :::*                        LISTEN      5005/xinetd         
[root@server ~]# netstat -nltup|grep 37
tcp        0      0 :::37                       :::*                        LISTEN      5005/xinetd 
#客戶端同步時間:
[root@client2 ~]# rdate -s 192.168.1.128
[root@client2 ~]# date
Fri Nov 22 08:36:12 PST 2019

2.部署安裝

思路:

1.master和slave的系統時間保持一致

2.slave服務器上安裝相應的軟件(系統版本、軟件版本高度保持一致)

3.根據需求修改相應的配置文件(master和slave都應該去修改)

步驟:

#1.同步master和slave的系統時間
master和slave上都要操做:
[root@master-server ~]# crontab -e
*/2 * * * *  /usr/bin/rdate -s 192.168.1.128 &>/dev/null

[root@master-slave ~]# crontab -e
*/2 * * * *  /usr/bin/rdate -s 192.168.1.128 &>/dev/null

#2.搭建備用的dns服務器
--如下操做在slave上進行
1)安裝軟件
yum -y install bind
2)修改配置文件
[root@slave-server ~]# vim /etc/named.conf
#兩個any      定義監聽方式以及容許誰來查詢
3)修改子配置文件   
[root@slave-server ~]# vim /etc/named.rfc1912.zones
在文件的最下面增長如下內容:
zone "cnpcchad.cot" IN {
        type slave;         //類型是slave
        masters {192.168.1.128;};   //指定master dns的ip地址
        file "salves/slave.cnpcchad.cot";   //同步過來的文件的保存路徑及名字
};

#3.在master上操做
1)/etc/named.conf

2)/etc/named.rfc1912.zones
zone "cnpcchad.cot" IN {
        type master;
        file "cnpcchad.cot.zone";
        allow-update { none; };         //刪除此行
};

#4.測試驗證
[root@client2 ~]# service iptables stop
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]     
[root@client2 ~]# getenforce 
Enforcing
[root@client2 ~]# setenforce 0
[root@client2 ~]# echo nameserver 192.168.1.128 > /etc/resolv.conf
[root@client2 ~]# echo nameserver 192.168.1.129 >> /etc/resolv.conf
[root@client2 ~]# nslookup daniela.cnpcchad.cot
Server:     192.168.1.128
Address:    192.168.1.128#53

Name:   daniela.cnpcchad.cot
Address: 192.168.1.254

[root@client2 ~]# nslookup daniela.cnpcchad.cot
Server:     192.168.1.129
Address:    192.168.1.129#53

Name:   daniela.cnpcchad.cot
Address: 192.168.1.254

思考:若是隻容許指定的slave來同步數據怎麼作?

options {
        listen-on port 53 { 127.0.0.1; any; };
        listen-on-v6 port 53 { ::1; };
        allow-transfer  {192.168.1.129;};   //指定容許哪一個slave來下載數據
        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; any; };
        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";
};
相關文章
相關標籤/搜索