模擬構建DNS解析流程

背景

DNS初步認識

  DNS(Domain Name Server,域名系統)是互聯網上做爲域名和IP地址相互映射的一個分佈式數據庫,可以使用戶方便的訪問互聯網,而不用去費力的記憶IP字符串。經過域名,最終能夠獲得該域名對應的IP地址的過程叫作域名解析。DNS協議運行在UDP洗衣上,使用的是53號端口。
  
  html

DNS的重要性以及高可用(DNS冗餘)

重要性

  
  DNS解析是目前互聯網大多數應用的實際的尋址方式;域名技術的不斷髮展,和基於域名技術出現的新技術和新思路極大的豐富了互聯網的應用;域名如今起着互聯網的一種相似於身份標記的做用,具備惟一性,所以互聯網的全球化發展也使得域名也成爲一種重要的資源linux

冗餘(高可用)

  
  NS服務器在互聯網上承擔的如此重要的任務,所以其高可用性也成爲了重點。在一個區域的資源記錄經過手動或自動方式更新到單個主名稱服務器(主DNS)上,主DNS服務器能夠是一個或者多個區域的權威名稱服務器。
  冗餘的DNS服務器作爲同一區域中主服務器的備份服務器,防止主服務器沒法訪問或者宕機。輔DNS服務器會按期與主DNS服務器通信,進而保證它的區域信息文件保持最新。若是不是最新的信息,輔助DNS服務器就會從主DNS服務器上獲取最新的區域數據文件副本。這種將區域文件複製到多臺名稱服務器的過程稱爲區域複製。web

  
  

環境與架構圖

  

軟件環境

  因爲本次試驗要模擬整個DNS的解析流程,所以須要的8臺虛擬機,在其中5臺機器上安裝bind程序提供域名解析服務,2臺虛擬機安裝httpd(web服務)提供網頁訪問服務,剩下的一臺虛擬機模擬客戶端進行DNS查詢。
注意:
  1.實驗前要關閉selinux,防火牆而且清空防火牆規則;
  2.因爲機器數量較多最好保持時間同步,以避免致使實驗沒法正常運行;
  3.自建文件包注意權限問題,以防出現沒法解析。數據庫

實驗總體架構圖與構建思路

模擬構建DNS解析流程
  因爲僅僅是做爲模擬,所以這裏僅在douma.com的域名服務器作了主從備份,這裏僅僅提供正向解析,想了解反向解析的構建的話能夠參考以前的文章https://blog.51cto.com/11010461/2105703vim

  
  

實驗記錄

  

搭建流程

  

基礎配置

  
環境清理
在全部主機上運行後端

setenforce 0
            iptables -F
            iptables -X

搭建基礎服務
在準備作dns解析的服務器上安裝bind。緩存

yum install bind -y

在web服務器上配置httpd提供web服務服務器

#安裝httpd 135和136兩臺主機
        yum install httpd -y
        #構建相應頁面
        #192.168.99.135
        echo this is web1.douma.com ! > /var/www/html/index.html
        #192.168.99.136
        echo this is web2.douma.com ! > /var/www/html/index.html

模擬構建DNS解析流程
啓動httpd 而且驗證是否可以提供服務架構

systemctl start httpd
        #使用curl命令訪問httpd
        curl + ip

模擬構建DNS解析流程

搭建douma.com的dns服務而且配置主從

  
douma.com主服務器192.168.99.133
  
編輯主服務器的配置文件負載均衡

vim /etc/named.conf

對主配置文件作以下修改
模擬構建DNS解析流程
編輯域文件,建立對douma.com域的解析

vim /etc/named.rfc1912.zones

添加以下字段

zone "douma.com" IN {
        type master;
        file "douma.com.zone";
};

建立douma.com.zone文件

cd /var/named/
    vim douma.com.zone

編輯添入信息

$TTL 1D
@       IN      SOA     dns1.douma.com. admin.douma.com.(
                                        2018060205   ;序列號
                                        1D                  ;刷新時間
                                        2H                  ;重試時間
                                        3D                  ;過時時間
                                        1H)                 ;否認答案的TTL值
                       NS     dns1
                       NS     dns2
dns1     IN      A       192.168.99.133
dns2     IN      A       192.168.99.134
@         IN      A       192.168.99.135
@         IN      A       192.168.99.136
www     IN      A       192.168.99.135
www     IN      A       192.168.99.136
*           IN      CNAME   www

模擬構建DNS解析流程
修改文件權限

chown :named douma.com.zone
chmod 640 douma.com.zone

模擬構建DNS解析流程
啓動bind服務而且驗證是否能夠解析

systemctl start named
    systemctl status named

    #dig命令在bind-utils包中,若是安裝bind時候未綁定安裝能夠後續手動安裝
    dig www.douma.com @192.168.99.133

模擬構建DNS解析流程
正常解析
配置從服務器
  
從服務器192.168.99.134

編輯bind主配置文件

vim /etc/named.conf

模擬構建DNS解析流程

編輯域配置文件添加從服務器配置

vim /etc/named.rfc1912.zones

添加以下字段

zone "douma.com" IN {
        type slave;
        masters {192.168.99.133;};
        file "slaves/douma.com.zone";
};

模擬構建DNS解析流程
這裏不用手動建立douma.com.zone,在服務啓動後會自動去主服務進行同步

啓動服務

systemctl start named

在從服務器上驗證是否可以解析

dig www.douma.com @192.168.99.134

模擬構建DNS解析流程

搭建com服務器

  
com地址是192.168.99.132
編輯配置文件

vim /etc/named.conf

模擬構建DNS解析流程
編輯named.rfc1912.zones添加解析信息

vim /etc/named.rfc1912.zones

#添加如下信息
zone "com" {
        type master;
        file "com.zone";
};

建立com.zone

cd /var/named/
    vim com.zone

添加對應解析信息

$TTL 1D
@       IN      SOA     dns.com.        admin.com. (
                                        2018010201
                                        1D
                                        2H
                                        3D
                                        3H)
                      NS      dns1
douma           NS      dns2
douma           NS      dns3
dns1              A       192.168.99.132
dns2              A       192.168.99.133
dns3              A       192.168.99.134
# 修改權限
    chown :named com.zone
    chmod 640 com.zone

模擬構建DNS解析流程
啓動服務而且驗證是否能夠查詢

systemctl start named
    dig www.douma.com @192.168.99.132

模擬構建DNS解析流程

搭建根服務器

  
根服務器的IP地址192.168.99.131
編輯/etc/named.conf

vim /etc/named.conf

因爲的模擬根服務器,所以在它之上不能有其餘的dns服務器,要註釋掉配置文件最後的根域
模擬構建DNS解析流程
模擬構建DNS解析流程
建立根域定義

vim /etc/named.rfc1912.zones

添加根域信息

zone "." {
        type master;
        file "root.zone";
};

建立域文件

cd /var/named/
vim root.zone

編輯根解析庫

$TTL 1D
@       IN      SOA     dns1.   admin. (
                                20180601
                                1D
                                2H
                                3D
                                1H)
                    NS      dns1
com             NS      dns2
dns1            A        192.168.99.131
dns2            A        192.168.99.132

修改文件權限

chown :named root.zone
chmod 640 root.zone

啓動服務並作驗證

systemctl start named
dig www.douma.com @192.168.99.131

模擬構建DNS解析流程

配置ISP域名緩存服務器

  
ISP地址192.168.99.130
編輯/etc/named.conf文件

vim /etc/named.conf

模擬構建DNS解析流程
因爲是本身搭建的模擬DNS運行的系統,所以須要修改named.ca文件,將根服務器指向本身構建的根,同時因爲僅僅是ISP的服務器,無需定義域,僅僅負責查詢便可。
編輯named.ca文件

vim /var/named/
        vim named.ca

模擬構建DNS解析流程

啓動服務並進行驗證

systemctl start named
dig www.douma.com @192.168.99.130

模擬構建DNS解析流程

Client端設置

  
客戶端僅須要將DNS指向ISP服務器便可

vim /etc/resolv.conf
#添加dns信息
nameserver 192.168.99.130

驗證是否能夠解析

dig www.douma.com @192.168.99.130

模擬構建DNS解析流程

使用curl命令請求web端

curl www.douma.com

dns的解析是簡單的輪詢
模擬構建DNS解析流程

總結

  
  雖然DNS的輪詢也是一種負載均衡的方式,成本極低,可是其缺點一樣明顯,DNS做爲簡單輪詢沒法理解後端服務器的承載能力;輪詢過程僅僅負責將請求轉交,一旦轉交的目標主機故障仍會轉交,沒法容錯;要保證數據最新就要設置較小的刷新時間,但會形成額外的DNS流量開銷;一旦某臺服務器宕機,修改DNS設置後,仍需一段時間才能生效。

  DNS輪詢受到各方的影響比較嚴重,並不能算一種很好的負載均衡技術

https://web.stanford.edu/~riepel/lbnamed/
在 named.conf 中能夠設置 bind 的 round-robin 的給出結果的順序:

options {
rrset-order { order random; };
};

rrset-order 支持三個參數:fixed, random, cyclic 。fix 會將多個A記錄按配置文件的順序固定給出;random 會隨機給出;cyclic 會循環給出。

相關文章
相關標籤/搜索