DNS 架設

  1. 安裝 bind 套件
    [root@kvm8 ~]# yum install bind
    

  2. 設定檔 /etc/named.conf 格式
    statement-1 ["statement-1-name"] [statement-1-class] {
      option-1;
      option-2;
      option-N;
    };
    // 每段設定結束符號為 ;
    // // 後文字為註解
    

  3. 編輯設定檔 /etc/named.conf – options 定義 server 整體設定
    [root@dyH ~]# cat /etc/named.conf
    // named.conf for KVM
    // See /usr/share/doc/bind*/sample/ for example named configuration files.
    
    options {
    	listen-on port 53 { any; }; // ipv4 監聽 port 53,回應任何主機的查詢
    	listen-on-v6 port 53 { ::1; }; // ipv6 盛聽 port 53,只回應本機的查詢
    	directory 	"/var/named";  // 工作目錄
    	// 指定 DNS database 的 cache 及 rndc dumpdb 命令的輸出
    	dump-file 	"/var/named/data/cache_dump.db"; 
    	// 指定 DNS database 的 cache 及 rndc stats 命令的輸出
    	statistics-file "/var/named/data/named_stats.txt"; 
    	// 指定統計使用的記憶體位置
    	memstatistics-file "/var/named/data/named_mem_stats.txt";
    	allow-query { any; };  // 允許任何主機都可查詢
    	recursion yes;  // 遞迴式,如果本 DNS server 查不到,會往上層查。
    
    	dnssec-enable yes;  // 回傳 DNS Security Extensions ( DNSSEC ) 相關的 RR
    	dnssec-validation yes; // RR 經由 DNSSEC 認證
    	dnssec-lookaside auto; //DNSSEC Lookaside Validation (DLV)
    
    	/* Path to ISC (Internet Systems Consortium 協會) DLV key */
    	bindkeys-file "/etc/named.iscdlv.key"; 
    
    	forward only; // 當無法從 forwarders 查詢時,也不從自己本身查詢
    	forwarders {  // 指定查詢的 DNS servers 
    		192.168.1.254;
    		168.95.1.1;
    		139.175.10.20;
    	};
    };
    

  4. 編輯設定檔 /etc/named.conf – logging 定義記錄方式
    logging { // 允許多種型態的記錄,每種記錄以 chnnel 區分
    	 channel default_debug { // 預設 debug 訊息 channel
    		  file "data/named.run"; // 存放檔案
    		  severity dynamic;   // 嚴重層級為動態
    	 };
    };
    

  5. 編輯設定檔 /etc/named.conf – zone 定義
    zone "." IN { // .(root) 
    	type hint;   // root nameserver 使用的型態
    	file "named.root"; 
    };
    
    zone "deyu.wang" IN { // zone deyu.wang 正解查詢設定
    	type master;  // 指定為主要 DNS server,zone 的設定檔在系統中
    	file "named.deyu.wang";
    };
    
    // Address and Routing Parameter Area (arpa) 
    // IPv4 使用 in-addr.arpa 網域作為反解的最上層 zone
    // 上層網域放後面,也就是 122 < 168 < 192 < in-addr < arpa
    zone "122.168.192.in-addr.arpa" IN { // 192.168.122.xxx 查詢設定 
    	type master;
    	file "named.192.168.122";
    };
    

  6. 編輯正解檔
    [root@dyH ~]# cat /var/named/named.deyu.wang 
    # 指令以符號 $ 開始
    # A   : Address record 指定 ip
    # SOA : Start of Authority recode 宣告 zone 的重要訊息
    # NS  : Nameserver record 宣告管理這個 zone 的 nameserver
    # MX  : Mail Exchange record 指定網域中郵件傳送的位置
    
    # Time to Live (TTL) value 600 秒
    $TTL	600
    
    # Start of Authority (SOA) 
    # "主要的 name server" "連絡 name server 的 email" 
    #@  IN  SOA  primary-name-server hostmaster-email (
    # 修改的序號
    #       serial-number    
    # 決定 slave nameserver 等多久再問 master nameserver 是否更新
    #       time-to-refresh  
    # master nameserver 沒回應,多久後重新請求更新
    #       time-to-retry    
    # master nameserver 持續沒回應,超過此時間,slave nameserver 停止回應查詢
    #       time-to-expire   
    # 存於其他 nameserver cache 的最小時間
    #       minimum-TTL )    
    
    @	IN SOA	deyu.wang. dywang.deyu.wang. (  
    		201210161117 3H 15M 1W 1D );
    	IN NS	deyu.wang.;
    
    deyu.wang.	IN A     192.168.122.1;
    
    server.deyu.wang.     IN CNAME linux.deyu.wang.
    
    kvm2	IN A		192.168.122.2
    kvm3	IN A		192.168.122.3
    kvm4	IN A		192.168.122.4
    kvm4	IN MX 20	kvm4.deyu.wang.
    www		IN A    	192.168.122.4
    
  7. 編輯反解檔
    [root@dyH ~]# vim /var/named/named.192.168.122 
    # PTR  : Pointer record 定義 ip 的 domain name,也就是 ip 的反解
    $TTL	600
    @	IN SOA  deyu.wang. dywang.deyu.wang. (
    		  201210161117 3H 15M 1W 1D )
    @	IN NS   deyu.wang.
    1	IN PTR  deyu.wang.
    
    2	IN PTR  kvm2.deyu.wang.
    3	IN PTR  kvm3.deyu.wang.
    4	IN PTR  kvm4.deyu.wang.
    
  8. 主機名稱最後的 "kvm2.deyu.wang." 最後的 "." 代表完整主機名稱,也就是 kvm2.deyu.wang,如果沒有 "." 代表只是主機名稱,後面必須加上 zone,在此範例為 122.168.192.in-addr.arpa.,IP 反過來寫,最後以 in-addr.arpa. 結束。例如:
  9. 正確設定查得 192.168.122.6 的反解為 kvm6.deyu.wang。
    [root@dywH ~]# nslookup 192.168.122.6
    Server:		127.0.0.1
    Address:	127.0.0.1#53
    
    6.122.168.192.in-addr.arpa	name = kvm6.deyu.wang.
    
  10. 故意將 kvm6.deyu.wang 最後的 "." 移除,再重新啟動 named。
    [root@dywH ~]# vim /var/named/named.192.168.122 
    [root@dywH ~]# grep 'kvm6\.' /var/named/named.192.168.122 
    6	IN PTR  kvm6.deyu.wang
    
    [root@dywH ~]# /etc/init.d/named restart
    Stopping named:                                            [  OK  ]
    Starting named:                                            [  OK  ]
    
  11. 再次使用 nslookup 查得 192.168.122.6 的反解為 kvm6.deyu.wang.122.168.192.in-addr.arpa.。
    [root@dywH ~]# nslookup 192.168.122.6
    Server:		127.0.0.1
    Address:	127.0.0.1#53
    
    6.122.168.192.in-addr.arpa	name = kvm6.deyu.wang.122.168.192.in-addr.arpa.
    

  12. 郵件伺服器為了檔垃圾郵件,會設定來信主機反解不正確退信 reject_unknown_client。如果 DNS 正反解設定不對,從該主機送到郵件伺服器的信都會被退回。例如:
    [root@mail ~]# nslookup 163.17.1.13
    Server:		163.17.10.1
    Address:	163.17.10.1#53
    
    Non-authoritative answer:
    13.1.17.163.in-addr.arpa	name = mg18.cyut.edu.tw.1.17.163.in-addr.arpa.
    13.1.17.163.in-addr.arpa	name = mail.cyut.edu.tw.
    

  13. 啟動 named 服務
    [root@kvm8 ~]# /etc/init.d/named restart
    

  14. 設定開機啟動 named 服務
    [root@kvm8 ~]# chkconfig named on