1. 程式人生 > >Ubuntu採用bind9配置DNS伺服器

Ubuntu採用bind9配置DNS伺服器



Ubuntu採用bind9配置DNS伺服器

最近公司專案需要用到dns伺服器,就搭建了dns伺服器。

 

1. BIND9 的安裝與配置
1.1 bind簡介

BIND (Berkeley Internet Name Domain)是Domain Name System (DNS) 協議的一個實現,提供了DNS主要功能的開放實現,包括

* 域名伺服器 (named)
* DNS解析庫函式
* DNS伺服器執行除錯所用的工具



是一款開放原始碼的DNS伺服器軟體,由美國加州大學Berkeley分校開發和維護的,

按照ISC的調查報告,BIND是世界上使用最多最廣泛的域名服務系統。不論你的郵件伺服器,WEB伺服器或者其他的services如何的安全可靠,DNS的故障會給你帶來使用者根本無法訪問這些服務。

BIND,也是我們常說的named,由於多數網路應用程式使用其功能,所以在很多BIND的弱點及時被發現。主要分為三個版本:

v4


1998年多數UNIX捆綁的是BIND4,已經被多數廠商拋棄了,除了OpenBSD還在使用。OpenBSD核心人為BIND8過於複雜和不安全,所以繼續使用BIND4。這樣一來BIND8/9的很多優點都不包括在v4中。


v8

就是如今使用最多最廣的版本,其詳細內容可以參閱 BIND 8+ 域名伺服器安全增強
v9

最新版本的BIND,全部重新寫過,免費(但是由商業公司資助),也添加了許多新的功能(但是安全上也可能有更多的問題)。BIND9在2000年十月份推出,現在穩定版本是9.3.2。

 

2. 安裝方式

   目前有兩種方式:原始碼安裝和apt-get或者rpm安裝。

 

2.1 原始碼安裝

    

下載地址  

http://www.isc.org/products/BIND

 

tar zxvf bind-9.2.6.tar.gz

包括以下子目錄:bin(全部BIND二進位制原始碼,包括named),contrib(一些工具) 

,doc(BIND的文件,包括資源手冊),lib(BIND使用的庫的原始碼),make(makefile檔案). 

#./configure 

編譯BIND,輸入: 
#make all 
安裝BIND 
#make install

 

 

2.2 apt-get

apt-get install bind9   

2種方式筆者都使用了第二種方式簡單很多,第二種方法會生成很多基礎的配置檔案,使用起來簡單了很多 

 

這裡以第二種方法來介紹:安裝完成後,配置如下
# ls /etc/bind/ -l
total 44
-rw-r--r-- 1 root root 237 Jan 16 2006 db.0
-rw-r--r-- 1 root root 271 Jan 16 2006 db.127
-rw-r--r-- 1 root root 237 Jan 16 2006 db.255
-rw-r--r-- 1 root root 353 Jan 16 2006 db.empty
-rw-r--r-- 1 root root 256 Jan 16 2006 db.local
-rw-r--r-- 1 root root 1507 Jan 16 2006 db.root
-rw-r--r-- 1 root bind 1611 Jan 16 2006 named.conf
-rw-r--r-- 1 root bind 165 Jan 16 2006 named.conf.local
-rw-r--r-- 1 root bind 672 Jan 16 2006 named.conf.options

-rw-r--r-- 1 root root  490 Feb 18 05:45 named.conf.default-zones
-rw-r----- 1 bind bind 77 Aug 4 08:41 rndc.key
-rw-r--r-- 1 root root 1317 Jan 16 2006 zones.rfc1918

 

 

配置檔案說明:

named.conf  Bind主配置檔案
named.conf.options全域性選項
db.root   根伺服器指向檔案, 由Internet NIC建立和維護, 無需修改, 但是需要定期更新
db.local    localhost正向區檔案,用於將名字localhost轉換為本地回送IP地址 (127.0.0.1)


db.127    localhost反向區檔案,用於將本地回送IP地址(127.0.0.1)轉換為名字localhost

其中,主配置檔案/etc/named.conf的配置語句

命令 用法 
acl 定義IP地址的訪問控制清單 
control 定義ndc使用的控制通道 
include 把其他檔案包含到配置檔案中 
key 定義授權的安全金鑰 
logging 定義日誌寫什麼,寫到哪 
opitons 定義全域性配置選項和預設值  
server 定義遠端伺服器的特徵 
trunsted-keys 為伺服器定義DNSSEC加密金鑰 
zone 定義一個區

預設情況下, 內容如下:

// This is the primary configuration file for the BIND DNS server named.

//

// Please read /usr/share/doc/bind9/README.Debian.gz for information on the 

// structure of BIND configuration files in Debian, *BEFORE* you customize 

// this configuration file.

//

// If you are just adding zones, please do that in /etc/bind/named.conf.local

 

include "/etc/bind/named.conf.options";

include "/etc/bind/named.conf.local";

include "/etc/bind/named.conf.default-zones";

可見主配置檔案主要是包含三個部分:

1、named.conf.options 一些配置選項

2、named.conf.default-zones 預設的本地規則,包含跟檔案、正向區檔案反向區檔案

[email protected]:/etc/bind# cat named.conf.default-zones 

// prime the server with knowledge of the root servers

zone "." {

type hint;

file "/etc/bind/db.root";

};

 

// be authoritative for the localhost forward and reverse zones, and for

// broadcast zones as per RFC 1912

 

zone "localhost" {

type master;

file "/etc/bind/db.local";

};

 

zone "127.in-addr.arpa" {

type master;

file "/etc/bind/db.127";

};

 

zone "0.in-addr.arpa" {

type master;

file "/etc/bind/db.0";

};

 

zone "255.in-addr.arpa" {

type master;

file "/etc/bind/db.255";

};

 

3、Named.conf.local 這個是用來使用者定義的,我們在這裡面新增域即可

   測試域名:smart-clouds.cn
   測試ip: 192.168.206.138 主域名伺服器 
   

 

 

Named.conf.local中增加

zone "smart-clouds.cn"{

    type master;

    file "/etc/bind/db.smart-clouds.cn";

//    allow-query-cache { any; };

    allow-query { any; };

    allow-update { any; };

//    recursion yes;

};

 

zone "206.168.192.in-addr.arpa"{

    type master;

    file "/etc/bind/db.192.smart-clouds.cn";

};

增加db.smart-clouds.cn

[email protected]:/etc/bind# touch db.smart-clouds.cn

[email protected]:/etc/bind# cat db.smart-clouds.cn 

;ND data file for local loopback interface

;

$TTL 604800

$ORIGIN smart-clouds.cn.

@ IN SOA smart-clouds.cn. root.smart-clouds.cn. (

2006080401 ; Serial

604800 ; Refresh

86400 ; Retry

2419200 ; Expire

604800 ) ; Negative Cache TTL

;

 

@ IN NS ns1

@ IN A 192.168.206.138

ns1 IN A 192.168.206.138

www IN A 192.168.206.138

 

[email protected]:/etc/bind# cat /etc/bind/db.192.smart-clouds.cn 

 

$TTL 604800

@ IN SOA smart-clouds.cn. root.smart-clouds.cn. (

2006080401 ; Serial

604800 ; Refresh

86400 ; Retry

2419200 ; Expire

604800 ) ; Negative Cache TTL

;

@ IN NS smart-clouds.cn.

138 IN PTR http://www.smart-clouds.cn.

138 IN PTR ns1.smart-clouds.cn.

 

 

內容含義參看http://hi.baidu.com/ubuntu2me/blog/item/235b94c9f84ea3107e3e6f06.html

http://www.cnblogs.com/cobbliu/archive/2013/03/19/2970311.html

 

這樣一個簡單的dns服務就已經實現

4、啟動以及測試本地dns

   [email protected]:/etc/bind# /etc/init.d/bind9 restart

   檢視啟動日誌檔案

   [email protected]:/etc/bind# tail /var/log/syslog

 

Mar 19 22:43:14 ubuntu named[61378]: managed-keys-zone: loaded serial 3

Mar 19 22:43:14 ubuntu named[61378]: zone 0.in-addr.arpa/IN: loaded serial 1

Mar 19 22:43:14 ubuntu named[61378]: zone 255.in-addr.arpa/IN: loaded serial 1

Mar 19 22:43:14 ubuntu named[61378]: zone 127.in-addr.arpa/IN: loaded serial 1

Mar 19 22:43:14 ubuntu named[61378]: zone localhost/IN: loaded serial 2

Mar 19 22:43:14 ubuntu named[61378]: zone smart-clouds.cn/IN: loaded serial 2006080401

Mar 19 22:43:14 ubuntu named[61378]: all zones loaded

Mar 19 22:43:14 ubuntu named[61378]: running

Mar 19 22:43:14 ubuntu named[61378]: zone smart-clouds.cn/IN: sending notifies (serial 2006080401)

啟動異常資訊都從該日誌中檢視

檢視bind程序是否啟動 

[email protected]:/etc/bind# ps -aux|grep named

bind     61378  0.0  0.8 164688 12904 ?        Ssl  22:43   0:00 /usr/sbin/named -u bind

root     61440  0.0  0.0  15940   916 pts/11   S+   22:47   0:00 grep --color=auto named

 

   遇到的問題

   1rndc: connect failed: 127.0.0.1#953: connection

      解決http://blog.csdn.net/lujisheng/article/details/4637204

   2、出現檔案不能生成

      chown -R bind 某資料夾 如chown -R named /etc/bind/

 

   修改/etc/resolv.conf檔案 該檔案用來設定採用dns伺服器 修改為nameserver 127.0.0.1即採用本地dns服務

   測試 

   正向 [email protected]:/etc/bind# host smart-clouds.cn

        smart-clouds.cn has address 192.168.206.138

   反向 [email protected]:/etc/bind# host 192.168.206.138

        138.206.168.192.in-addr.arpa domain name pointer ns1.smart-clouds.cn.

   本地測試完成

 

5、增加日誌資訊

   參考   http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=212998&extra=page%3D1%26filter%3Dtypeid%26typeid%3D331%26digest%3D1%26typeid%3D331%26digest%3D1

   說明日誌配置資訊統一放到named.conf.options

   日誌生成到哪取決於named.conf.options中的

   directory "/var/cache/bind";的設定如果日誌不能生成同前面提到的

   chown -R bind

   

[email protected]:/etc/bind# cat /var/cache/bind/query.log 

19-Mar-2015 19:09:48.810 queries: client 127.0.0.1#50563 (smart.clouds.cn): query: smart.clouds.cn IN A + (127.0.0.1)

19-Mar-2015 19:11:01.011 queries: client 127.0.0.1#39147 (smart-clouds.cn): query: smart-clouds.cn IN A + (127.0.0.1)

     

6、公網dns伺服器實現

   需要申請公網的域名,並且將伺服器的域名註冊。

 

參考文獻

http://hi.baidu.com/ubuntu2me/blog/item/235b94c9f84ea3107e3e6f06.html

http://www.cnblogs.com/cobbliu/archive/2013/03/19/2970311.html

http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=212998&extra=page%3D1%26filter%3Dtypeid%26typeid%3D331%26digest%3D1%26typeid%3D331%26digest%3D1

http://blog.csdn.net/lujisheng/article/details/4637204