漫漫運維路——網絡服務之DNS

一.DNS和BIND是什麼?linux

DNS即Domain Name Service的縮寫,即爲域名服務。在網絡出現之後,計算機的通訊就是經過IP地址加端口號等形式來進行,人對於數字的記憶每每卻有限,隨着連入網絡的用戶的不斷增多,用戶須要記住的IP地址愈來愈多,早期爲了方便使用,把每個IP地址對應爲一個主機名,如:www.domainname.com對應1.1.1.1形式,並把此種對應關係統一記錄於/etc/hostsGNU/Linux下,windows則有所差別)文件中。可是後來連入網絡的用戶愈來愈多,管理hosts文件顯得十分繁瑣,隨後伯克利便研發出了專門實現將域名自動轉換爲IP地址的服務,名爲BIND,因此BINDDNS的一種實現,可是因爲如今DNS服務基本都是基於BIND或者使用BIND進行二次開發的軟件來實現,因此BIND幾乎成了DNS的代名詞。windows

二.域以及BIND的工做方式bash

因爲聯網的用戶愈來愈多,爲了方便管理和實現,把域名又劃分爲多個層級,以’.’隔開,相似乎www.abcd.com這樣的域名,且從左往右依次層級更高,即com>abcd>www,按照這樣的等級,最右邊的域通常爲頂級域。而後負責管理其下一級的域名,在此約定把com稱做bdcd域的父域,bdcd稱爲com的子域,com是一個頂級域,如今各類常見頂級域以下所示:服務器

名稱網絡

含義dom

comide

公司、企業、營利機構測試

orgspa

組織、非營利機構.net

edu

教育機構

cn

國家或地區類(中國)

gov

政府單位

net

網絡、通訊類

mil

軍事單位

BIND的工做方式:

BIND在進行域名解析時,會根據用戶主機上設置的DNS服務器地址,首先找該地址,當設置的那臺DNS服務器上沒有用戶所須要的相關記錄時,若是該服務器設置可對當前主機進行遞歸查詢,那麼該服務器就會去找根服務器,在此所謂的根服務器就是放置在世界各地的十三臺特殊域名服務器,他們負責管理全部的域名相關事務。而後根服務器會根據用戶查詢的內容反饋信息,好比要解析的是一個com域,那麼根服務器就會告訴當前服務器去找負責com域的相關DNS服務器,而後當前DNS就會根據根反饋的com域的信息區找com,而若是com服務器上所負責的子域下有當前DNS要找的相關記錄,則也會反饋下一級域名服務器的信息,以此類推,知道找到真正負責解析用戶所給域名的服務器爲止。

三.搭建本身的DNS服務器

因爲要想搭建一個能在網絡中用的DNS服務器須要向上級註冊並獲得上級的許可才行,因此在此僅搭建一個能在局域網環境中用的DNS服務器。

1.實現解析本身的域名

實驗部署以下

域名

IP地址

www.linuxedu.com

192.168.2.101

dns.linuxedu.com

192.168.2.102

mail.linuxedu.com

192.168.2.103

ftp.linuxedu.com

192.168.2.101

如上所示,在當前局域網內使用域名linuxedu.com,域名內有三臺主機,wwwdnsmail,其中www主機有個別名,名爲ftp

步驟:

I 安裝BIND編輯其主配置文件,bind所須要的安裝包爲bind-libs (bind庫文件)bind-utils(bind其餘組件)和bind.x86_64 (bind主程序包),通常來講lib和util已經默認安裝,因此直接安裝bind主程序便可。

[root@localhost named]# yum remove bind -y
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package bind.x86_64 32:9.8.2-0.30.rc1.el6 will be erased
--> Finished Dependency Resolution
 
Dependencies Resolved
 
Installed:
  bind.x86_64 32:9.8.2-0.30.rc1.el6                                                                                              
......#中間信息已省略
Complete!


II 配置bind的主配置文件/etc/named.conf以下

options {
        directory "/var/named/";
};
zone "." IN {
        type hint;
        file "named.ca";
};
zone "localhost" IN {
        type master;
        file "localhost.zone";
};
zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "1.0.0.127.in-addr.arpa.zone";
};
zone "linuxedu.com" IN {
        type master;
        file "linuxedu.com.zone";
};
zone "2.168.192.in-addr.arpa" IN {
        type master;
        file "2.168.192.in-addr.arpa.zone";
};


III 爲DNS服務器提供區域文件

在主配置文件中已經把BIND的工做目錄定位到了/vae/named下,如今切換目錄到/var/named/DNS提供區域文件

首先生成根域文件

[root@localhost named]# dig -t NS . >named.ca


新建本地迴環地址正向區域文件(localhost.zone)以下

$TTL 600
@       IN      SOA     loacalhost.     localhost. (
                        2015042501
                        2M
                        3M
                        1D
                        1D
 
                        );
        IN      NS      localhost.
localhost.      A       127.0.0.1
~                                       

 

爲本地迴環地址提供反向解析區域(1.0.0.127.in-addr.arpa.zone)文件以下

$TTL    600
@       IN      SOA     0.0.127.in-addr.arpa.   0.0.127.in-addr.arpa. (
                        2015042501
                        1M
                        5M
                        1D
                        1D
                        );
        IN      NS      localhost.
1       IN      PTR     localhost.


提供linuxedu.com域的正向解析區域文件(linuxedu.com.zone),文件內容以下

$TTL    600
$ORIGIN linuxedu.com.
@       IN      SOA     ns.linuxedu.com.        mail.linuxedu.com. (
                        2015042501
                        1M
                        5M
                        1D
                        1D
                        );
        IN      NS      ns.linuxedu.com.
        IN      MX 10   mail.linuxedu.com.
ns      IN      A       192.168.2.102
www     IN      A       192.168.2.101
ftp     IN      CNAME   www.linuxedu.com.
mail    IN      A       192.168.2.103


linuxedu.com域提供反向解析區域文件(2.168.192.in-addr.arpa.zone)。其內容以下

$TTL    600
$ORIGIN 2.168.192.in-addr.arpa.
@       IN      SOA     ns.linuxedu.com.        mail.linuxedu.com. (
                        2015042501
                        1M
                        5M
                        1D
                        1D
                        );
        IN      NS      ns.linuxedu.com.
        IN      MX 10   mail.linuxedu.com.
2       IN      PTR     ns.linuxedu.com.
1       IN      PTR     www.linuxedu.com.
ftp     IN      CNAME   www.linuxedu.com.
3


修改主配置文件和區域文件的屬組爲named組並修改其權限爲640

 [root@localhost named]# chown :named /etc/named.conf /var/named/*;chmod 640 /etc/named.conf /var/named/*


檢查主配置文件和區域文件是否有語法錯誤

[root@localhost named]# named-checkconf 
[root@localhost named]# named-checkzone "linuxedu.com" /var/named/linuxedu.com.zone 
zone linuxedu.com/IN: loaded serial 2015042501
OK
[root@localhost named]# named-checkzone "2.168.192.in-addr.arpa" /var/named/2.168.192.in-addr.arpa.zone 
zone 2.168.192.in-addr.arpa/IN: loaded serial 2015042501
OK

重啓服務器並測試

[root@localhost named]# dig -t A www.linuxedu.com @127.0.0.1
 
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t A www.linuxedu.com @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10358
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
 
;; QUESTION SECTION:
;www.linuxedu.com.INA
 
;; ANSWER SECTION:
www.linuxedu.com.600INA192.168.2.101
 
;; AUTHORITY SECTION:
linuxedu.com.600INNSns.linuxedu.com.
 
;; ADDITIONAL SECTION:
ns.linuxedu.com.600INA192.168.2.102
 
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Apr 26 05:54:02 2015
;; MSG SIZE  rcvd: 83

測試反向解析                                         

[root@localhost named]# dig -x 192.168.2.101 @127.0.0.1 
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -x 192.168.2.101 @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36267
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
 
;; QUESTION SECTION:
;101.2.168.192.in-addr.arpa.INPTR
 
;; ANSWER SECTION:
101.2.168.192.in-addr.arpa. 600INPTRwww.linuxedu.com.
 
;; AUTHORITY SECTION:
2.168.192.in-addr.arpa.600INNSns.linuxedu.com.
 
;; ADDITIONAL SECTION:
ns.linuxedu.com.600INA192.168.2.102
 
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Apr 26 05:58:50 2015
;; MSG SIZE  rcvd: 107


到此本實驗成功  

 

2.使用DNS實現主從同步

在現實生產環境中,一臺DNS每每是不夠的,由於要考慮其宕機的情景,因此至少得有一臺爲備用,在此在局域網環境內實現兩臺DNS服務器,並實現主從同步。

以實驗1的域名爲例,而且新增一臺DNS,其ip地址爲192.168.1.121,設置其爲從服務器。

按照上實驗步驟安裝好bind程序後,修改其主配置文件(/etc/named.conf),改其內容以下所示

options {
        directory "/var/named";
};
zone "." IN {
        type hint;
        file "named.ca";
        };
zone "linuxedu.com" IN {
        type slave;
        masters { 192.168.2.120; };
        file "slaves/linuxedu.com.zone";
 
};
zone "2.168.192.in-addr.arpa" IN {
        type slave;
        masters { 192.168.2.120; };
        file "slaves/2.168.192.in-addr.arpa.zone";
};


因爲其爲從服務器,其區域文件從主服務器上傳輸過來,因此不須要爲其提供區域配置文件。接下來修改主服務器配置

Zone內部添加以下一條

allow-transfer { 192.168.2.121; };#:此意味容許從服務器進行區域傳輸注,根zone不能進行區域傳輸

重啓服務器並測試

[root@slaver slaves]# ll
total 0
[root@slaver slaves]# service named restart
Stopping named: .                                          [  OK  ]
Starting named:                                            [  OK  ]
[root@slaver slaves]# ll
total 8
-rw-r--r--. 1 named named 463 Apr 26 06:23 2.168.192.in-addr.arpa.zone
-rw-r--r--. 1 named named 412 Apr 26 06:23 linuxedu.com.zone

由上能夠看到,兩個區域文件已經傳送過來了。

解析測試

正向解析

ns.linuxedu.com.600INA192.168.2.102
 
;; Query time: 1 msec
;; SERVER: 192.168.2.121#53(192.168.2.121)
;; WHEN: Sun Apr 26 06:24:33 2015
;; MSG SIZE  rcvd: 83


反向解析

[root@slaver slaves]# dig -x 192.168.2.103 @192.168.2.121
 
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -x 192.168.2.103 @192.168.2.121
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12803
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
 
;; QUESTION SECTION:
;103.2.168.192.in-addr.arpa.INPTR
 
;; ANSWER SECTION:
103.2.168.192.in-addr.arpa. 600INPTRmail.linuxedu.com.
 
;; AUTHORITY SECTION:
2.168.192.in-addr.arpa.600INNSns.linuxedu.com.
 
;; ADDITIONAL SECTION:
ns.linuxedu.com.600INA192.168.2.102
 
;; Query time: 2 msec
;; SERVER: 192.168.2.121#53(192.168.2.121)
;; WHEN: Sun Apr 26 06:24:52 2015
;; MSG SIZE  rcvd: 108

3.正向區域受權

域名是有等級的,由於域名是按一層層實現查找,因此下級域名要想起做用就得上級域名服務器對其受權。

在此以上個實驗作slave的服務器來作子域,其域名爲net.linuxedu.com,而後使用上個實驗的master作父域,對其受權。子域IP地址規劃以下:

主機

IP地址

www

172.16.35.1

mail

172.16.35.3

ns

172.16.35.2

ftp

172.16.35.1

 

首先編輯父域dnslinuxedu.com域,添加以下新條目,

net     IN      NS      ns.net.linuxedu.com.

ns.net  IN      A       192.168.2.121

在父域dns的主配置文件的全局配置段options內添加兩天選項

dnssec-enable no;

dnssec-validation yes;

而後編輯子域服務,首先編輯其主配置文件

options {

        directory "/var/named";

};

zone "." IN {

        type hint;

        file "named.ca";

        };

zone "net.linuxedu.com" IN {

        type master;

        file "net.linuxedu.com.zone";

 

};

編輯子域區域文件內容(net.linuxedu.com.zone ),內容以下

$ORIGIN .

$TTL 600        ; 10 minutes

net.linuxedu.com                IN SOA  ns.linuxedu.com. mail.linuxedu.com. (

                                2015042501 ; serial

                                60         ; refresh (1 minute)

                                300        ; retry (5 minutes)

                                86400      ; expire (1 day)

                                86400      ; minimum (1 day)

                                )

                        NS      ns.linuxedu.com.

                        MX      10 mail.linuxedu.com.

$ORIGIN net.linuxedu.com.

ftp                     CNAME   www

mail                    A       172.16.35.3

ns                      A       172.16.35.2

www                     A       172.16.35.1

~檢查語法錯誤肯定無誤後重啓服務解析測試

解析測試            

wKiom1U9EUmD6sBgAAIhjvoGbK4815.jpg

                                 

4.使用ACLview實現針對客戶端的智能DNS解析

在生產環境中,有時須要把來自不一樣客戶端的解析請求解析爲不一樣的IP地址,此時就可使用ACLview實現對來自客戶端的請求加以控制。

首先來講ACLACLAccess Countrol List的縮寫,在bind中能夠將不一樣的網絡地址歸到一個ACL列表裏,而後直接對該表實現設置訪問控制權限便可,BIND中的訪問控制列表默認有四個分別爲:

any;:任何人

none;:任何人都不能

localhost;:本機

localnets;:本機所在網絡

1:定義個訪問控制列表,控制只響應來自192.168.2.121的主機對linuxedu.com域的解析請求

修改配置文件,在主機192.168.2.120中添加訪問控制列表,內容以下

acl bxy {
        192.168.2.121;
};


而後在zone內添加以下圖所示內容

 

wKiom1U9EQrRxeutAACxgEjDbjM044.jpg


 

重啓服務器測試

wKioL1U9EbXD0asNAALabdBEVpA195.jpg


        

wKioL1U9Efrh-vukAAJA4QWnOMI091.jpg

 

2:使用視圖實現未來自不一樣主機的同一個解析請求解析爲不一樣的地址

以上述搭建好的環境爲例,以192.168.2.120作服務器,而後讓來自192.168.2.120解析linuxedu.com解析爲192.168.2網段,讓來自192.168.2.107的主機解析linuxedu.com解析爲192.168.1網段。

修改服務器主配置文件,主配置文件內容以下

options {
        directory "/var/named/";
};
acl liebiao1 {
        192.168.2.121;#
};
acl liebiao2 {
        192.168.2.107;
};
view jiexi1 {   #視圖1 用來定義acl liebiao1中主機解析的請求去向
match-clients { liebiao1; };
zone "." IN {
        type hint;
        file "named.ca";
};
zone "localhost" IN {
        type master;
        file "localhost.zone";
};
zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "1.0.0.127.in-addr.arpa.zone";
};
zone "linuxedu.com" IN {
        type master;
        file "linuxedu.com.zone";
};
zone "2.168.192.in-addr.arpa" IN {
        type master;
        file "2.168.192.in-addr.arpa.zone";
 
};
};


view jiexi2 { #視圖用來控acl liebiao2中的主機的解析去向

match-clients { liebiao2; };
zone "." IN {
        type hint;
        file "named.ca";
};
zone "localhost" IN {
        type master;
        file "localhost.zone";
};
zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "1.0.0.127.in-addr.arpa.zone";
};
zone "linuxedu.com" IN {
        type master;
        file "linuxedu.com.zone.1";
};
zone "1.168.192.in-addr.arpa" IN {
        type master;
        file "1.168.192.in-addr.arpa.zone";
 
};
};


            

測試:

    使用192.168.2.107解析

wKioL1U9EKnS5cViAALYBKYKTAA983.jpg

    使用192.168.2.121解析

wKiom1U9D3eAcPR5AAJU6RH84SY925.jpg


總算寫完了,雖然還要編譯啥的沒寫 不過來不及了,明天還得上課。。

相關文章
相關標籤/搜索