Linux環境下DNS域名解析服務

DNS系統的作用

DNS系統在網絡中的作用就是維護着一個地址數據庫,其中記錄了各種主機域名與IP地址的對應關係,以便爲客戶程序提供正向或反向的地址查詢服務,即正向解析與反向解析。

正向解析:根據域名查IP地址,即將指定的域名解析爲相對應的IP地址。

反向解析:根據IP地址查域名,即將指定的IP地址解析爲相對應的域名。

DNS系統的類型

緩存域名服務器:只提供域名解析結果的緩存功能,目的在於提高查詢速度和效率,但是沒有自己控制的區域地址數據。構建緩存域名服務器時,必須設置根域或指定其他DNS服務器作爲解析來源。

主域名服務器:維護某一個域名DNS區域的地址數據庫,對其中的解析記錄具有自主控制權,是指定區域中唯一存在的權威服務器、官方服務器。構建主域名服務器時,需要自行建立所負責區域的地址數據文件。

從域名服務器:與主域名服務器提供完全相同的DNS域名服務,通常用於DNS服務器的熱備份。

Bind不是唯一能夠提供域名服務的DNS服務程序,可以運行在大多數Linux和UNIX主機中。官方:https://www.isc.org/

Bind服務控制

bind軟件包安裝完畢以後,會自動增加一個名爲named的系統服務,通過腳本文件/etc/init.d/named或service工具都可以控制DNS域名服務的運行。默認監聽端口:53

安裝步驟如下:

準備工作:首先開啓兩臺服務器,配置靜態IP地址,關閉防火牆和selinux並查看系統中所包含bind的rpm包。

1)bind:提供了域名服務的主要程序及相關文件

2)bind-utils:提供了對DNS服務器的測試工具程序,如nslookup等。

3)bind-libs:提供了bind。bind-utils需要使用的庫函數

4)bind-chroot爲bind服務提供了一個僞裝的根目錄,已提供安全性。

默認已經安裝了bind-utils和bind-libs,所以只需要安裝bind和bind-chroot即可。

[root@localhost Packages]# mkdir /media/cdrom
[root@localhost Packages]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@localhost Packages]# cd /media/cdrom/Packages/
[root@localhost Packages]# ls | grep "^bind"
bind-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm
bind-chroot-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm
bind-dyndb-ldap-2.3-5.el6.x86_64.rpm
bind-libs-9.8.2-0.17.rc1.el6_4.6.i686.rpm
bind-libs-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm
bind-utils-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm
[root@localhost Packages]#
[root@localhost Packages]# rpm -qa | grep "^bind"
bind-libs-9.8.2-0.17.rc1.el6_4.6.x86_64
bind-utils-9.8.2-0.17.rc1.el6_4.6.x86_64
[root@localhost Packages]# rpm -ivh bind-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm
warning: bind-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing...                ########################################### [100%]
  1:bind                   ########################################### [100%]
[root@localhost Packages]# rpm -ivh bind-chroot-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm
warning: bind-chroot-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing...                ########################################### [100%]
  1:bind-chroot            ########################################### [100%]
[root@localhost Packages]#

修改主配置文件先備份

主配置文件named.conf通常位於/etc/目錄下,在named.conf文件中,主要包括全局配置、區域配置兩個部分,每一條配置記錄的行尾以分號“;”表示結束,以“#”號或“//”開始的部分表示註釋文字。

全局配置參數包括“option { };”的大括號中,可以設置監聽的地址和端口、區域數據文件存放的目錄、允許哪些客戶機查詢等。

區域配置參數使用“zone ...... { };”的配置格式,一臺DNS服務器可以爲多個區域提供解析,因此在named.conf文件中也可以有很多個zone配置段。

每個zone區域都是可選的,包括根域、迴環域、反向域,具體根據實際需要而定,zone配置部分的“IN”關鍵字也可以省略。

反向區域的名稱由倒序的網絡地址和“.in-addr.arpa”組合而成。

file配置項用於指定實際的區域數據文件,文件名稱由管理員自行設置。

區域配置中的部分參數也可以放在全局配置中。

touch named.beifen

cp named.conf named.beifen

[root@localhost etc]# vim /etc/named.conf
options {
directory "/var/named";            #定義區域數據文件的默認存儲位置  
};

zone "jt.com" IN {                #正向區域
   type master;                                   #類型爲master(主服務器)  
   file "jt.com.zone";           #區域數據文件名爲jt.com
   allow-update { none; };
};

zone "3.168.192.in-addr.arpa" IN {  #反向區域
       type master;                                      #類型爲master(主服務器)
       file "192.168.3.arpa";     #區域數據文件名爲192.168.3.arpa
};

修改區域文件

cd /var/named

[root@localhost named]# vim jt.com.zone
$TTL 86400     //TTL配置用於設置默認生存週期。即緩存解析結果的有效時間。
@ SOA jt.com. admin.jt.com. (  //SOA記錄部分用於設置區域名稱,管理郵箱,以及爲從域名服務器指定更新參數。
       20181202 //更新序列號
       4H    //刷新時間:重新下載數據的間隔
       30M   //重試延時:下載失敗後的重試間隔
       12H   //失效時間:超過該時間仍無法下載則放棄
       1D   //無效解析記錄的生存週期
)


@       IN      NS      jt.
www     IN      A       192.168.3.111 #這裏要寫DNS服務器的IP地址,也可以是主機名。
hhh     IN      A       192.168.3.112

[root@localhost named]# vim 192.168.3.arpa
$TTL 86400
@ SOA jt.com. admin.jt.com. (
       20181202 //更新序列號
       4H     //刷新時間:重新下載數據的間隔                    
       30M     //重試延時:下載失敗後的重試間隔
       12H     //失效時間:超過該時間仍無法下載則放棄
       1D     //無效解析記錄的生存週期
)
       IN      NS                      jt.
111     IN      PTR                     www.jt.com.
112     IN      PTR                     hhh.jt.com.

在/etc/resolv.conf文件中“服務地址”改爲本地IP,配置完成後,用named-checkconf檢查,啓動named服務,並進行驗證域名解析(正向和反向)

[root@localhost named]# vim /etc/resolv.conf

# Generated by NetworkManager
domain localdomain
search localdomain
nameserver 192.168.3.111
[root@localhost named]# named-checkconf -z /etc/named.conf
zone jt.com/IN: loaded serial 20181202
zone 3.168.192.in-addr.arpa/IN: loaded serial 20181202
[root@localhost named]# service named start
Generating /etc/rndc.key:                                  [確定]
啓動 named:                                               [確定]
[root@localhost named]# nslookup www.jt.com
Server:    192.168.3.111
Address:  192.168.3.111#53

Name:  www.jt.com
Address: 192.168.3.111
[root@localhost named]# nslookup hhh.jt.com
Server:    192.168.3.111
Address:  192.168.3.111#53

Name:  hhh.jt.com
Address: 192.168.3.112

[root@localhost named]# nslookup 192.168.3.111
Server:    192.168.3.111
Address:  192.168.3.111#53

111.3.168.192.in-addr.arpa  name = www.jt.com.

[root@localhost named]# nslookup 192.168.3.112
Server:    192.168.3.111
Address:  192.168.3.111#53

112.3.168.192.in-addr.arpa  name = hhh.jt.com.

[root@localhost named]#

在從域名服務器上進行配置

[root@localhost named]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.3.111 jt
192.168.3.110 python

修改區域文件

cd /var/named

[root@localhost named]# vim 192.168.3.arpa
$TTL 86400
@ SOA jt.com. admin.jt.com. (
       20181202
       4H
       30M
       12H
       1D
)
       IN      NS                     jt.
       IN      NS                     python.
1111     IN      PTR                     www.jt.com.
1112     IN      PTR                     hhh.jt.com.
[root@localhost named]# vim jt.com.zone
$TTL 86400
@ SOA jt.com. admin.jt.com. (
       20181202
       4H
       30M
       12H
       1D
)

@       IN      NS     jt.
@       IN      NS     python.
www     IN      A       192.168.11.111
hhh     IN      A       192.168.11.112

修改/etc/resolv.conf,並將主域名服務器和從域名服務器進行添加。

[root@localhost named]# vim /etc/resolv.conf
# Generated by NetworkManager
domain localdomain
search localdomain
nameserver 192.168.3.111
nameserver 192.168.3.110

在從服務器添加配置文件

[root@localhost named]# vim /etc/named.conf

options {
directory "/var/named";                                          
};
zone "jt.com" IN {                
   type slave;                              
   masters { 192.168.3.111; };
   file "slaves/jt.com.zone";
};
zone "3.168.192.in-addr.arpa" IN {
       type slave;
       masters { 192.168.3.111; }
       file "slaves/192.168.3.arpa";
};

在從服務器上啓動服務,查看是否同步。

[root@localhost slaves]# service named restart
停止 named:.                                              [確定]
啓動 named:                                               [確定]
[root@localhost slaves]# ls
192.168.3.arpa  jt.com.zone

注意:關閉防火牆和selinux

驗證結果:

在主服務器上停止named服務,用nslookup檢查解析是否已經更改到從服務器。

在主服務器上開啓named服務,用nslookup檢查解析是否已經更改到主服務器。

[root@localhost slaves]# nslookup www.jt.com
Server:    192.168.3.111
Address:  192.168.3.111#53

Name:  www.jt.com
Address: 192.168.3.111
[root@localhost slaves]# service named stop
停止 named:.                                              [確定]
[root@localhost slaves]# nslookup www.jt.com
Server:    192.168.3.110
Address:  192.168.3.110#53

Name:  www.jt.com
Address: 192.168.3.111
[root@localhost slaves]# service named start
啓動 named:                                               [確定]
[root@localhost slaves]# nslookup www.jt.com
Server:    192.168.3.111
Address:  192.168.3.111#53

Name:  www.jt.com
Address: 192.168.3.111

[root@localhost slaves]#

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章