DNS服務編譯安裝,及配置

DNS服務是域名轉換服務。

    原理及功能可以參考http://kmk0226.blog.51cto.com/5975994/1678180

    


今天的博客是介紹DNS服務的編譯安裝,以及安裝之後如何配置DNS服務,讓服務能正常運行。


    在Linux系統中,DNS服務在Bind這個程序中配置的。

    首先,要編譯安裝DNS服務,需要先去下載源碼包。

    源碼包可以在bind官方網站下載

        bind官方站點:www.isc.org

    

        wKioL1W7daHyibRkAABTISyDLpQ169.jpg


            有9.9.X與9.10.X的版本,我們這裏以9.9.X的版本來編譯安裝。

            X代表子版本,可能版本會跟圖片中不一樣


        先下載源碼包到Linux系統中。

            具體如何下載可以先下載到win系統中再共享方式到linux系統中,如果linux系統有圖形界面可以直接到官方網站下載。


        下載完成之後,解壓源碼包

           

 tar -xvf bind-9.9.7-P1.tar.gz :解壓源碼包
 cd bind-9.9.7-P1    :進入解壓後的目錄
 ./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named/ --enable-threads --disable-chroot --disable-ipv6    :運行configure程序,生成配置腳本文件makefile文件

        

        --prefix= :指定單獨的安裝路徑,爲了刪除方便,一般放在/usr/local/下

--sysconfdir= :存放配置文件,配置文件一般在,/etc/下

--enable-threads:默認關閉的,啓用線程工作模式,擁有更好的性能

--disable-ipv6:關閉IPV6的功能

--with-dlz--mysql:基於mysql安裝


        

        編譯完之後直接可以安裝        

make && make install    :編譯與安裝,編譯安裝都是根據以上配置腳本文件中的配置來編譯與安裝的

        

        安裝完之後程序會放在原來指定的安裝路徑中。

            我們這裏的安裝路徑在:/usr/local/bind9

                安裝目錄下有很多的工具與庫文件     

        bin,sbin:存放工具,如dig。

share:存放man

man -M /usr/local/bind9/share/man

可以查看新版的man

lib:庫文件




        雖然已經安裝完成了,但是我們的服務還沒有完全安裝完成,因爲我們編譯安裝的服務程序,是不會自動幫忙更新man、PATH、庫文件,以及服務啓動腳本


        所以我們需要自己導入與編寫。


        首先:先導入man

    vim /etc/man.config

            修改man配置文件

                MANPATH /usr/local/bind9/share/man

                將/usr/local/bind9/share/man加入到MANPATH參數中
         

MANPATH /usr/man
MANPATH /usr/share/man
MANPATH /usr/local/man
MANPATH /usr/local/share/man
MANPATH /usr/X11R6/man
MANPATH /usr/local/bind9/share/man


        導入man文件之後,我們要將我們的bind工具加入到PATH中

        vim /etc/profile.d/bind.sh 
         在/etc/profile.d目錄中新建一個bind.sh的shell腳本
        腳本中寫入:export PATH=/usr/local/bind9/bin:/usr/local/bind9/sbin:$PATH

        注意:最後的$PATH一定要加,這是爲了添加原先已經有的PATH,否則原來的就不能用了。


        腳本添加完畢重啓系統,腳本將會自動將我們的新工具添加到PATH中


        最後我們查看下庫文件。

            所有的庫文件都是靜態的以.a結尾的庫文件,所以不需要安裝

                如果遇到動態的庫文件就需要安裝了,結尾爲.so的爲動態庫文件

            

        到此我們的服務就安裝完成了,接下去就是要提供配置文件,讓服務運行起來了。

            編譯安裝的服務是不會自帶配置文件的。


        DNS的配置文件都放在/etc/named目錄下

        

        

先進入/etc/named 

cd /etc/named
    
然後新建named.conf這個配置文件
vim named.conf

    
options {

   directory "/var/named";
   recursion yes;


};

#這裏options代表是配置文件中的全局配置
    directory:是配置文件中的工作目錄,一般都位置爲/var/named目錄中
    recursion yes:代表是否允許遞歸,一定要保留,看過DNS原理的都知道DNS服務器是以遞歸方式工作的,所以這一項必須要開啓
        全局配置只要開啓兩項就能正常工作了
        其他的配置可以參考man文件來配置。畢竟我們已經更新了man文件了,嘿嘿

zone "." IN {

  type hint;
  file "named.ca";

};

zone "localhost" IN {

  type master;
  file "localhost.zone";
  allow-update { none;  };

};

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

   type master;
   file "127.0.0.zone";
   allow-update { none; };
   
zone "kmk.com" IN {

  type master;
  file "kmk.zone";
  allow-update { none; };

};
   
   
   zone代表區域配置
       zone "域名"   IN{
	type {master(主區域)|slave|hint(根區域)|forward};  :類型
	
	file "mageedu.com.zone";     :文件	
	
	allow-update { none; };    :域DHCP服務聯動更新,域名IP,絕對不允許這是安全問題	
	
			    };
			    
            反解域需要將IP地址倒過來寫,並且添加.in-addr.arpa
                如上:0.0.127.in-addr.arpa
               
       注意:所有的語句後面都需要用;分號結尾
       
 主配置文件建立完畢,我們要先修改下權限,讓配置文件可以被named用戶訪問,如果沒有named用戶需要先建立,named的用戶與組
     id named:查看下是否有建立用戶組
     
        沒有的話新建用戶與組
    useradd -r named    :添加用戶-r代表添加的是系統用戶
    groupadd named    :添加組
    
    修改屬組屬主及權限:chown root:named named.conf
		        chmod 640 named.conf

        

    以上爲主配置文件的建立,配置完主配置文件,我們還需要配置區域配置文件


        進入剛剛全局配置中的工作目錄

            

先創建工作目錄與修改屬組屬主,編譯安裝的服務,工作目錄是沒有的
       
創建目錄:mkdir /var/named/slaves -pv
		chown root:named /var/named/
		chown named:named /var/named/slaves/
		chmod 750 /var/named/
		chmod 770 /var/named/slaves/
		
		
    目錄創建完成,先獲取根域的節點信息
        dig -t NS . @a.root-servers.net > /var/named/named.ca
            用dig工具獲取到根節點的信息,然後發送到/var/named/named.ca這個配置文件中
       這樣就配置玩根節點了
       
       然後配置本地域名解析
           在配置.zone文件
           vim localhost.zone
           
           $TTL 3600    :定義統一的緩存時長單位是秒鐘
            @       IN      SOA     localhost.      admin.localhost.        (SOA記錄,文件必須要的。
                        2015072207    :序列號,最多十個數字
                        2H    :刷新時間間隔 ,每兩個小時同步一次
                        10M    :如果主DNS服務器不在線,每十分鐘重試一次
                        7D    :試7天之後,還不在線斷線
                        1D    :否定回答TTL值 ,1天
    
                            )
                    IN      NS      localhost.    :ns記錄,第一行的區域名稱與上面一條一樣可以省略
                    IN      A       127.0.0.1    :A記錄
                    
                    
         vim 127.0.0.zone:這個是反向解析區域文件
             $TTL 3600
                @       IN      SOA     localhost.      admin.localhost. (
                                        2015072305
                                        3H
                                        15M
                                        7D
                                        1D
                )
                        IN      NS      localhost.
                1       IN      PTR     localhost.
            
          vim kmk.zone    :配置自定義的區域文件
              $TTL 3600
                @       IN      SOA     ns.kmk.com.     admin.kmk.com. (
                                        2015072301
                                        2H
                                        10M
                                        7D
                                        1D
                )
                        IN      NS      ns.kmk.com.
                        IN      MX      10      mail.kmk.com.
                ns.kmk.com.     IN      A       192.168.142.128
                www.kmk.com.    IN      A       192.168.142.128
                mail.kmk.com.   IN      A       192.168.142.129 
                    
     區域解析庫文件說明:
         區域解析庫:
	資源記錄:rr(resource record),一行一個資源記錄
		有類型的概念:用於此記錄解析時的屬性
		
	SOA:Start Of Authority,起始授權記錄,一個區域文件,只能有一個soa文件記錄
	NS:Name Server,代表名稱服務器
	MX:Mail eXchange,郵件交換器,MX記錄有優先級屬性(0-99,越小越高)
	A:FQDN --> IP:專用於正向解析庫,不能域PTR同時在一起
	PTR:IP --> FQDN:專用於方向解析庫,不能域A同時在一起
	AAAA:FQDN --> IPV6,專用於正向解析庫
	CNAME:Canonical Name,正式名稱,別名記錄
	    張三的正式名稱是tom,代表張三是別名
                    
                    
                    
            配置完之後修改屬組屬主及權限:
            
	    	chgrp named 127.0.0.zone localhost.zone named.ca kmk.zone:修改屬組
		chmod 640	127.0.0.zone localhost.zone named.ca kmk.zone :修改權限		

        

現在一個緩存DNS服務器已經完成

可以嘗試啓動緩存名稱服務器

named-checkconfig:檢查配置文件是否有語法錯誤

named 命令可以直接啓動named服務

-h:查看版主文件

-g:前臺啓動

-u:啓動服務

-c:啓動服務的配置文件在哪

named -g -u named -c /etc/named/named.conf:啓動服務


成功之後出現字符:

all zones loaded

running

            出現以上字符代表已經啓動成功,但是不會繼續下去,如果想要測試,可以新建窗口進行測試

            測試方法爲

                dig -t PTR kmk.com @192.168.142.128

                    這個代表解析kmk.com這個域裏面的所有信息,而解析服務器爲192.168.142.128這個服務器IP爲你現在建立的DNS服務器IP,如果解析出來了代表成功了。


            

        如果測試成功,那麼不要高興,因爲你的服務器還是個半成品,我們要需要導入rndc密鑰信息

            否則你的服務器將會很不安全。

        

        導入rndc

        

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

    利用rndc-confgen將urandom中的一個隨機數添加至rndc.conf

                urandom:一個提供隨機數的目錄

    -r:代表利用urandom中的隨機數,不是熵池中的隨機數

再將rndc.conf中的key段發送到/etc/named/named.conf中

    options {

   directory "/var/named";
   recursion yes;


};

#rndc發送過來的key信息
#Use with the following in named.conf, adjusting the allow list as needed:
 key "rndc-key" {
        algorithm hmac-md5;
        secret "4NNN/HzlnbeGLOewSowoaQ==";
 };


zone "." IN {

  type hint;
  file "named.ca";

};

zone "localhost" IN {

  type master;
  file "localhost.zone";
  allow-update { none;  };

};

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

   type master;
   file "127.0.0.zone";
   allow-update { none; };
};

zone "kmk.com" IN {

  type master;
  file "kmk.zone";
  allow-update { none; };

};

以上是最後完整的全局配置文件信息


最後再重讀named.conf這個配置文件

killall -HUP named

chmod 440 rndc.conf:修改rndc.conf權限


     到此DNS服務的配置就全部完成了,可以使用named -g -u named -c /etc/named/named.conf來啓動服務,但是這樣很不方便,可以再編輯一個服務腳本來控制啓動關閉及重啓之類的操作。

    如用service機制,具體可以參考cent OS 6的service腳本編輯來寫腳本



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