域名解析系統 —— DNS服務

前言:

最近整理一些之前的學習筆記。
過去都是存儲在本地,這次傳到網絡留待備用。web


 

DNS

  • 域名系統(Domain Name System)
  • 做爲將域名和IP地址相互映射的一個分佈式數據庫,可以令人更方便地訪問互聯網
  • 目前,每一級域名長度的限制是63個字符,域名總長度則不能超過253個字符
  • 協議: TCP/UDP
  • 默認端口: 53
  • DNS服務器的功能:
    • 正向解析:根據註冊的域名查找對應的ip地址
    • 反向解析:根據ip地址查找對應的註冊域名,不經常使用
  • FQDN(Full Qualified Domain Name),完整合格域名shell

    • 網站名 = 服務器名.域名後綴
    • www.pku.edu.cn = 站點名.***.二級域.一級域
  • 全部完整的域名都會以 .(點) 結尾:數據庫

    根域 .
      ┌─────┬─────┼─────┬─────┬─────┬──────┬─
    .com   .cn   .us   .tw   .kr   .hk   .......  #一級DNS服務器
      ┌─────┴────┬─────────┬─────────┬─
    .com.cn   .net.cn   .org.cn  .edu.cn          #二級DNS服務器
      ├─────────────────┬───────────────┬─
    .lala.com.cn   .haha.com.cn   .xixi.com.cn    #三級DNS服務器
          ├─────────────────────┬─
      web1.lala.com.cn    tts.lala.com.cn         #完整主機名
  • 常見的頂級域名/一級域名:vim

    國家/地區域 .cn .us .kr .hk .tw ...
    組織域 .com .net .edu .org .gov ...

 

DNS解析庫

  • 資源記錄:rr(resource record),有類型的概念;用於此記錄解析的屬性。

    資源記錄 名稱 意義
    A Address地址 IPv4 此記錄列出特定主機名的 IP 地址
    AAAA Address地址 IPv6
    NS Name Server域名服務器 此記錄指定負責給定區域的名稱服務器
    SOA Start of Authority受權狀態
    MX Mail Exchanger郵件交換 此記錄列出了負責接收發到域中的電子郵件的主機
    CNAME Canonical Name規範名 此記錄指定標準主機名的別名
    PTR Pointer指針

 

DNS查詢過程

  • DNS查詢機制:

    • 遞歸查詢(Recursive Query)
      • 首選DNS服務器,跑到相應其餘DNS服務器上,將詢問的最終結果帶回來的過程
      • 客戶端與首選DNS服務器交互
      • 默認開啓遞歸查詢( recursion yes|no )
    • 迭代查詢(Iterative Query)
      • 首選DNS服務器與其餘DNS服務器交互
  • DNS的查詢順序:

    一、本地hosts文件   二、本地DNS緩存   三、本地DNS服務器   四、發起迭代查詢

 

BIND域名服務

  • Berkeley Internet Name Domain , 伯克利因特網域名服務
  • 是目前世界上使用最爲普遍的DNS服務器軟件,支持各類unix平臺和windows平臺
  • 官網: https://www.isc.org/
  • 軟件:
    • bind , 域名服務包
    • bind-chroot , 提供虛擬根支持,依賴bind
  • 系統服務: named
  • 協議端口: TCP/UDP 53
  • 運行時的虛擬根路徑: /var/named/chroot
  • 主配置文件: /etc/named.conf      //設置負責本機解析的域名
  • 地址庫文件: /var/named      //主機名與ip地址的對應關係


 

1、搭建基本的DNS服務器

svr7.test.cn  ---> 192.168.4.7
pc207.test.cn ---> 192.168.4.207
www.test.cn   ---> 192.168.4.100

服務端(192.168.4.7)

1.安裝軟件包

]# yum -y install bind bind-chroot

2.修改配置文件

]# vim /etc/named.conf
options {
    listen-on port 53 { 192.168.4.7; };   #監聽服務器的地址和端口
    directory    "/var/named";            #默認,指定地址庫文件存放路徑
    allow-query  { any; };                #容許任何客戶機查詢
};
zone    "test.cn"    IN {          #指定本機負責解析的域名
    type    master;                #指定本機爲權威的主DNS服務器
    file    "test.cn.zone";        #指定地址庫文件爲test.cn.zone
};

]# named-checkconf /etc/named.conf  #檢查配置文件語法

3.創建地址區域文件

]# cd /var/named/                           #準備模板文件
]# cp -p named.localhost test.cn.zone       #權限屬性不變拷貝模板
]# ls -l test.cn.zone
-rw-r----- 1 root named 152 6月  21 2007 test.cn.zone

]# vim test.cn.zone                 #編輯區域文件
$TTL 1D                                 ;TTL=Time To Live=生存時間
@   IN SOA  @ rname.invalid. (          ;SOA=Start Of Authority=受權信息開始,@區域名
                    0   ; serial,序列號        ;分號; 開始的部分表示註釋
                    1D  ; refresh,刷新時間
                    1H  ; retry,重試時間間隔
                    1W  ; expire,過時時間
                    3H )    ; minimum,沒法解析時否認答案的TTL值
test.cn.   NS  svr7          ;NS=NameServer,聲明test.cn.域名的DNS服務器爲svr7.test.cn.
svr7       A   192.168.4.7   ;指定svr7.test.cn.的ip地址爲192.168.4.7
www        A   1.1.1.1    
ftp        A   2.2.2.2

]# named-checkzone test.cn test.cn.zone     #檢查配置文件,命令 區域名 配置文件
zone test.cn/IN: loaded serial 0
OK                                         #檢查結果ok

4.啓服務

]# systemctl restart named
]# systemctl enable named

 

客戶端

1.設置DNS服務器

]# echo 'nameserver    192.168.4.7 > /etc/resolv.conf'

2.檢測域名解析

  • host
    ]# host svr7.test.cn
    svr7.test.cn has address 192.168.4.7
  • nslookup
    ]# nslookup www.test.cn
    Server:		192.168.4.7
    Address:	192.168.4.7#53
    Name:	www.test.cn
    Address: 1.1.1.1


 

2、多區域DNS服務

1.修改配置文件(接上例192.168.4.7)

]# vim /etc/named.conf          #追加新的區域
zone  "qq.com"   IN  {
    type master;
    file  "qq.com.zone";
};

2.編輯區域文件

]# cp -p /var/named/test.cn.zone /var/named/qq.com.zone
]# vim qq.com.zone
$TTL 1D
@   IN SOA  @ rname.invalid. (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
qq.com.  NS  svr7   
svr7     A   192.168.4.7
www      A   3.3.3.3
ftp      A   4.4.4.4

3.重啓服務

]# systemctl restart named

4.客戶端測試

]# nslookup www.qq.com
Server:		192.168.4.7
Address:	192.168.4.7#53
Name:	www.qq.com
Address: 3.3.3.3

 

3、特殊的解析記錄

接上例windows

1.基於DNS域名的負載均衡:

#服務端
]# vim qq.com.zone
$TTL 1D
@   IN SOA  @ rname.invalid. (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
qq.com.  NS    svr7 
svr7      A    192.168.4.7
www       A    192.168.4.11         ;配置www的負載均衡
www       A    192.168.4.12
www       A    192.168.4.13
ftp       A    4.4.4.4

]# systemctl restart named

#客戶端測試
]# nslookup www.qq.com
Server:		192.168.4.7
Address:	192.168.4.7#53
Name:	www.qq.com
Address: 192.168.4.12
Name:	www.qq.com
Address: 192.168.4.13
Name:	www.qq.com
Address: 192.168.4.11

2.泛域名解析:

服務器:
]# cd /var/named
]# vim qq.com.zone
$TTL 1D
@   IN SOA  @ rname.invalid. (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
qq.com.  NS    svr7
svr7      A    192.168.4.7
www       A    192.168.4.11
www       A    192.168.4.12
www       A    192.168.4.13
ftp       A    4.4.4.4
*         A    1.2.3.4            ;泛域名解析
]# systemctl restart named

客戶端:
]# host ftp.qq.com
ftp.qq.com has address 4.4.4.4
]# host fan.qq.com
fan.qq.com has address 1.2.3.4

3.有規律的泛域名解析:

web1.qq.com------》192.168.10.1
web2.qq.com------》192.168.10.2
web3.qq.com------》192.168.10.3
web4.qq.com------》192.168.10.4
......
web50.qq.com------》192.168.10.50

函數: $GENERATE 生成連續範圍的數字緩存

服務器:
]# cd /var/named/
]# vim qq.com.zone
$TTL 1D
@   IN SOA  @ rname.invalid. (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
qq.com.  NS    svr7
svr7      A    192.168.4.7
www       A    192.168.4.11
www       A    192.168.4.12
www       A    192.168.4.13
ftp       A    4.4.4.4
*         A    1.2.3.4            ;泛域名解析
$GENERATE  1-50  web$   A   192.168.10.$    ;使用$GENERATE函數生成有規律的泛域名解析

]# systemctl restart named

#客戶端
]# host web.qq.com
web.qq.com has address 1.2.3.4
]# host web1.qq.com
web1.qq.com has address 192.168.10.1
]# host web11.qq.com
web11.qq.com has address 192.168.10.11
]# host web50.qq.com
web50.qq.com has address 192.168.10.50

 

4、DNS的子域受權

接上例服務器

父域    www.test.cn       總公司        svr7 服務器 192.168.4.7
子域    www.bj.test.cn    北京分公司     pc207 服務器 192.168.4.207
  • 父域主機配置子域受權(192.168.4.7)

    ]# cd /var/named
    ]# vim  test.cn.zone
    test.cn.     NS   svr7
    bj.test.cn.  NS   pc207.bj            ;指定子域的DNS服務器
    svr7         A    192.168.4.7
    pc207.bj     A    192.168.4.207 
    www          A    1.1.1.1    
    ftp          A    2.2.2.2
    ]# systemctl restart named
  • 子域主機配置(192.168.4.207)

    ]# yum -y install bind bind-chroot      #安裝軟件
    ]# vim /etc/named.conf                  #修改配置文件
    options  {
        directory  "/var/named";
    };
    zone  "bj.test.cn"   IN  {      ;解析子域域名
        type  master;
        file  "bj.test.cn.zone";
    };
    ]# cd /var/named
    ]# cp -p named.localhost bj.test.cn.zone
    ]# vim bj.test.cn.zone       #編輯區域文件
    $TTL 1D
    @   IN SOA  @ rname.invalid. (
                        0   ; serial
                        1D  ; refresh
                        1H  ; retry
                        1W  ; expire
                        3H )    ; minimum
    bj.test.cn.   NS  pc207             ;設置域服務器
    pc207         A   192.168.4.207   
    www           A   11.12.13.14
    ]# systemctl restart named              #重啓服務
    ]# systemctl enable named
  • 測試

    ]# nslookup www.bj.test.cn 192.168.4.207
    Server:		192.168.4.207
    Address:	192.168.4.207#53
    Name:	www.bj.test.cn
    Address: 11.12.13.14

 

5、緩存DNS

  • 做用:加速解析過程,讓客戶端最快獲得解析結果。

  • 軟件包:bind bind-chroot

  • 方式

    • 全局轉發:

      • 將請求轉發給指定的公共DNS(其餘緩存DNS),請求遞歸服務。
    • 根域迭代:

      • 依次向根、一級、二級...域的DNS服務器迭代。
  • 實例:

    • 思路:192.168.4.254做爲緩存DNS服務器,真正的DNS是172.40.1.10

    1.安裝軟件包

    ]# yum -y install bind bind-chroot

    2.編輯配置文件

    ]# cat /etc/resolv.comf
    nameserver 172.40.1.10
    
    ]# vim /etc/named.conf
    options {
        directory    "/var/named";
        forwarders    { 172.40.1.10; };     #當本地緩存中沒有對應的解析時指定去172.40.1.10解析
    };
    ]# systemctl restart named

    3.客戶端.虛擬機使用解析

    ]# nslookup www.360.com 192.168.4.254

 

6、Split分離解析

  • 讓客戶端訪問網絡中最近的服務器。
  • 當不一樣類別的客戶機請求解析同一個域名時,獲得不一樣的解析結果(Ip)。
  • 當收到客戶機的DNS查詢請求的時候,可以區分客戶機的來源地址,爲不一樣類別的客戶機提供不一樣的解析結果(IP地址)。

BIND的view視圖

  • 根據源地址集合將客戶機分類,不一樣客戶機得到不一樣結果(待遇有差異)。網絡

    • 注意:客戶機分類得當(全部的客戶端都要找到對應的分類)
    • 注意:由上到下匹配,匹配即中止
    • 注意:全部的zone都必須在view字段中
  • 格式:負載均衡

    view    "視圖名"    {
     match-clients    { IP; }    //匹配客戶端地址
     zone    "解析的域名" {
     ...    地址庫1;
     }
    };
    view   "nsd"    {
     match-clients   {  192.168.4.207;  }   #匹配客戶端的地址
     zone "test.cn"    {
     ...... 地址庫1;
    }; };
    
    view   "abc"   {
     match-clients  {   any;   }             
     zone "test.cn"    {                           
     ...... 地址庫2;
    }; };
  • 實例,環境及需求:分佈式

    • 權威DNS:svr7.test.cn 192.168.4.7
    • 負責區域:test.cn
    • A記錄分離解析 —— 以 www.test.cn 爲例
    • 客戶機的解析結果:
      • 192.168.4.207 -----> 192.168.4.100
      • 其餘地址 ----------> 1.2.3.4
    操做步驟
    
    虛擬機A
    1.修改配置文件/etc/named.conf
    view  "nsa"  {
        match-client  { 192.168.4.207; };
        zone  "test.cn"  {
        type    master;
        file    "test.cn.nsd";
        };
    };
    view  "abc"  {
        match-client  { any; };
        zone  "test.cn"  {
        type  master;
        file  "test.cn.abc";
        };
    };
    
    2.創建地址庫文件
    ]# vim /var/named/test.cn.nsd
    test.cn.    NS   svr7
    svr7        A    192.168.4.7
    www         A    192.168.4.100
    ]# vim /var/named/test.cn.abc
    test.cn.    NS   svr7
    svr7        A    192.168.4.7
    www         A    1.2.3.4
    
    3.重啓named服務
    ]# systemctl restart named
    
    4.在虛擬機A、B分別測試解析

 

7、DNS緩存使用變量

]# vim /etc/named.conf
options {
    directory    "/var/named";
};
acl 變量名 { 地址1; 地址2; 地址3; 地址4;...};
view "nsd" {
    match-clients { 變量名; };
    zone "test.cn" {
    type    master;
    file    "test.cn.nsd";
    };
};
view "abc" {
    match-clients { any; };
    zone "test.cn" {
    type    master;
    file    "test.cn.abc";
    };
};
相關文章
相關標籤/搜索