ubuntu搭建dns服務器

ubuntu搭建DNS

1、bind簡介:

BINDDomain Name System (DNS) 協議的一個實現,提供了DNS主要功能的開放實現,主要包括如下三種:html

*域名服務器數據庫

*DNS解析庫函數ubuntu

*DNS服務器運行調試所用的工具vim

它是一款開放源碼的DNS服務器軟件,由美國加州大學Berkeley分校開發和維護的緩存


DNS_server主要有如下三種應用模式:安全

*主域名服務器服務器

*輔助域名服務器app

*緩存域名服務器dom

Bind使用TCPUDP端口53ide

2、DNS-bind軟件的相關資源:

官方網站:http://www.bind.com/

幫助文檔:http://www.isc.org/sw/bind/

配置文件樣例:http://www.bind.com/bind.html

3、DNS搭建建立環境:

系統環境:Linux_Ubuntu12.04_X64

軟件版本:BIND9


搭建測試主機:

*192.168.5.101緩存域名服務器、主域名服務器

*192.168.5.102緩存域名服務器、輔助/從域名服務器

*192.168.5.103 測試客戶機

4、軟件安裝和主要配置文件解析:

sudoapt-getinstallbind9bind9utils-y

dns@dns2:/etc/bind$ ll

total 60

drwxr-sr-x2 root bind 4096 Sep 10 16:49 ./

drwxr-xr-x 91 root root 4096 Sep 1014:06 ../

-rw-r--r--1 root root 2389 Jul 27 11:17 bind.keys

-rw-r--r--1 root root237 Jul 27 11:17 db.0

-rw-r--r--1 root root271 Jul 27 11:17 db.127

-rw-r--r--1 root root237 Jul 27 11:17 db.255

-rw-r--r--1 root root353 Jul 27 11:17 db.empty

-rw-r--r-- 1 root root270 Jul 27 11:17 db.local

-rw-r--r--1 root root 2994 Jul 27 11:17 db.root

-rw-r--r--1 root bind463 Jul 27 11:17 named.conf

-rw-r--r--1 root bind490 Jul 27 11:17 named.conf.default-zones

-rw-r--r--1 root bind301 Sep 10 16:43 named.conf.local

-rw-r--r--1 root bind890 Sep 10 14:06 named.conf.options

-rw-r-----1 bind bind77 Sep 10 14:06 rndc.key

-rw-r--r--1 root root 1317 Jul 27 11:17 zones.rfc1918


named.conf

主配置文件,設置通常的named參數,指向該服務器使用的域數據庫的信息源,注意裏面的include語句

named.conf.options

全局配置文件,全局選項配置

db.root

根服務器指向文件,由Internet NIC建立和維護,無需修改,可是須要按期更新

db.local

正向區域數據庫,用於將域名解析爲對應的IP地址

db.127

反向區域數據庫,用於將ip解析爲對應的域名

named.conf.local

用於定義解析域,通常是在named.conf裏的include語句中囊括,單獨在該文件中劃定解析域,也能夠直接在named.conf中直接劃定解析域


其中:主配置文件/etc/bind/named.conf的配置語句:

命令用法

acl定義ip地址的訪問控制清單

#control 定義ndc使用的控制通道

include把其餘文件包含到主配置文件中

key定義受權的安全密鑰

logging 定義日誌寫什麼,寫到那裏

options 定義全局配置選項和缺省值

#server定義遠程服務器的特徵

.....


5、服務器搭建:

1.緩存域名服務器

cd/var/cache/bind/

sudomkdir data

cd data

sudotouch cache_dump.db

sudotouch named_stats

sudochown -R bind:bind /var/cache/bind/data

sudo vim/etc/bind/named.conf.options

############################################

options {

directory "/var/cache/bind";

dump-file "/var/cache/bind/data/cache_dump.db";

statistics-file "/var/cache/bind/data/named_stats";

query-sourceport 53;

#query-source-v6port 53;

allow-query{ any; };;容許全部機器的DNS查詢

version"dns";

;當別人要探測咱們DNS服務器的版本時,對方獲得的將是dns

forwarders { 202.106.46.151;8.8.8.8; };


#dnssec-validation auto;

auth-nxdomain no;# conform toRFC1035

#listen-on-v6 { any; };

; 若是DNS服務運行在有多個網卡的服務器上,那麼默認的它會在全部網卡接口上監聽服務,這個選項告訴它只在指定的藉口上進行服務監聽

};

###########################################

#max-cache-ttlmax-retry-time 目前測試:DNS緩存時間由db文件中的TTL 參數決定


DNS解析模式

DNS解析的域名本機中沒有的時候,就會發起遞歸(recursion)或者轉發(forward)到遠程DNS去查詢。
遞歸:本機直接從根服務器上尋找對應域名的NS記錄,再由本機到NS指向的服務器中查詢記錄
轉發:本機將解析請求轉發到指定的服務器去解析,將轉發服務器的響應結果直接反饋給查詢者
BIND9默認打開遞歸查詢和關閉轉發功能

2.主域名服務器

先按照緩存服務器的搭建方法配置此服務器

a)定義解析域

sudo vim named.conf.local

############################################

zone "example.com" IN {
type master;
file "db.example.com";
allow-transfer { 192.168.5.102; };

notify yes;

also-notify { 192.168.5.102;};
};


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

type master;

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

notify yes;

also-notify { 192.168.5.102; };


allow-transfer { 192.168.5.102; };

};


############################################

master表示定義的是主域名服務器

file 指定區域數據庫文件位置

notifyalso-notifyallow-transfer等都是爲設置輔助域名服務器而配置的

b)建立域數據庫文件

sudo vimdb.example.com

############################################

$TTL7D

@INSOAexample.com. root.example.com. (

2013091001; Serial

7D; Refresh

1D; Retry

28D; Expire

7D ); Negative Cache TTL

;

@INNSexample.com.#在其後有一個附加的 "."

@INA192.168.5.71

wwwINA192.168.5.71

############################################

@表明example.com.

若是不用@,這裏的www得寫成www.example.com.

第一行是TTL設定,生存時間記錄字段。它以秒爲單位定義該資源記錄中的信息存放在高

速緩存中的時間長度。這裏定義爲604800秒,也就是1

第二行的SOA記錄,指定受權主機和管理員信箱

包含幾個子參數,用於和輔助域名服務器同步的:

serial-->至關於一個id號,很重要,只有比輔助服務器的值大,纔會更新,通常用當前日期並加上兩位序號來表示

refresh-->這裏是要告訴從服務器多久進行資料同步

retry-->若是從在更新時失敗,要隔多久有進行重試

expire-->這裏是記錄逾期時間,當從服務器一直都未能成功與主取得聯繫,到這個時間後就放棄了

Minimum--> 默認 TTL 值,若是您在前面沒有用「$TTL」來定義,就會以此值爲準

第三行的NS記錄,代表負責example.com這個域的Name server

第四行的A記錄,就是域名和ip的映射記錄


sudo vim db.192.168.5

$TTL7D

@INSOAexample.com. root.example.com. (

2013091004; Serial

7D; Refresh

1D; Retry

28D; Expire

7D ); Negative Cache TTL

;

@INNSexample.com.

@INPTRexample.com.

71INPTRwww.example.com.

3.輔助域名服務器搭建

先按照緩存服務器的搭建方法配置此服務器

a)定義解析域

和主域名服務器有幾點不一樣的地方:

編輯/etc/bind/named.conf.local文件

輔助服務器不須要建立域庫文件,由於是從主服務器上同步過來

sudo vim named.conf.local

############################################

zone "example.com" IN {

type slave;

file "/etc/bind/db.example.com";

masters { 192.168.5.101; };

allow-notify { 192.168.5.101; };

};


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

type slave;

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

masters { 192.168.5.101; };

allow-notify { 192.168.5.101; };

};

############################################

slave是標明該服務器爲輔助域名服務器

file是指定存放域庫文件的位置,我自定義了一個slaves目錄

masters指明主域名服務器地址

b)建立域數據庫文件

輔助服務器不須要建立域庫文件,由於是從主服務器上同步過來

c)配置權限

注意:建立的slaves是在根目錄下面,而根目錄(/etc/bind/)默認是隻讀權限的,因此須要開放權限

可是又不能和平時加權限同樣,如用:chownbind:bind 相似的辦法

只有以下操做就能正確訪問:

sudovim/etc/apparmor.d/usr.sbin.named

############################################

/etc/bind/** r,

改爲

/etc/bind/** rw,

############################################

而後重啓服務生效:

sudo /etc/init.d/apparmor restart

6、重啓服務器

重啓主從服務器上的BIND服務

sudo /etc/init.d/bind9restart


最好進行如下幾步檢查:

sudo netstat -tnlp | grep 53-->檢查開啓端口

sudo tail -f /var/log/syslog-->查看一下啓動日誌


查看從服務器上庫文件

cd /var/cache/bind

ls

從這裏能夠直觀的看見從主複製過來的庫文件,更重要的是看日誌,可以很清楚的看到主和從傳輸的過程



在客戶機上測試,就是本機,修改本機的dns,編輯/etc/resolvcond/resolv.conf.d/tail

nameserver192.168.5.101

須要重啓生效

sudo /etc/init.d/resolveconf restart

7、語法檢測工具,檢測配置是否有語法錯誤:

named-checkconf

檢查named.confinclude裏包含的文件

egnamed-checkconf--help

egnamed-checkconf-tetc/bind/

沒有任何輸出表明語法沒有問題


named-checkzone

檢查zone

egnamed-checkzone-tetc/bind/


8、RNDC管理BIND

Bind 9以後提供新的功能爲」rndc」(remote name daemon control),可視爲Bind舊版ndc的延伸,它可以使系統管理者利用rndc command遠端或本端(localhost)控制管理Bind,並以加密方式來傳送資料,以防止其餘非受權使用者控制Bind


rndcflush清空本地DNS緩存

rndcflushname name刷新指定域名的緩存

rndcreload重載DNS服務器
rndc status 查看目前DNS服務器狀態
rndc stop 中止DNS服務器
rndc restart 從新啓動DNS服務器
rndc stats 生成DNS統計報表到statistics-file
rndc dumpdb將全部緩存輸入文件named_dump.db,以查看DNS緩存,DNS緩存是在內存中的
success:成功查詢的次數
referral:
就是非recursion的查詢次數
nxrrset:
有這個域名,但找不到解析記錄
nxdomain:
就是域名都找不到
recursion:
遞歸查詢 failure:除上面那些以外的查詢失敗響應次數


設置DNS Cache 的時間

bind 9 中,使用 TTL 參數來設置 DNS 默認的緩存時間,但要記住這個是你解析的域名在別人的 DNS 中的緩存時間。


rndc配置

參考:http://dns-learning.twnic.net.tw/bind/security.html#two-one

9、報錯

1.若是用戶bind對於/etc/bind/slaves目錄沒有寫權限,則查看 /var/log/syslog 會出現以下相似錯誤:

tonybox:~# tail/var/log/syslog

Aug 15 15:50:12 ubuntu kernel:[12575.839327] type=1400 audit(1376553012.724:18): apparmor="DENIED"operation="mknod" parent=1 profile="/usr/sbin/named"name="/etc/bind/tmp-MosmnKMJxa" pid=2440 comm="named"requested_mask="c" denied_mask="c" fsuid=107 ouid=107

Aug 15 15:50:12 ubuntunamed[2439]: dumping master file: /etc/bind/tmp-MosmnKMJxa: open: permissiondenied


目前僅做爲公司內部主域名服務器及緩存域名服務器,未涉及到安全,如須要使用請自行查詢:TSIG功能


附件:bind9.6官方手冊-中文版

相關文章
相關標籤/搜索