前兩篇文章是從 DNS 使用的角度去理解 DNS 的,但是假如想進(jìn)一步明白 DNS 內(nèi)部運(yùn)作原理镶奉,就有必要理解如何安裝 DNS 服務(wù)器窘行。DNS 服務(wù)器有多種類型,理解類型是安裝 DNS 服務(wù)器的前提纲刀。同時(shí)從使用的角度看,理解 DNS 服務(wù)器類型担平,也能夠更加靈活的使用和理解 DNS 系統(tǒng)示绊。
DNS 服務(wù)器類型
(1)權(quán)威 DNS 服務(wù)器,對(duì)于具備一定規(guī)模的企業(yè)來(lái)說(shuō)暂论,為了方便控制自己域名的解析面褐,會(huì)自己搭建權(quán)威服務(wù)器。通過(guò)權(quán)威服務(wù)器能夠查詢特定 zone 的信息(先不用管什么是 zone)取胎。這種 DNS 服務(wù)器沒(méi)有遞歸和迭代功能展哭,只負(fù)責(zé)響應(yīng)特定域名的解析。權(quán)威 DNS 服務(wù)器返回的結(jié)果永遠(yuǎn)是最新的闻蛀。
(2)Caching DNS Server
在自己電腦配置(比如 /etc/resolv.conf)的本地 DNS 服務(wù)器叫做 Caching DNS Server匪傍。客戶端(實(shí)際上是 system resolver)會(huì)向 Caching DNS 服務(wù)器發(fā)送遞歸域名解析請(qǐng)求觉痛,而 Caching DNS 服務(wù)器會(huì)迭代查詢域名解析結(jié)果役衡。 對(duì)于上網(wǎng)的用戶來(lái)說(shuō),可以使用 ISP 提供的 Caching DNS 服務(wù)器薪棒,也可以使用類似 8.8.8.8 這樣的公共 DNS 服務(wù)器手蝎。
這種類型的 DNS 服務(wù)器一般企業(yè)內(nèi)部會(huì)搭建,一方面是為了安全俐芯,所有的 DNS 查詢經(jīng)過(guò)內(nèi)部的機(jī)器進(jìn)行查詢棵介。另外一方面就是加速查詢結(jié)果。
(3)Forwarding DNS Server
對(duì)于客戶端來(lái)說(shuō)吧史,F(xiàn)orwarding DNS 服務(wù)器和 Caching DNS 服務(wù)器功能上沒(méi)有差別鞍时,但是在機(jī)制上兩者是不一樣的。它不會(huì)進(jìn)行迭代查詢扣蜻,而是將所有的請(qǐng)求轉(zhuǎn)發(fā)給其他的 DNS 服務(wù)器逆巍,然后緩存獲取到的結(jié)果。
安裝 DNS 服務(wù)器
這篇博文使用 bind 這個(gè)軟件來(lái)提供 DNS 服務(wù)器莽使,安裝的環(huán)境是 Ubuntu 14.04.4 LTS锐极。
安裝啟動(dòng)或者調(diào)試 bind :
apt-get install bind9 bind9utils bind9-doc
named-checkconf #檢查配置文件有沒(méi)有錯(cuò)誤
service bind9 restart #重新啟動(dòng) bind,修改配置文件后務(wù)必運(yùn)行
tail -f /var/log/syslog #查看系統(tǒng)文件
相關(guān)的配置文件:
/etc/bind/named.conf #主文件芳肌,下面包含三個(gè)子文件
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
安裝 Caching DNS Server
配置比較簡(jiǎn)單灵再,只要修改 /etc/bind/named.conf.options
文件即可肋层。
options {
directory "/var/cache/bind";
recursion yes;
allow-query { any; };
dnssec-validation auto;
auth-nxdomain no;
listen-on-v6 { any; };
};
重要的參數(shù)就是 recursion,開(kāi)啟就行翎迁,表示允許客戶端進(jìn)行遞歸查詢栋猖。一般非公共的 DNS 只允許內(nèi)部的客戶端進(jìn)行 DNS 查詢,可以給 allow-query 配置一個(gè) acl 汪榔,假如允許所有客戶端查詢蒲拉,配置 為 any 即可。
安裝 Forwarding DNS Server
配置比較簡(jiǎn)單痴腌,只要修改 /etc/bind/named.conf.options
文件即可雌团。
options {
directory "/var/cache/bind";
recursion yes;
allow-query { any; };
forwarders {
8.8.8.8;
};
forward only;
dnssec-validation auto;
auth-nxdomain no;
listen-on-v6 { any; };
};
重要的參數(shù)就兩個(gè),forwarders 配置需要轉(zhuǎn)發(fā)查詢的 DNS 列表士聪,forward 表示轉(zhuǎn)發(fā)請(qǐng)求(即便 recursion 參數(shù)配置為 yes)锦援。
安裝 Authoritative-Only DNS Server
相對(duì)與前兩種類型的 DNS 服務(wù)器來(lái)說(shuō),這種類型的服務(wù)器配置相對(duì)復(fù)雜剥悟,先做以下說(shuō)明:
- 不演示 IP 反解的過(guò)程
- 不做 master/slave 配置
- NS 服務(wù)器名稱是 ns.example.com.灵寺,對(duì)應(yīng)的 IP 地址是 139.129.23.162
(1)在服務(wù)器上修改 /etc/hosts,配置
192.0.2.1 ns.example.com
#必須是外網(wǎng)地址区岗,因?yàn)橥獠康目蛻舳藭?huì)查詢替久,不能給一個(gè)內(nèi)部地址。
(2)修改 /etc/bind/named.conf.options 躏尉,配置
options {
directory "/var/cache/bind";
recursion no;
allow-transfer { none; };
dnssec-validation auto;
auth-nxdomain no;
listen-on-v6 { any; };
};
recursion 配置為 no,因?yàn)闄?quán)威 DNS 服務(wù)器只負(fù)責(zé)它自己的 zone 解析后众,不負(fù)責(zé)遞歸查詢胀糜。假如不是主輔的 DNS 服務(wù)器,allow-transfer 配置為 none蒂誉;
(3)配置 /etc/bind/named.conf.local
zone "example.com" {
type master;
file "/etc/bind/zones/db.example.com";
};
配置的 zone 表示那些域名是這臺(tái) dns 服務(wù)器控制的教藻,具體的信息來(lái)自于 /etc/bind/zones/db.example.com 文件。假如 named.conf.local 文件被破壞了括堤,可以從 named.conf.default-zones 拷貝過(guò)來(lái)。
(4)配置 /etc/bind/zones/db.example.com 文件
這文件先初始化绍移,可以從 /etc/bind/db.local 文件進(jìn)行拷貝。
$TTL 604800
@ IN SOA ns.example.com. admin.example.com. (
5 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
; Name servers
example.com. IN NS ns.example.com.
; A records for name servers
ns IN A 139.129.23.162
; Other A records
@ IN A 139.129.23.162
www IN A 139.129.23.162
(5)測(cè)試 zone 文件是否正確
named-checkzone example.com /etc/bind/zones/db.example.com 蹂窖,假如返回以下內(nèi)容說(shuō)明正確。
zone example.com/IN: loaded serial 5
OK
(7)使用該 DNS
dig -t a @139.129.23.162 www.example.com
也可以在你的域名解析商管理后臺(tái)將 NS 地址修改為 ns.example.com(139.129.23.162 )瞬测。