第21章,DNS服務

更多內容請點擊:

Linux學習從入門到打死也不放棄,完全筆記整理(持續更新,求收藏,求點贊~~~~) 

http://blog.51cto.com/13683480/2095439


第21章,DNS服務

 

本章內容:

               名字解析

               DNS服務

               實現主從服務器

               實現子域

               實現view

               編譯安裝bind

               壓力測試

               DNS排錯

               

 

DNS服務:-----------------------------------------------------------------------

               DNS:Domain Name Service     應用層協議

                     使用C/S結構,使用端口爲 udp:53,tcp:53

                     其中,名字解析服務使用udp53,主從同步傳輸使用tcp53和udp53

               

               BIND:Bekerley Internet Name Domin     dns解析服務器端實現軟件

                     ISC維護的服務之一(www.isc.org)

 

               本地名稱解析配置文件:hosts

                     linux:     /etc/hosts

                     windows: %WINDIR%/system32/dvivers/etc/hosts

                     格式爲:

                                   IPADDR FQDN1  FQDN2..

                                   122.10.117.2  www.test2.com www.test2.com ...

                                    ...

               

DNS解析:

               一次完整的查詢請求過程:

                            clint--—>  本地host文件 ---> DNS Service  local cache ---> DNS Server(recursion)

                            ---> server cache  ---> iteration(迭代) ---> 根  --->頂級域名dns---> 二級域名dns...

                            --->  結果返回,本地local將結果緩存至本地

               

               DNS查詢類型:

                     遞歸查詢:recursion

                                    客戶機只一次申請,返回結果。需要請求的dns服務器開啓遞歸查詢。

                    

                     迭代查詢:iteration

                                    支持遞歸查詢的dns服務器,在收到解析請求之後,如果請求的解析地址

                                    非自己提供,會從根域自頂而下,依次尋找解析服務器,得到結果之後返回

                                    給申請主機。

                                    此查詢過程就稱爲迭代

               

               名稱服務器:域內負責解析本域內的名稱的主機

               

               根服務器:全球共13組,美國10  歐洲2 日本1

               

               解析類型:

                            正向解析: FQDN ---> IP

                            反向解析: IP----> FQDN

                             

                             注意:正反向解析是兩個不同的名稱空間,是兩顆不同的解析樹

                             

 

                             

DNS服務器類型:

               主DNS服務器: 

                             管理和維護所負責解析的域內解析庫的服務器

               從DNS服務器:

                             從主服務器或另一臺從服務器‘複製’(區域傳送)解析庫文件

                             

               緩存DNS服務器:

                             轉發器,自己不負責任何區域解析,但是收到解析請求之後,會從根域開始自上而下

                             尋找解析,一旦找到,提交給用戶,且會將結果暫時緩存起來,供其他用戶查詢

                            必須支持遞歸

 

名詞解釋:

               區域傳送:    從服務器從主服務器同步解析庫

                             完全傳送:傳送整個解析庫

                             增量傳送:傳遞解析庫變化的那部分內容

                             

               序列號:

                             解析庫版本號,主服務器解析庫修改時,遞增其序列號

               

               刷新時間間隔:

                             從服務器從主服務器請求同步解析的時間間隔

               

               重試時間間隔:

                             從服務器同步失敗時,再次嘗試時間間隔

               

               過期時長:

                             從服務器聯繫不到主服務器時,多久後停止服務

               

               通知機制:

                            notify  ,主服務器解析庫發生變化時,會主動通知從服務器

               

               解析答案:

                            肯定答案:dns服務器通過迭代或者本地緩存得到肯定結果返回給用戶

                             否定答案:請求的條目不存在等原因導致無法返回結果

                             權威答案:由負責所查詢區域的區域解析服務器返回的結果

                             非權威答案:通過緩存返回的結果

 

               區域解析庫:由衆多解析記錄(RR)組成

                            資源記錄:Resource Record

                             

記錄類型:

               SOA:      Start Of  Authority,起始授權記錄,用於標記自己,一個區域解析庫有且僅能有一個

                                    SOA記錄,必須位於解析庫的第一條記錄

               A:          將 FQDN---> IP

               AAAA:    FQDN--->  IPv6

               PTR:       PoinTeR, IP -->  FQDN

               NS: Name  Server,專用於標明當前區域的DNS服務器

               CNAME:  Canonical Name,  別名記錄 FQDN ---> FQDN

               MX:      Mail eXchanger, 郵件交換器

                             

資源記錄定義的格式:

               語法:   name  [TTL] IN      rr_tpye           value

               注意:

                     1     TTL(time to live  )生存時間,可從全局繼承

                     2     @ 可用於引用當前區域的名字

                     3     同一個名字可以通過多條記錄定義多個不同的值,此時DNS服務器會以

                            輪詢方式相應

                     4      同一個值也可能有多個不同的定義名字,通過多個不同的名字指向同一個值

                             進行定義,此僅表示通過多個不同的名字可以找到同一個主機

                    

                    

               SOA記錄:

                            name:  當前區域的名字,例如"alitaobao.com"

                             value:由多部分組成

                                   1     當前區域的主dns服務器的fqdn,也可以使用當前區域的名字

                                   2     當前區域管理員的郵箱地址;但地址中不能使用@符號,用‘.’替換

                                   3     主從服務區域相關定義以及否定答案的統一TTL

                            例如:

                            @    IN     SOA       ns1.alitaobao.com.  admin.alitaobao.com. (

                                                         20180060201  ;序列號

                                                         2H                  ;刷新時間

                                                         10M               ;重試時間

                                                         1W                ;過期時間

                                                         1D   )           ;否定答案的TTL值

                             

                            其中";" 表示註釋

                              

               NS記錄:

                             name:當前區域的名字

                             value:當前區域的某dns服務器的名字,例如ns.alitaobao.com.

                             一個區域可以有多個NS記錄

                                    例如:     

                                           alitaobao.com.      IN    NS    ns1.alitaobao.com.

                                           alitaobao.com.      IN    NS    ns2.alitaobao.com.        

                            注意:

                                   1     相鄰的兩個資源記錄的name相同時,後續的可省略

                                   2     對NS記錄而言,任何一個ns記錄後面的服務器名字,都應該有一個A記錄

                                    

               MX記錄:

                             name:當前區域的名字

                             value:當前區域的某郵件服務器(smtp服務器)的主機名

                            一個區域內,MX記錄可以有多個,但每個記錄的value之前應該有一個數字

                            (0-99,並且是5的倍數),表示此服務器的優先級,數字越小優先級越高

                                    例如:

                                           alitaobao.com.      IN    MX 5       mx1.alitaobao.com.

                                                                       IN    MX 10     mx2.alitaobao.com.

                            注意:

                                   對MX記錄而言,任何一個MX記錄後面的服務器名字,都應該在後續有一個A記錄

                                    

               A記錄:

                            name:     某主機的FQDN,例如www.alitaobao.com.

                            value:     主機名對應主機的IP地址

                                    例如:

                                           www.alitaobao.com.     IN    A      1.1.1.1

                                           ops.alitaobao.com.       IN    A      2.2.2.2

                                           mx1.alitaobao.com.      IN    A      3.3.3.3

                                           mx2.alitaobao.com.      IN    A      4.4.4.4

                                           $GENERATE 1-254 HOST$  A     1.2.3.$

                                           *.alitaobao.com.    IN    A      5.5.5.5

                                           alitaobao.com.             IN    A     6.6.6.6

                                           

                            *     泛域名解析,代表任意字段,

                                    避免用戶寫錯名稱時給錯誤答案,可通過泛域名解析至某特定地址

                                    

               AAAA:

                            name: FQDN

                            value:IPv6

                    

               PTR:

                            name: IP,有特定格式,把IP地址反過來寫,加上特定後綴 in-addr.arpa.

                            value:     FQDN

                                    例如:

                                           4.3.2.1.in-addr.apra.     IN  PTR     a.alitaobao.com.

                                   如1.2.3爲網絡地址,可簡寫成:

                                          4     IN     PTR         a.alitaobao.com.

                             注意:網絡地址及後綴可省略,主機地址依然需要反着寫如:

                                           4.3   IN    PTR         a.alitaobao.com.

 

               別名記錄CNAME:

                            name:     別名的FQDN

                            value:   真正名字的FQDN

                                    例如:

                                           www.alitaobao.     IN   CNAME  webserver.alitaobao.com.

                                           

                             

子域:

               子域授權:

                             每個域的名稱服務器,都是通過其上級名稱服務器在解析庫進行授權

               類似根域授權tld:

                            .com.      IN     NS   ns1.com.

                            .com.      IN     NS   ns2.com.

                            ns1.com. IN     A     2.2.2.1

                            ns2.com. IN     A     2.2.2.2

               在.com的名稱服務器上,授權alitaobao.com.,需要在解析庫中增加如下資源記錄

                            alitaobao.com.             IN    NS    ns1.alitaobao.com.

                            alitaobao.com.             IN    NS    ns2.alitaobao.com.

                            alitaobao.com.             IN    NS    ns3.alitaobao.com.

                             ns1.alitaobao.com. IN    A      3.3.3.1

                             ns2.alitaobao.com. IN    A      3.3.3.2

                             ns3.alitaobao.com. IN    A      3.3.3.3

               

               glue record:    粘合記錄,父域授權子域的記錄

               

               

bind:----------------------------------------------------------------------------

               :     dns服務服務器端實現

               

               使用yum安裝的服務腳本和名稱:

                            centos6:       /etc/rc.d/init.d/named

                            centos7:       /usr/lib/systemd/system/named.service

               主配置文件:

                             /etc/named.conf

                             /etc/named.rfc1912.zones

                             /etc/rndc.key

               解析庫文件:

                             /var/named/ZONE_NAME.zone

 

 

               注意:

                     1     一臺物理服務器可同時爲多個區域提供解析

                     2     必須要有根區域文件;  named.ca

                                    生成named.ca:dig -t NS .  @a.root-servers.net. > /var/named/named.ca

                     3     應該有兩個(如果包括ipv6的,應該更多)實現localhost和本地迴環地址的解析庫

                    

               rndc:     remote name domain controller 遠程名稱域控制器

                            默認與bind安裝在同一主機,且只能通過127.0.0.1連接named進程

                             提供輔助性的管理功能:953/tcp

                             

配置文件:

主配置文件:/etc/named.conf   

                            全局配置:options {};

                            日誌子系統配置:logging {};

                            區域定義:    本機能夠爲哪些zone進行解析,就要定義哪些zone

                                                  zone "zone_name" IN    {};

                                                  一般定義在:/etc/named.rfc1912.zones 中

               特別注意:

                            每一行必須以";"結尾,

                            { ;};   花括號內外結尾都必須加;

                    

               設置監聽接口與端口:

                             options{

                                   listen-on  port 53 { IP; };

                            };

                             

                             默認配置爲只監聽迴環地址,可直接修改成需要監聽的IP地址

                                           或者localhost

                             也可以刪除此行,或使用"//"將此行這注釋掉,默認監聽全部本地接口

               

               設置zones文件目錄:

                            directory       "/var/named"

                             

               訪問控制列表:

                            bind內置4個控制列表:

                                           none:    沒有一個主機

                                           any:      任意主機

                                           localhost:本機

                                           localnet:本網段,即本機的IP 同掩碼運算後得到的網絡地址

 

               訪問控制指令:

                            allow-query  {};     允許查詢的主機;白名單

                                                                一旦定義,名單以外的主機禁止訪問

                            allow-transfer  {}; 允許區域傳送的主機;白名單

                            allow-recursion  {};允許遞歸的主機,白名單,建議全局使用

                            allow-update  {};    允許動態更新數據庫中的內容

                             

                             訪問控制指令可以寫在options{};中,表示全局有效

                                           也可以寫在zone""{};定義中,針對指定區域

                                           範圍越小優先級越高

 

               其他選項:

                            recursion yes|no; 是否開啓遞歸功能

                             

                            dnssec-enable  yes;              此兩項爲安全選項,如非特別需要,或者非常熟悉此功能配置

                            dnssec-validation  yes;  否則建議關:閉

               

               根區域定義:

                            zone "." IN  {

                                   type  hint;

                                   file  "named.ca";

                             };

               

實驗1:配置緩存名稱服務器

               步驟:     centos7.5爲例

                     1     yum 安裝  bind

                     2     修改主配置文件,註釋掉listen-on 和 allow-query 兩行,修改dnssec 兩行值爲no

                     3     開啓named服務   systemctl start named;systemctl enable named

                     4     使用ss -tunl  查看tcp udp 53端口記憶tcp953端口是否正常開啓

                     5     在另外一臺虛擬機上測試是否可以正常解析

                                   dig  www.baidu.com @192.168.65.155

 

實驗2: 配置主dns服務器,且實現ip地址輪詢

               環境配置:

                            還是實驗1中的dns服務器,現需要配置區域  alitaobao.com 的正向解析區域

                            服務器ip地址:192.168.65.155 靜態ip 另外還一塊網卡通過dhcp連接外部網絡

                             http服務器兩臺且處於運行狀態

                                           192.168.65.150       頁面 web1.alitaobao.com

                                           192.168.65.128       頁面 web2.alitaobao.com

               實現步驟:

                     1     在主配置文件中添加區域

                                          vim  /etc/named.rfc1912.zones

                                          zone  "alitaobao.com" IN {

                                                  type master;

                                                  file "alitaobao.zone";

                                           };

                     2     配置區域解析庫文件

                                          vim  alitaobao.zone

                                          $TTL  86400

                                          @       IN       SOA     ns1.alitaobao.com.   fun.alitaobao.com. (

                                                                                     2018060201

                                                                                     1H

                                                                                     10M

                                                                                     3D

                                                                                     1D )

                                                         IN      NS      ns1

                                                         IN      NS      ns2

                                           ns1     IN      A        192.168.65.155

                                           ns2     IN      A        192.168.65.160

                                           www     IN      A        192.168.65.128

                                                         IN      A       192.168.65.150

                                          @       IN       A        192.168.65.128

                                                         IN      MX 5    mx1

                                                         IN      MX 10   mx2

                                           mx1     IN      A        192.168.65.155

                                           mx2     IN      A        192.168.65.155

                                          *       IN       A       192.168.65.128      

                    

                     3     修改文件屬組和權限

                                          chown  :named /var/named/alitaobao.zone

                                          chmod  640 /var/named/alitaobao.zone

 

                     4     檢查配置:

                                           named-checkconf         檢查主配置文件語法錯誤

                                           named-checkzone "alitaobao.com"  /var/named/alitaobao.zone

                                                         檢查區域解析庫文件語法是否錯誤

                    

                     5     重讀配置文件:

                                           使用rndc reload 命令重讀配置文件

                    

                     6     使用dig -t A  www.alitaobao.com @192.168.65.155 測試解析

                    

                     7     在另外一臺虛擬機上測試打開www.alitaobao.com 是否輪詢

                                           修改/etc/resolv.conf 默認dns爲192.168.65.155

                                           使用curl www.alitaobao.com 測試頁面

                    

                     結果:隨機打開web1 和web2 頁面

 

 

測試命令:

               dig:       

                            dig [-t type] name  [@server] [query options]

                                           只用於測試dns系統,不會查詢本地hosts文件解析

                            查詢選項:

                                           +[no]trace      跟蹤解析過程:dig +trace baidu.com

                                                                不管是否制定dns服務器,始終從根開始

                                           +[no]recurse:進行遞歸解析

                             

                            測試反向解析:

                                          dig -x  IP

                                          dig -t  ptr 反寫ip.in-addr.arpa

                            模擬區域傳送:

                                          dig -t  axfr zone_name @server

                                          dig -t  axfr alitaobao.com @192.168.65.155

                                          dig -t  axfr 65.168.192.in-addr.arpa @192.168.65.155

                                          dig -t  NS . @a.root-servers.net

        

               host:

                            host [-t tpye] name  [SERVER]

                                    例如:

                                          host  -t NS alitaobao.com 192.168.65.155

                                          host  -t axfr alitaobao.com 192.168.65.155

                                          host  alitaobao.com

                                           

               nslookup:

                            nslookup [-option]  [name|-] [server]

                                    例如:

                                           nslookup www.alitaobao.com [192.168.65.155]

                             

                            交互式命令:

                                   nslookup

                                   >server IP             用於切換dns服務器

                                   >set  q=type 用於切換查詢類型

                                   >FQDN                要查詢的名稱

 

rndc命令使用:

               用法:rndc COMMAND

               COMMAND:

                            reload                           從在主配置文件和區域解析庫文件

                            reload  ZONE_NAME     重載指定區域解析庫文件

                            retransfer  ZONE_NAME        手動啓動區域傳送,而不管序列號是否增加

                            notify  ZONE_NAME      重新對區域傳送發通知

                            reconfig                重載主配置文件

                            querylog               開啓或關閉查詢日誌文件/var/log/message

                            trace                           遞增debug一個級別

                            trace LEVEL                 指定使用的debug級別

                            notrace                        將調試級別設置爲0

                            flush                            清空dns服務器的所有緩存記錄

 

               

反向區域:

               區域名稱:網絡地址反寫.in-addr.arpa.

                            172.15.100. --->  100.15.172.in-addr.arpa.

               

               1     定義區域

               

               2     定義區域解析庫文件

                     注意:不需要MX 以PTR記錄爲主

                    

 

實驗3:配置反向區域解析:

               1     定義區域

                                   vim  /etc/named.rfc1912.zones

                                   zone  "65.168.192.in-addr.arpa" IN {

                                          type  master;

                                          file  "65.168.192.in-addr.arpa.zone";                                                

                                    };

 

               2     定義區域解析庫文件

                                   vim  /var/named/65.168.192.in-addr.arpa.zone

                                   $TTL  86400

                                   @       IN       SOA     ns1.alitaobao.com.  admin.alitaobao.com. (

                                                                              2018060201

                                                                              1H

                                                                              10M

                                                                              3D

                                                                              1D )

                                                  IN      NS      ns1.alitaobao.com.

                                                  IN      NS      ns2.alitaobao.com.

                                   128     IN       PTR      www.alitaobao.com.

                                   150     IN       PTR      www.alitaobao.com.

 

               3     修改權限並重載配置文件

                                   chown :named  /var/named/65.168.192.in-addr.arpa.zone

                                   chmod 640  /var/named/65.168.192.in-addr.arpa.zone

                                   rndc  reload

               

               4     測試:

                                   dig -x  192.168.65.128 @192.168.65.155

                                   dig -t ptr  128.65.168.192.in-addr.arpa @192.168.65.155

                                   host -t ptr  192.168.65.128

                     注意:host命令查詢ptr記錄可以不用反寫ip

                    

允許動態更新:未復現

                指定的zone語句塊中:Allow-update {any;};

                             chmod 770  /var/named

                             setsebool  -P named_write_master_zones on  

                                    此命令需要開啓selinux

                                    未復現

                              nsupdate

                            • >server  127.0.0.1

                            • >zone  magedu.com

                            • >update add  ftp.magedu.com 88888 IN A 8.8.8.8

                            •  >send

                            • >update delete  www.magedu.com A

                            • >send  

                             測試:dig ftp.magedu.com @127.0.0.1

                            ll  /var/named/magedu.com.zone.jnl

                            cat  /var/named/magedu.com.zone            

                    

 

從服務器:

               注意事項:

                     1     應該爲一臺獨立的名稱服務器

                     2     主服務器的區域解析庫文件中必須有一條NS記錄指向從服務器

                     3      從服務器只需要定義區域,而無需提供解析庫文件,解析庫文件應該放置於

                            /var/named/slaves/  目錄中

                     4     主服務器得允許從服務器做區域傳送

                     5     主從服務器時間應該同步,可通過ntp進行

                     6     bind程序的版本應該保持一致,否則,應該從高主低

                     7     如主服務器down掉之後,過期時間到了過了但是服務器還沒上線

                             從服務器將會停止服務

               

               定義從區域的方法:

                            zone "ZONE_NAME" IN  {

                                   type  slave;

                                   masters  { MASTER_IP; };

                                   file  "slaves/ZONE_NAME.zone.slave";

                             };

               

 

實驗4:配置正反向從服務器,並實現主從同步             

               1     開啓另外一臺虛擬機,ip爲192.168.65.160 ,作爲從dns服務器使用

               2     使用yum  install bind 安裝bind

               3      修改主配置文件,監聽端口,允許訪問的列表,dnssec

               4     定義正向區域zone

                                   vim  /etc/named.rfc1912.zones

                                   zone  "alitaobao.com" IN {

                                                  type slave;

                                                  masters { 192.168.65.155; };

                                                  file "slaves/alitaobao.com.zone.slave";

                                   };                  

               5     定義反向區域zone                                   

                                   zone  "65.168.192.in-addr.arpa." IN {

                                                  type slave;

                                                  masters { 192.168.65.155; };

                                                  file "slaves/65.168.192.in-addr.arpa.zone.slave";

                                    };

               

               6     開啓服務,systemctl start named

               

               7     查看區域解析庫文件是否已同步

                                    [root@3-centos7 /var/named/slaves]#ls

                                    65.168.192.in-addr.arpa.zone.slave   alitaobao.com.zone.slave

                     還可以通過日誌查看:

                                   tail -f  /var/log/messages

                     也可以在主服務器中查看日誌

                                    

               8     測試名字解析

                                   dig  www.alitaobao.com @192.168.65.160

                                   dig -t MX  alitaobao.com @192.168.65.160

               

               9      主服務器修改解析,更新序列號之後,查看是否同步

                            使用tail -f /var/log/messages   查看已同步

                    

                      主服務器修改解析,不更新序列號,查看是否同步

                                    未同步

                                    

                      主服務器單獨修改序列號,未更新解析記錄,查看是否同步

                                    會同步

               

                     主服務器設置allow-transfer { none; }; 且修改解析和序列號:

                                    查看日誌:

                                    主服務器端     zone transfer 'alitaobao.com/IXFR/IN' denied

                                    從服務器端     failed while receiving responses: REFUSED

 

 

實驗5:實現子域授權

               使用另外一臺虛擬機192.168.65.150 作爲子域 baidu.alitaobao.com 的dns服務器

               1     在父域上授權子域:

                            vim  /var/named/alitaobao.zone   

                            添加兩條記錄

                            baidu   IN       NS       ns1.baidu

                            ns1.baidu IN    A        192.168.65.128

               2     子域服務器修改主配置文件選項

               3     子域服務器修改定義區域,增加

                                   zone  "baidu.alitaobao.com" {

                                          type  master;

                                          file  "baidu.alitaobao.com.zone";

                                    };

 

               4     子域服務器定義區域解析庫文件:

                                   $TTL  86400

                                   @       IN       SOA     ns1.baidu.alitaobao.com.  fun.baidu.taobao.com. (

                                                                              2018050201

                                                                              1D

                                                                              30M

                                                                              7D

                                                                              1D )

                                                  IN      NS      ns1

                                   ns1     IN       A        192.168.65.150

                                   www     IN       A        192.168.65.128

                                   *       IN       A       192.168.65.128                    

               

               5     啓動服務

               

               6     測試:

                            dig  www.baidu.alitaobao.com @192.168.65.150

                             

               7     注意:需關閉dnssec功能

               

 

實驗6:實現區域轉發和全局轉發

               1     在測試機查詢       dig ftp.alitaobao.com  @192.168.65.150

                     由於alitaobao.com 這個區域只是私自定義,並未在互聯網上註冊

                     所以通過baidu.alibaidu.com這個區域解析服務器查詢時,由於子域並不知道父域ip

                     所以會從根域開始自上而下搜尋

                     當然找不到

 

               2     子域服務器設置區域轉發,在192.168.65.150服務器上將區域alitaobao.com  轉向192.168.65.155

                            vim  /etc/named.rfc1912.zones

                            zone "alitaobao.com"  IN {

                                          type  forward;

                                           forward only;

                                           forwarders { 192.168.65.155; };

                             };

                     執行rndc reload

               3     測試機測試dig ftp.alitaobao.com @192.168.65.150

                      會發現依然無法查看,注意此時需要子域服務器執行 rndc flush  清除緩存即可

                    

               4     設置全局轉發:

                            在子域dns服務器主配置文件中定義全局配置:

                                           forward only;

                                           forwarders { 114.114.114.114;};

                             同時將上一步中區域轉發註釋掉或者刪除

                            執行rndc reload

                            執行rndc flush

               

               5     測試機上測試       dig www.baidu.com  @192.168.65.150          OK

                                    測試        dig ftp.alitaobao.com @192.168.65.150            NOT OK

                     證明114 無法解析  ftp.alitaobao.com

                             

                     再次開啓區域轉發,reload flush

                     然後再次測試       dig ftp.alitaobao.com  @192.168.65.150             OK

                    

                     所以:    區域轉發優先級高於全局轉發

 

 

bind 中的ACL

               ACL: 訪問控制列表

                             把一個或多個地址歸併爲一個集合,並通過一個統一的名稱調用

                             

               格式:     

                            acl list_name  {

                                    ip;

                                    net;

                                    ...

                             };

               示例:

                            acl mymet  {

                                    172.20.0.0/16;

                                    10.10.10.10;

                            };

 

               系統自帶列表: none,any,localhost,localnet

               

               注意:     只能先定義,後使用

                             因此一般定義在配置文件中,處於options的前面

              

               

bind view:

               view:    視圖,用於實現只能DNS

                            一個bind服務器可以定義多個view,每個view中可以定義一個或多個zone

                            每個view用來匹配一組客戶端

                            多個view內可能需要對同一個區域進行解析,但使用不同的區域解析庫文件

                             

               注意:

                     1     一旦啓用了view,所有的zone都只能定義在view中,

                     2     僅在允許遞歸請求的客戶端所在view定義根區域

                     3     客戶端請求到達時,是自上而下檢查每個view所服務的客戶端列表

                    

               格式:

                            view VIEW_NAME  {

                                   match-clients  { LIST ;};

                                   zone  "alitaobao.com" IN {

                                          type  master;

                                          file  "alibaidu.com.zone";

                                    };

                                   include  "/etc/named.rfc1912.zones"

                             };

                             

 

實驗7: 通過view實現智能dns

               192.168.65.160       充當dns服務器,解析區域爲baidu.com

               要求:

                            當192.168.65.128訪問www.baidu.com時,指向1.1.1.1

                            當192.168.65.150訪問www.baidu.com時,指向2.2.2.2

                            當192.168.65.155訪問www.baidu.com時,指向3.3.3.3

               

               步驟:

               1     修改配置文件,vim /etc/named.conf 修改 必要選項

                     如:  listen-on allow-query dnssec

                    

               2     定義acl

                            acl list128  {

                             192.168.65.128;

                             };

                            acl list150  {

                                           192.168.65.150;

                             };

                            acl list155  {

                                           192.168.65.155;

                             };

               

               3     定義view,以及各個view中定義的區域"baidu.com"

                             

                            view huazhongnet  {

                                           match-clients { list128; };

                                          zone  "baidu.com" IN {

                                                         type master;

                                                         file "huazhongnet.zone";

                                           };

                                           include "/etc/named.rfc1912.zones";

 

                             };

 

                            view huanannet  {

                                           match-clients { list150; };

                                          zone  "baidu.com" IN {

                                                         type master;

                                                         file "huanannet.zone";

                                           };

                                           include "/etc/named.rfc1912.zones";

                             };

 

                            view huabeinet  {

                                           match-clients { list155; };

                                          zone  "baidu.com" IN {

                                                         type master;

                                                         file "huabeinet.zone";

                                           };

                                           include "/etc/named.rfc1912.zones";

                            };                         

                    

               4     將根域  "." 定義到/etc/named.rfc1912.zones中

                            zone "." IN  {

                                          type  hint;

                                          file  "named.ca";

                            };                         

 

               5     定義區域配置庫文件 huazhongnet.zone,以及屬組、權限修改

                            vim  /var/named/huazhongnet.zone

                            $TTL  86400

                            @       IN       SOA     ns1.baidu.com.  fun.baidu.com. (

                                                                       2018060201

                                                                       1D

                                                                       1H

                                                                       7D

                                                                       1D )

                                           IN      NS      ns1

                            ns1     IN       A        192.168.65.160

                            @       IN       A        1.1.1.1

                            www     IN       A        1.1.1.1

                            *       IN       A        1.1.1.1

                    

                     定義區域配置庫文件 huanannet.zone,以及權限修改

                            $TTL  86400

                            @       IN       SOA     ns1.baidu.com.  fun.baidu.com. (

                                                                       2018060201

                                                                       1D

                                                                       1H

                                                                       7D

                                                                       1D )

                                           IN      NS      ns1

                            ns1     IN       A        192.168.65.160

                            @       IN       A        2.2.2.2

                            www     IN       A        2.2.2.2

                            *       IN       A        2.2.2.2

                    

                     定義區域配置庫文件 huanannet.zone,以及權限修改

                            $TTL  86400

                            @       IN       SOA     ns1.baidu.com.  fun.baidu.com. (

                                                                       2018060201

                                                                       1D

                                                                       1H

                                                                       7D

                                                                       1D )

                                           IN      NS      ns1

                            ns1     IN       A        192.168.65.160

                            @       IN       A        3.3.3.3

                            www     IN       A        3.3.3.3

                                          IN      A        3.3.3.3

                                           

                     chgrp named  /var/named/*

                     chmod 640  /var/named/*

 

               6     啓動服務並測試

                     在三臺測試機上分別執行 host www.baidu.com 192.168.65.160

                     結果OK

               

 

編譯安裝bind:---------------------------------------------------------------------

 

編譯安裝步驟:

               1     建立named組和named賬號

                            groupadd -g 53 -r  named

                            useradd -r -g named  -u 53 named

               2     安裝開發包組

                            group install  "development tools"

        

               3     下載源碼包,並解壓,cd到解壓目錄

               4     less README,執行./configure   查看安裝選項

               5     執行configure程序

                     ./configure  --prefix=/usr/local/bind9 --without-openssl --without-ipv6  \

                             --sysconfdir=/etc/named --enable-threads  --disable-chroot

               

               6     make

               7     make  install

               

通用安裝後配置:

               1     添加PATH路徑

                     vim  /etc/profile.d/named.sh

                                    PATH=/usr/local/bind9/bin:/usr/local/bind9/sbin:$PATH

               

               2     添加庫文件

                     vim  /etc/ld.so.conf.d/name.conf

                                    /usr/local/bind9/lib

                     ldconfig  -v

                     ln -sv  /usr/local/bind9/include /usr/include/named

               

               3     添加man  文檔路徑

                     vim  /etc/man.conf   man_db.conf                   分別對應centos6 centos7

                     添加一行路徑記錄

                     MANPATH             /usr/local/bind9/share/man

               

添加、編輯配置文件:

               1     編輯主配置文件

                     vim  /etc/named/named.conf

                                   options  {

                                                  directory        "/var/named/";

                                                  dnssec-enable no;

                                                  dnssec-validation no;

                                                  recursion yes;

                                    };

 

                                   zone "." IN  {

                                                  type hint;

                                                  file "named.ca";

                                     };

 

                                   zone  "localhost" 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; };

                                    };

 

               2     添加區域解析庫文件

                     mkdir  /var/named

                     cd  /var/named

                    

                     生成named.ca

                                   dig +norec  @a.root-servers.net. > named.ca

                     生成named.localhost

                                   vim  named.localhost            

                                   $TTL  86400

                                   @       IN       SOA     ns1.localhost.  fun.localhost. (

                                                                              01

                                                                              1D

                                                                              1H

                                                                              3D

                                                                              1D )

                                                  IN      NS      localhost.

                                    localhost.      IN      A        127.0.0.1

                    

                     生成named.loopback

                                   vim  named.loopback

                                   $TTL  86400

                                   @       IN       SOA     localhost.      fun.localhost. (

                                                                              01

                                                                              1D

                                                                              1H

                                                                              3D

                                                                              1D )

                                                  IN      NS      @

                                                  IN      A       127.0.0.1

                                                  IN      PTR     localhost.

 

               3     修改配置文件權限

                                   chgrp -R  named /etc/named/

                                   chgrp -R  named /var/named/

                                   chmod -R 640  /etc/named/*

                                   chmod -R 640  /var/named/*

                     注意:   

                                    不要修改主目錄/etc/named /var/named 權限

                                    如需修改,也必須保持named用戶對主目錄有rx權限

               

啓動和測試服務:

                     man named                獲取使用選項

                     named-checkconf       檢查配置文件語法是否錯誤

                      named-checkzone  "zone" /zonefile    檢查區域解析庫文件語法是否錯誤

                     named -u named -f -g      前臺啓動,查看是否正常

                     如無異常使用 named -u named 啓動後臺執行

                      如沒有添加區域,則默認爲一臺緩存dns服務器

                    

                      注意:編譯安裝啓動的程序無法通過systemctl 控制啓動和關閉

                      如通過後臺執行,需要關閉程序,需要使用kill命令

                     例如:

                                   killall -1  named    重讀配置文件

                                   killall named          關閉服務

                     如果最小化安裝,默認沒有killall的情況下

                            1     直接使用kill  配合ps命令

                            2     yum install psmisc 安裝即可

                    

               

使用rndc:

               生成key:

                            rndc-confgen -r  /dev/urandom > /etc/named/rndc.conf

               寫入主配置文件:

                            tail  /etc/named/rndc.conf >> /etc/named/named.conf

               刪除註釋:

                            vim  /etc/named/named.conf

                            刪除寫入key文件那幾行前面的# 最後一行 #  End of named.conf 保留#

               重讀配置文件:

                            killall -1  named

               測試使用rndc

                            rndc status  

                    

        

壓力測試:

               編譯壓力測試工具:

                            cd  contrib/queryperf/

                             ./configure

                             make

                            cp queryperf  /usr/bind9/bin

               編輯測試文件:

                            vim  test.txt

                            www.magege.com  A

                             ....

                             一系列解析操作集合,視機器配置,一般10W行左右即可

               測試:

                            queryperf -d  test.txt -s 192.168.65.155

                             

               打開日誌功能測試:

                            rndc  querylog

                            rndc  reload

                            queryperf -d  test.txt -s 192.168.65.155

                            wc -l  /var/log/message

 

筆記整理完成時間:2018年6月5日09:33:19

 

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