主dns服務器搭建
在本機上搭建一個管理hngd.com域名的域名服務器
1. 確保安裝好以下bind域名服務器
[root@主人 ~]# rpm -qa |grep ^bind
bind-chroot-9.8.2-0.17.rc1.el6.x86_64
bind-libs-9.8.2-0.17.rc1.el6.x86_64
bind-9.8.2-0.17.rc1.el6.x86_64
bind-utils-9.8.2-0.17.rc1.el6.x86_64
2. 在主配置文件定義hngd.com正向區域和反向區域,定義完成后使用named-checkconf檢查語法是否正確。
[root@主人 ~]# vim /etc/named.conf
options {
listen-on port 53 { 192.168.100.20; }; //監聽ip為192.168.100.20的網卡
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; }; //允許任何地址來訪問
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "hngd.com" IN{ //配置域名hngd.com正向解析
type master;
file "hngd.zones";
allow-update { none; }; //是否允許客戶機對dns配置進行更新,none表示不允許
};
zone "100.168.192.in-addr.arpa" IN{ //配置域名hngd.com的反向解析
type master;
file "192.168.100.zone";
allow-update{ none; };
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
[root@主人 ~]# named-checkconf /etc/named.conf //檢測/etc/named.conf文件有沒有語法錯誤
[root@主人 ~]#
3. 在/var/named目錄下編輯正、反解析數據文件,要注意域名必須以‘.’結尾
[root@主人 ~]# cat /var/named/hngd.zones //hngd.com的正向解析數據文件
$ORIGIN hngd.com. //聲明該文件屬於哪個域名
$TTL 1D
@ IN SOA dns.hngd.com. admin.hngd.com. ( //在‘(’前需要留一個空格
2016032011
1D
1H
1W
3H
)
NS dns.hngd.com. //名字服務器
MX 5 mail.hngd.com. //郵件服務器
dns IN A 192.168.100.20
mail IN A 192.168.100.10
www IN A 192.168.100.11
bbs IN CNAME www
[root@主人 ~]# cat /var/named/192.168.100.zone //反向解析文件
$ORIGIN 100.168.192.in-addr.arpa.
$TTL 1D
@ IN SOA dns.hngd.com. admin.hngd.com. (
2016032011
1D
1H
1W
3H
)
NS dns.hngd.com.
20 IN PTR dns.hngd.com.
10 IN PTR mail.hngd.com.
11 IN PTR www.hngd.com.
4. 用named-checkzone檢測正、反解析數據文件語法的正確性
[root@主人 ~]# named-checkzone hngd.com /var/named/hngd.zones
zone hngd.com/IN: loaded serial 2016032011
OK
[root@主人 ~]# named-checkzone 100.168.192.in-addr.arpa /var/named/192.168.100.zone
zone 100.168.192.in-addr.arpa/IN: loaded serial 2016032011
OK
5.做完上面這些我們還要更改/etc/resolv下面的域名服務器
[root@主人 ~]# cat /etc/resolv.conf
; generated by /sbin/dhclient-script
#nameserver 114.114.114.114
nameserver 192.168.100.20
6. 雖然現在重啟named服務不會報錯,但如果我們去查看/var/log/messages文件會發現權限問題,我們需要將/var/named目錄下所有文件的屬主和屬組改為named,selinux記得也要關閉
#/var/logmessages
Mar 20 14:20:20 主人 named[3186]: none:0: open: /etc/rndc.key: permission denied
Mar 20 14:20:20 主人 named[3186]: couldn't add command channel 127.0.0.1#953: permission denied
[root@主人 ~]# chown named:named /var/named/*
7. 現在因該沒問題了,讓我們來重啟named服務,發現卡在Generating /etc/rndc.key:上很長時間
解決方法:
執行以下命令:rndc-confgen -r /dev/urandom -a
然后再重啟DNS服務:service named start 服務正常啟動
8. 查看53號端口有沒有打開
[root@主人 ~]# lsof -i :53
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
named 3288 named 20u IPv4 17544 0t0 TCP localhost:domain (LISTEN)
named 3288 named 21u IPv4 17546 0t0 TCP 10.0.6.77:domain (LISTEN)
named 3288 named 22u IPv4 17548 0t0 TCP dns.hngd.com:domain (LISTEN)
named 3288 named 23u IPv6 17550 0t0 TCP localhost:domain (LISTEN)
named 3288 named 512u IPv4 17543 0t0 UDP localhost:domain
named 3288 named 513u IPv4 17545 0t0 UDP 10.0.6.77:domain
named 3288 named 514u IPv4 17547 0t0 UDP dns.hngd.com:domain
named 3288 named 515u IPv6 17549 0t0 UDP localhost:domain
[root@主人 ~]# netstat -anptlu |grep named //這個命令也可以獲得同樣的效果
9. 用nslookup來檢測dns
[root@主人 ~]# nslookup
> www.hngd.com
Server: 192.168.100.20
Address: 192.168.100.20#53
Name: www.hngd.com
Address: 192.168.100.11
> 192.168.100.20
Server: 192.168.100.20
Address: 192.168.100.20#53
20.100.168.192.in-addr.arpa name = dns.hngd.com.
> set type=MX
> 192.168.100.10
Server: 192.168.100.20
Address: 192.168.100.20#53
10.100.168.192.in-addr.arpa name = mail.hngd.com.
從DNS域名服務器的搭建
構建輔助域名服務器
輔助域名服務器也可以向客戶機提供域名解析功能,但它與主域名服務器不同的是,它的數據不是直接輸入的,而是從其他服務器(主域名服務器或其他輔助域名服務器)中復制過來的,只是一份副本,所以輔助服務器中的數據無法被修改
在一個區域設置多台輔助域名服務器具有以下優點:
1. 提供容錯功能。當主域名服務器發生故障時,由輔助域名服務器提供服務
2. 分擔主域名服務器的負擔。在DNS客戶端較多的情況下,通過假設輔助域名服務器完成對客戶端的查詢服務,可以有效的減輕主域名服務器的負擔
3. 加快查詢的速度
Slave端的配置
1. 輔助域名服務器的主配置文件的配置
[root@lcl ~]# cat /etc/named.conf
options {
listen-on port 53 { 192.168.100.2; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
recursion yes;
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "hngd.com" IN {
type slave; //聲明從域名服務器
masters { 192.168.100.20; }; //指明主服務器地址
file "slaves/hngd.zones"; //從域名服務器的區域文件存放位置
};
zone "100.168.192.in-addr.arpa" IN {
type slave;
masters { 192.168.100.20; };
file "slaves/192.168.100.zone";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
2. 將/etc/resolv.conf的nameserver指向192.168.100.2
3. 關閉防火牆和selinux
4. 重啟named服務,再查看/var/named/slaves,發現自動生成正、反解析數據文件
[root@lcl ~]# ls /var/named/slaves/
192.168.100.zone hngd.zones
5. 測試是否能進行dns解析
[root@lcl ~]# nslookup www.hngd.com
Server: 192.168.100.2
Address: 192.168.100.2#53
Name: www.hngd.com
Address: 192.168.100.11
6. 現在我再來做個測試,我將主域名服務器的正、反解數據文件進行更新,將序列號加1,並添加slave這個域名,如下所示:
[root@主人 ~]# cat /var/named/hngd.zones
$ORIGIN hngd.com.
$TTL 1D
@ IN SOA dns.hngd.com. admin.hngd.com. (
2016032012
1D
1H
1W
3H
)
NS dns.hngd.com.
NS slave.hngd.com.
MX 5 mail.hngd.com.
slave IN A 192.168.100.2
dns IN A 192.168.100.20
mail IN A 192.168.100.10
www IN A 192.168.100.11
bbs IN CNAME www
[root@主人 ~]# cat /var/named/192.168.100.zone
$ORIGIN 100.168.192.in-addr.arpa.
$TTL 1D
@ IN SOA dns.hngd.com. admin.hngd.com. (
2016032012
1D
1H
1W
3H
)
NS dns.hngd.com.
20 IN PTR dns.hngd.com.
10 IN PTR mail.hngd.com.
11 IN PTR www.hngd.com.
2 IN PTR slave.hngd.com.
7. 由於更新時間太長,所以我直接將從域名服務器下的正、反解析數據文件刪除,再重啟named服務,再查看發現那兩個文件也進行了更新
[root@lcl ~]# cd /var/named/slaves/
[root@lcl slaves]# rm -rf *
[root@lcl slaves]# service named restart
停止 named:. [確定]
啟動 named: [確定]
[root@lcl slaves]# ls
192.168.100.zone hngd.zones
[root@lcl slaves]# cat 192.168.100.zone
$ORIGIN .
$TTL 86400 ; 1 day
100.168.192.in-addr.arpa IN SOA dns.hngd.com. admin.hngd.com. (
2016032012 ; serial
86400 ; refresh (1 day)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10800 ; minimum (3 hours)
)
NS dns.hngd.com.
$ORIGIN 100.168.192.in-addr.arpa.
10 PTR mail.hngd.com.
11 PTR www.hngd.com.
2 PTR slave.hngd.com.
20 PTR dns.hngd.com.
[root@lcl slaves]# cat hngd.zones
$ORIGIN .
$TTL 86400 ; 1 day
hngd.com IN SOA dns.hngd.com. admin.hngd.com. (
2016032012 ; serial
86400 ; refresh (1 day)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10800 ; minimum (3 hours)
)
NS dns.hngd.com.
NS slave.hngd.com.
MX 5 mail.hngd.com.
$ORIGIN hngd.com.
bbs CNAME www
dns A 192.168.100.20
mail A 192.168.100.10
slave A 192.168.100.2
www A 192.168.100.11
cache only DNS服務器
配置緩存Cache-only服務器
Cache-only服務器是很特殊的DNS服務器,它本身並不管理任何區域,但是DNS客戶端仍然可以向它請求查詢。Cache-only服務器類似於代理服務器,它沒有自己的域名數據庫,而是將所有查詢轉發到其他DNS服務器處理。當Cache-only服務器收到查詢結果后,除了返回給客戶機外,還會將結果保存在緩存中。當下一個DNS客戶端再查詢相同的域名數據時,就可以從高速緩存里查出答案,加快DNS客戶端的查詢速度。如果在局域網中建立一台這樣的DNS服務器,就可以提高客戶機DNS的查詢效率並減少內部網絡與外部網絡的流量。
架設Cache-only服務器非常簡單,只需要建立好主配置文件named.conf即可。架設Cache-only服務器的主配置文件/etc/named.conf也需要設置服務器的選項,方法與設置主要名稱服務器的方法相同,這里就不再重復了。下面通過實例來講解各項配置。
案例:將當前ip為192.168.100.254的主機配置為緩存域名服務器
1. 建立named.conf主配置文件
[root@dns ~]# cat /etc/named.conf
options {
listen-on port 53 {192.168.100.254; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
recursion yes; //是否允許遞歸
forward only; //僅轉發;forward first :首先使用轉發,如果 forwarders list 中的DNS主機不應答,該主機將自己去找應答
forwarders { 192.168.100.20; }; //將收到的所有dns請求轉發給192.168.100.20服務器
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
2. 用named-checkconf檢測named.conf的語法
[root@dns ~]# named-checkconf /etc/named.conf
[root@dns ~]#
3. 將/etc/resolv.conf的nameserver指向緩存域名服務器
[root@dns ~]# cat /etc/resolv.conf
nameserver 192.168.100.254
4. 重啟named服務
5. 現在如果檢測,會發現不能進行域名解析,會出現這個問題的原因可能是192.168.100.20域名服務器的防火牆和selinux沒有關閉
6. 解決完以上問題后,我們再來檢測
[root@dns ~]# nslookup
> server 192.168.100.254
Default server: 192.168.100.254
Address: 192.168.100.254#53
> www.hngd.com
Server: 192.168.100.254
Address: 192.168.100.254#53
Non-authoritative answer:
Name: www.hngd.com
Address: 192.168.100.11
>
上面的緩存域名服務器是轉發所有的域名解析請求,當然我們也可以針對一個域名進行轉發,如:
zone IN "qq.com" {
type master;
forwarders{ 192.168.100.20; };
}
我們知道 DNS 會同時啟用 UDP/TCP 的 port 53,而且是針對所有接口,因此上面的數據並沒有什么特異的部分。不過,怎么會有 port 953 且僅針對本機來監聽呢?其實那是 named 的遠程控制功能,稱為遠程名稱解析服務控制功能 (remote name daemon control, rndc)。預設的情況下,僅有本機可以針對 rndc 來控制。我們會在后續的章節再來探討這個 rndc 啦,目前我們只要知道 UDP/TCP port 53 有啟動即可
(5) 測試:如果你的 DNS 伺服器具有連上因特網的功能,那么透過『 dig www.baidu.com @127.0.0.1 』這個基本指令執行看看, 如果有找到 baidu 的 IP ,並且顯示『 SERVER: 127.0.0.1#53(127.0.0.1) 』的字樣, 那就代表應該是成功啦!
問題:
什么時候有架設 cache-only DNS 的需求?
在某些公司行號里頭,為了預防員工利用公司的網絡資源作自己的事情,所以都會針對 Internet 的聯機作比較嚴格的限制。當然啦,連 port 53 這個 DNS 會用到的 port 也可能會被擋在防火牆之外的~這個時候, 你可以在『防火牆的那部機器上面,加裝一個 cache-only 的 DNS 服務!』
這是什么意思呢?很簡單啊!就是你自己利用自己的防火牆主機上的 DNS 服務去幫你的 Client 端解譯 hostname <--> IP 啰!因為防火牆主機可以設定放行自己的 DNS 功能,而 Client 端就設定該防火牆 IP 為 DNS 服務器的 IP 即可!哈哈!這樣就可以取得主機名與 IP 的轉譯啦!所以,通常架設 cache only DNS 服務器大都是為了系統安全啰。
Address: 192.168.100.20#53
10.100.168.192.in-addr.arpa name = mail.hngd.com.