? DNS查詢。工作流程如下圖
n 客戶端的DNS:8.8.8.8 /etc/hosts 14.215.177.38 www.baidu.com
n 客戶端訪問www.baidu.com 不用向DSN服務器發生查詢,只需要查詢本地的 /etc/hosts 文件即可
n 客戶端訪問www.sina.com.cn 先查詢/etc/hosts 文件,由于此文件沒有相關的記錄,需要向IP地址為:8.8.8.8 這臺主機(取名為DNS)發生查詢請求,DNS沒有 www.sina.com.cn 相關的A記錄,會向root根域發生查詢,而root根域也沒有www.sina.com.cn 相關的A記錄,但是有.cn 域相關的A記錄,會將cn主機的IP 地址返回給DNS,讓它向cn這臺主機發起查詢請求,cn也沒有www.sina.com.cn 相關的記錄,,但有.sina 域的A記錄,返回sina.com.cn主機的IP地址,最后DNS主機將向sina.com.cn主機發送查詢,這臺主機有www.sina.com.cn 相關的A記錄,將IP地址返回DNS主機。DNS主機將此記錄進行緩存一段時間(當緩存過期之前客戶端再次發起對www.sina.com.cn查詢請求,DNS主機直接返回客戶端)并將www.sina.com.cn對應的IP地址返回給客戶端。
使用下面的命令可以驗證上圖
[root@node2 ~]# dig +trace www.sina.com.cn
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> +trace www.sina.com.cn
;; global options: +cmd
. 5 IN NS a.root-servers.net.
. 5 IN NS l.root-servers.net.
. 5 IN NS j.root-servers.net.
. 5 IN NS k.root-servers.net.
. 5 IN NS b.root-servers.net.
. 5 IN NS e.root-servers.net.
. 5 IN NS d.root-servers.net.
. 5 IN NS c.root-servers.net.
. 5 IN NS i.root-servers.net.
. 5 IN NS f.root-servers.net.
. 5 IN NS g.root-servers.net.
. 5 IN NS m.root-servers.net.
. 5 IN NS h.root-servers.net.
';; Received 508 bytes from 192.168.91.2#53(192.168.91.2) in 7148 ms
#查找根服務器從a-m
cn. 172800 IN NS a.dns.cn.
cn. 172800 IN NS b.dns.cn.
cn. 172800 IN NS d.dns.cn.
cn. 172800 IN NS ns.cernet.net.
cn. 172800 IN NS c.dns.cn.
cn. 172800 IN NS e.dns.cn.
#查找cn. 域的服務器,只有6個
;; Received 296 bytes from 192.5.5.241#53(192.5.5.241) in 13400 ms
sina.com.cn. 86400 IN NS ns4.sina.com.cn.
sina.com.cn. 86400 IN NS ns2.sina.com.cn.
sina.com.cn. 86400 IN NS ns3.sina.com.cn.
sina.com.cn. 86400 IN NS ns1.sina.com.cn.
;; Received 169 bytes from 203.119.25.1#53(203.119.25.1) in 13134 ms
www.sina.com.cn. 3600 IN CNAME jupiter.sina.com.cn.
jupiter.sina.com.cn. 60 IN CNAME ara.sina.com.cn.
ara.sina.com.cn. 60 IN A 121.14.1.190
ara.sina.com.cn. 60 IN A 58.63.236.248
ara.sina.com.cn. 60 IN A 121.14.1.189
sina.com.cn. 86400 IN NS ns2.sina.com.cn.
sina.com.cn. 86400 IN NS ns4.sina.com.cn.
sina.com.cn. 86400 IN NS ns1.sina.com.cn.
sina.com.cn. 86400 IN NS ns3.sina.com.cn.
;; Received 257 bytes from 121.14.1.22#53(121.14.1.22) in 6 ms
www.sina.com.cn 最終的結果為121.14.1.22??梢钥吹叫吕擞?個NS
n 驗證了上述描述的過程
? DNS 正解:從主機名到IP地址的解析過程
? DNS 反解:從IP地址到主機名的解析過程
? 無論正解還是反解每個領域的記錄就是一個區域(zone)。有一個正向解析文件和一個反向解析文件
? 正解域名需要符合INTERNIC 已經定義的gTLD以及ccTLD,而且沒有人使用
? 正解文件通常有以下幾種標志
n SOA(Start of Authority)開始驗證
n NS(NameServer) 名稱服務器的縮寫
n A(Address) 就是地址
? 一部簡單的正解DNS服務器,一般最小包含兩個zone,一個是hint(根域),一個是關于自己領域的正解zone。如果有主從還有Master和Slave這兩種數據類型
? 能夠設定反向解析的人一般只有ISP才有權限,除非你已經獲得整個class C 以上等級的IP網段,ISP才能給你IP反解需求,否則需要向你的直屬上層ISP申請
n NS
n SOA
n PRT(PoinTeR)
? 一般情況下只有mail服務器才需要正反解成對需求。很多反解都是ISP實現
? 主從DNS可以起到冗余的作用,由于DNS查詢是隨機的,所以兩部DNS服務器需要完全一樣
? Master DNS,需要管理員手動配置,Slave DNS 可以通過自動同步Master DNS的方式獲得同Master DNS 完全一樣的配置
? 主從同步的方式
n Master主動告知:Master數據庫的內容發生變化后,加大數據庫序號,并重啟DNS服務,那么Master會主動告知slave未更新的數據庫,此時能夠實現數據同步
n 由Slave主動提出同步請求:Slave會定期查看Master的數據庫序列號,如果比自己大就表示數據庫發生了更新,那么Slave就開始更新,如果序號不變,就表示數據庫沒有發生更新,不會更新
? 客戶端設定:
n /etc/hosts:本地host對應IP地址的文件
n /etc/resolv.conf:ISP提供的DNS服務器的IP地址
u nameserver 192.168.91.2 只有在192.168.91.2這部服務器出現問題才會使用下面的備用服務器
u nameserver 8.8.8.8
u 這個文件默認使用DHCP自動獲取DNS服務器的IP地址,如果想手動指定其他的IP地址,需要修改網卡配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0
PEERDNS=no #(新增這一行)
NM_CONTROLLED=no 是否使用NetworkManager服務管理。此服務與橋相沖突,建議關閉。如果不使用NetworkManager服務最好將此服務也停止,并關閉開機自動啟動
然后重啟網絡
n /etc/nsswitch.conf:此文件決定先使用那個文件的設定。即/etc/hosts還是/etc/resolv.conf。
u vim /etc/nsswitch.conf
hosts: files dns 表示先使用file(即/etc/hosts)在使用dns(即/etc/resolv.conf)
n 客戶端相關命令
u host [-a] FQDN [server]
-a:代表列出該主機所有相關的信息,包括IP,TTL及排錯信息,等同于dig命令。有些主機不支持-a操作,例如www.baidu.com就不支持-a
-l:若后面接的那個domain設定允許allow-transfer,則列出該domain所管理的所有主機名對應的數據。一般情況下都是不允許使用此命令的,只有DNS主機管理員可以使用該命令
server:可以省略,當想使用非/etc/resolv.conf 內的DNS主機,來進行DNS解析的時候使用該參數
u nslookup FQDN|IP [server]
set type=any:列出所有的信息(正解方面的配置文件)。有些FQDN 不支持此項
set type=mx:列出與mx相關的信息
后面不跟任何內容,直接進入nslookup查詢畫面
> set type=mx。百度不支持type=any
> exit
u dig [options] FQDN [@server]
server:可以省略,當想使用非/etc/resolv.conf 內的DNS主機,來進行DNS解析的時候使用該參數
options
ü +trace 從. 開始追蹤一直到最終目標
ü -t type:查詢的數據主要有mx,ns,soa等類型
ü -x: 查詢反解信息
[root@node1 ~]# dig www.sina.com.cn
… 省略
jupiter.SINA.COM.CN.
jupiter.SINA.COM.CN. 5 IN CNAME ara.SINA.COM.CN.
ara.SINA.COM.CN. 5 IN A 121.14.1.190
ara.SINA.COM.CN. 5 IN A 58.63.236.248
# [domain] [ttl] IN [資源類型] [資源內容]
ara.SINA.COM.CN. 5 IN A 121.14.1.189
;; Query time: 7 msec
;; SERVER: 192.168.91.2#53(192.168.91.2)
;; WHEN: Wed Aug 3 18:03:30 2016
;; MSG SIZE rcvd: 121
ü domain 盡量使用FQDN。后面有個小數點
ü A IP地址
ü IN 是固定的
ü ttl:time to live 這條記錄緩存多少秒鐘,一般由特定的參數設定,所以正向解析文件中一般不設置
ü RR:resource record 正解文件資源記錄格式
[domain] IN [RR type] [RR data]
RR type:A|AAAA|NS|SOA|MX|CNAME
RR date:IPV4|IPV6|FQDN(DNS服務器主機名或郵件服務器主機名)
u whois [domain]
由于該命令顯示的信息太詳細,為了防止不被黑客所利用,有些信息可能不正確,或者直接拒絕使用該命令查詢相關的域名。百度不支持此命令。新浪支持
[root@node1 ~]# whois sina.com.cn
[Querying whois.cnnic.cn]
[whois.cnnic.cn]
Domain Name: sina.com.cn
ROID: 20021209s10011s00082127-cn
Domain Status: clientDeleteProhibited
Domain Status: serverDeleteProhibited
Domain Status: clientUpdateProhibited
Domain Status: serverUpdateProhibited
Domain Status: clientTransferProhibited
Domain Status: serverTransferProhibited
Registrant ID: sinacomcn2
Registrant: 北京新浪互聯信息服務有限公司
Registrant Contact Email: domainname@staff.sina.com.cn
Sponsoring Registrar: 北京新網數碼信息技術有限公司
Name Server: ns1.sina.com.cn
Name Server: ns2.sina.com.cn
Name Server: ns3.sina.com.cn
Name Server: ns4.sina.com.cn
Registration Time: 1998-11-20 00:00:00
Expiration Time: 2019-12-04 09:32:35 #過期時間
DNSSEC: unsigned
? DNS 軟件:bind rpm –qa | grep bind
n bind-libs ? bind及與之相關的指令所使用的函式庫
n bind ? bind主程序
n bind-utils ? 客戶端搜尋主機名的相關指令
n bind-chroot ? 將bind程序固定在指定的目錄下,不能離開此目錄。當bind的程序有漏洞只對某一個目錄有危害,而無法危害到整個系統。bind-chroot就是起這個作用的。centos 6.x 默認將bind鎖在/var/named/chroot 目錄中
? bind 主配置文件/etc/named.conf:設定主機名、zone file 存放的路徑,權限等
? zone file:正反解配置文件,記錄主機名與IP地址的對應關系等
? centos 6 中默認目錄:
n /etc/named.conf 主配置文件
n /etc/sysconfig/named 程序的配置文件,設置是否啟動chroot及其他額外的參數
u ROOTDIR=/var/named/chroot 安裝好bind-chroot后此配置文件自動配置這樣。此配置文件默認只有這一行生效
u 啟用chroot后bind 相關的數據文件真實的目錄都在/var/named/chroot。在centos 6.x 已經將所需要使用到的目錄,通過mount –bind /var/named /var/named/chroot/var/named 進行目錄綁定。參考/etc/init.d/named 內容。所以無需切換至/var/named/chroot這個目錄,使用正規目錄即可
/var/named/chroot/etc/named.conf
/var/named/chroot/var/named/zone_file*
/var/named/chroot/var/run/named/named.pid
n /var/named 數據庫檔案默認存放的目錄
n /var/run/named named程序運行時對應的PID文件存放的路徑
? DNS 服務器類型
n cache-only DNS
n forwarding DNS
n master/slave
n subdomain
? cache-only 沒有正反解數據庫文件,只有. 這個zone file。沒有公開的緩存DNS服務器,自身沒有主機名和IP地址的對應關系,完全由對外查詢來提供它的數據源。
n 一般情況和forwarding DNS 結合使用。
n 當公司對互聯網進行嚴格的控制,關閉了tcp/udp 53端口,可以在防火墻主機上架設DNS服務,來完成公司上互聯網的需求,這樣主要是為了安全需要
? forwarding 連. zone file 也沒有,只是指定了一個上層的DNS。任何DNS的查詢都交由上層DNS進行相關的解析工作
? forwarding 和 cache-only 結合使用的實例
n vim /etc/named.conf 注意不要動/var/named/chroot目錄下的內容
options {
listen-on port 53 { any; };
#DNS 默認監聽的端口。默認是監聽在localhost上,只有本機才能對#此DNS服務進行查詢。any 表示所有都能對此DNS服務進行查詢
directory "/var/named"; #zone file 存放的目錄
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";
#dump-file statistics-file memstatistics-file 一些named程序
#的統計信息
allow-query { any; };
#設定那些客戶端能夠對此DNS服務器進行查詢請求
recursion yes;#將自己視為客戶端的一種查詢模式
forward only;#即使有.zone file 也不向根發起查詢而是想上層DNS
#服務器發起查詢。cache-only 的常見配置
forwarders { 202.96.134.133; };
#設置上層DNS服務器。注意不要少了分號,花括號前后有空格
};
n bind 程序監聽的端口
[root@node1 ~]# ss -tnlup | grep named
udp UNCONN 0 0 192.168.91.67:53 *:* users:(("named",3006,513))
udp UNCONN 0 0 127.0.0.1:53 *:* users:(("named",3006,512))
udp UNCONN 0 0 ::1:53 :::* users:(("named",3006,514))
tcp LISTEN 0 3 ::1:53 :::* users:(("named",3006,22))
tcp LISTEN 0 3 192.168.91.67:53 *:* users:(("named",3006,21))
tcp LISTEN 0 3 127.0.0.1:53 *:* users:(("named",3006,20))
tcp LISTEN 0 128 ::1:953 :::* users:(("named",3006,24))
tcp LISTEN 0 128 127.0.0.1:953 *:* users:(("named",3006,23))
UDP/TCP 53
127.0.0.1:953:遠程名稱解析服務控制功能(remote name daemon control,rndc) 預設只有本機可以針對rndc來控制
n 日志/var/log/message
[root@node1 ~]# cat /var/log/messages | grep named | grep start
Aug 3 14:39:19 node1 named[2617]: starting BIND 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 -u named -t /var/named/chroot
表示啟用chroot,并指定其目錄
n 測試forwarding DNS
[root@node1 ~]# dig www.baidu.com @127.0.0.1
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> www.baidu.com @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34703
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 445 IN CNAME www.a.shifen.com.
www.a.shifen.com. 445 IN A 14.215.177.37
www.a.shifen.com. 445 IN A 14.215.177.38
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Aug 3 16:39:04 2016
;; MSG SIZE rcvd: 90
n 性能由于forwarding DNS有緩存功能,所以對于下層的DNS服務器查詢是很快的,整體的性能要看上層DNS服務器的性能,如果上層DNS服務器的性能好,帶寬高可以增加整體的性能
? SOA 7個參數的意義按順序
n Master DNS 服務器主機名
n 管理員Email
n 序號:代表數據庫檔案的新舊,序號越大代表越新,slave憑序列號判斷master是否發生了更新。一般使用日期2016080311 表示2016/8/3 第11次更新。此序號不能大于2^32即必須小于4294967296
n 更新頻率(Refresh):定義slave多久向master請求更新一次
n 失敗重新嘗試的時間(Retry):slave聯機master失敗,等多久再此聯機master。
n 失效時間(Expire):slave 在這段時間內無法聯機master,將不再繼續嘗試聯機master,并刪除這份下載的zone file信息
n 緩存時間(Minumum TTL):如果zone file中每筆RR記錄都沒有寫到TTL 緩存時間,那么就以這個SOA的設定值為主、
n Refresh >= Retry*2
Refresh + Retry < Expire
Expire >= Rrtry * 10
Expire >= 7Days
? view 視圖功能,針對不同的客戶端IP地址,取得自己的zone。例如:內/外網都能夠訪問www服務器。內網訪問www服務器解析的地址為內網的地址,外網訪問www服務器的地址解析的是公網的地址
n 內網:192.168.91.0/24
n 外網:10.0.1.0/24 (模擬外網,實際環境中應該是公網IP地址)
n cat /etc/named.conf
options {
listen-on port 53 { any; };
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;
allow-transfer { none; };
/* 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;
};
};
acl intranet { 192.168.91.0/24; };
acl internet { 10.0.1.0/24; };
view "lan" {
match-clients { "intranet"; };
zone "." IN {
type hint;
file "named.ca";
};
zone "centos6.cn" IN {
type master;
file "named.centos.cn";
allow-transfer { 192.168.91.68; };
};
zone "91.168.192.in-addr.arpa" IN {
type master;
file "named.192.168.91";
allow-transfer { 192.168.91.68; };
};
};
view "wlan" {
match-clients { "internet"; };
zone "." IN {
type hint;
file "named.ca";
};
zone "centos6.cn" IN {
type master;
file "named.centos.cn.intel";
};#外網不需要反向解析文件,由ISP提供
};
n cat /var/named/named.centos.cn
$TTL 86400
@ IN SOA master.centos6.cn. test.www.centos6.cn. (
2016080507
3H
15M
1W
1D
)
@ IN NS master.centos6.cn.
@ IN NS slave.centos6.cn.
master.centos6.cn. IN A 192.168.91.67
slave.centos6.cn. IN A 192.168.91.68
@ IN MX 10 mail.centos6.cn.
www.centos6.cn. IN A 192.168.91.67
node1.centos6.cn. IN A 192.168.91.67
node2.centos6.cn. IN A 192.168.91.68
node3.centos6.cn. IN A 192.168.91.69
node4.centos6.cn. IN A 192.168.91.70
n cat /var/named/named.192.168.91
$TTL 86400
@ IN SOA master.centos6.cn. www.centos6.cn. (
2016080504
3H
15M
1W
1D
)
@ IN NS master.centos6.cn.
@ IN NS slave.centos6.cn.
67 IN PTR master.centos6.cn.
68 IN PTR slave.centos6.cn.
67 IN PTR www.centos6.cn.
67 IN PTR node1.centos6.cn.
68 IN PTR node2.centos6.cn.
69 IN PTR node3.centos6.cn.
70 IN PTR node4.centos6.cn.
n cat /var/named/named.centos.cn.intel
$TTL 86400
@ IN SOA master.centos6.cn. test.www.centos6.cn. (
2016080507
3H
15M
1W
1D
)
@ IN NS master.centos6.cn.
master.centos6.cn. IN A 10.0.1.22
@ IN MX 10 mail.centos6.cn.
www.centos6.cn. IN A 10.0.1.22
n 測試
u [root@node1 named]# dig -t A www.centos6.cn @192.168.91.67
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t A www.centos6.cn @192.168.91.67
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31217
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.centos6.cn. IN A
;; ANSWER SECTION:
www.centos6.cn. 86400 IN A 192.168.91.67
;; AUTHORITY SECTION:
centos6.cn. 86400 IN NS master.centos6.cn.
centos6.cn. 86400 IN NS slave.centos6.cn.
;; ADDITIONAL SECTION:
master.centos6.cn. 86400 IN A 192.168.91.67
slave.centos6.cn. 86400 IN A 192.168.91.68
;; Query time: 1 msec
;; SERVER: 192.168.91.67#53(192.168.91.67)
;; WHEN: Wed Aug 10 16:55:41 2016
;; MSG SIZE rcvd: 121
u [root@node1 named]# dig -t A www.centos6.cn @10.0.1.22
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t A www.centos6.cn @10.0.1.22
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15007
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;www.centos6.cn. IN A
;; ANSWER SECTION:
www.centos6.cn. 86400 IN A 10.0.1.22
;; AUTHORITY SECTION:
centos6.cn. 86400 IN NS master.centos6.cn.
;; ADDITIONAL SECTION:
master.centos6.cn. 86400 IN A 10.0.1.22
;; Query time: 0 msec
;; SERVER: 10.0.1.22#53(10.0.1.22)
;; WHEN: Wed Aug 10 16:55:54 2016
;; MSG SIZE rcvd: 85
#達到了預期的效果
原創文章,作者:jslijb,如若轉載,請注明出處:http://www.www58058.com/32758