Linux基礎(chǔ)教程之DNS入門教程
DNS服務(wù)原理詳解
因特網(wǎng)上作為域名和IP地址相互映射的一個分布式數(shù)據(jù)庫,能夠使用戶更方便的訪問互聯(lián)網(wǎng),而不用去記住能夠被機(jī)器直接讀取的IP數(shù)串。通過主機(jī)名,最終得到該主機(jī)名對應(yīng)的IP地址的過程叫做域名解析。
我們在訪問一個網(wǎng)站的時候,只要輸入該網(wǎng)站的網(wǎng)址就會跳轉(zhuǎn)到該網(wǎng)站頁面,而實現(xiàn)這一過程就需要DNS服務(wù)器將域名解析為IP地址,進(jìn)而實現(xiàn)數(shù)據(jù)通信。
DNS:Domain Name Service 域名解析服務(wù)
監(jiān)聽端口:
udp/53,tcp/53
應(yīng)用程序:
BIND:Bekerley Internat Name Domain 國際域名
DNS域名
根域
? ? 一級域名:Top Level Domain: com, edu, mil, gov, net, org, int,arpa
組織域:.com, .org, .net, .mil, .edu, .gov, .info, .cc, .me, .tv
國家域:.cn, .us, .uk, .jp, .tw, .hk, .iq, .ir
反向域:.in-addr.arpa
? ? ????? ? ??最多127 級域名
ICANN(The Internet Corporation for Assigned Names and Numbers)互聯(lián)網(wǎng)名稱與數(shù)字地址分配機(jī)構(gòu),負(fù)責(zé)在全球范圍內(nèi)對互聯(lián)網(wǎng)通用頂級域名(gTLD )以及國家和地區(qū)頂級域名(ccTLD)系統(tǒng)的管理、以及根服務(wù)器系統(tǒng)的管理。
DNS樹狀結(jié)構(gòu)圖
DNS查詢類型:
遞歸查詢
DNS請求被服務(wù)器接受后,如果屬于此服務(wù)器管轄范圍則請求上級服務(wù)器依次傳遞請求,并且依次傳遞結(jié)果給發(fā)出請求的主機(jī)。
迭代查詢
DNS請求被服務(wù)器接受后,如果不是自己管轄范圍,讓客戶端訪問根域服務(wù)器,然后跟域通知客戶端去訪問下級服務(wù)器,直到最后客戶端訪問管轄請求域名的服務(wù)器為止。
名稱服務(wù)器:域內(nèi)負(fù)責(zé)解析本域內(nèi)的名稱的主機(jī)
根服務(wù)器:13組服務(wù)器
解析類型:
正向解析:FQDN(完全域名) –> IP
反向解析:IP –> FQDN(完全域名)
FQDN:(Fully Qualified Domain Name)完全限定域名
注意:正反向解析是兩個不同的名稱空間,是兩棵不同的解析樹,因此,也不是同一個解析庫
DNS服務(wù)器類型:
DNS 服務(wù)器的類型:
主DNS 服務(wù)器
從DNS 服務(wù)器
緩存DNS 服務(wù)器(轉(zhuǎn)發(fā)器)
主DNS 服務(wù)器:管理和維護(hù)所負(fù)責(zé)解析的域內(nèi)解析庫的服務(wù)器;讀寫均可進(jìn)行
從DNS 服務(wù)器:從主服務(wù)器或從服務(wù)器“復(fù)制”(區(qū)域傳輸)解析庫副本;只能進(jìn)行讀操作
序列號:解析庫版本號,主服務(wù)器解析庫變化時,其序列遞增
刷新時間間隔:從服務(wù)器從主服務(wù)器請求同步解析的時間間隔
重試時間間隔:從服務(wù)器請求同步失敗時,再次嘗試時間間隔
過期時長:從服務(wù)器聯(lián)系不到主服務(wù)器時,多久后停止服務(wù)
否定答案的緩存時長
“通知”機(jī)制:主服務(wù)器解析庫發(fā)生變化時,會主動通知從服務(wù)器
區(qū)域傳輸:
完全傳輸:傳送整個解析庫
增量傳輸:傳遞解析庫變化的那部分內(nèi)容
Domain: Fully Qualified Domain Name
正向:FQDN –> IP
反向:IP –> FQDN
負(fù)責(zé)本地域名的正向和反向解析庫
正向區(qū)域
反向區(qū)域
DNS解析:
一次完整的查詢請求經(jīng)過的流程:Client(客戶端) –>hosts文件–>DNS Service Local Cache(自己的本地緩存)–> DNS Server (recursion遞歸) –> Server Cache(緩存) –>iteration(迭代) –>根–>頂級域名DNS–>二級域名DNS…
解析答案:
肯定答案:
否定答案:請求的條目不存在等原因?qū)е聼o法返回結(jié)果
權(quán)威答案:由直接負(fù)責(zé)的DNS服務(wù)器返回的答案
非權(quán)威答案:
例如,DNS客戶機(jī)查詢URL地址www.fastweb.com.cn流程圖
區(qū)域解析庫:
由眾多RR組成:(Resource Record資源記錄)
SOA:Start Of Authority(起始授權(quán)記錄)
一個區(qū)域解析庫有且僅能有一個SOA記錄,必須位于解析庫的第一條記錄
A:internet Address(地址記錄) ??????FQDN –> IP
AAAA: FQDN –> IPv6
PTR: PoinTeR(域名服務(wù)記錄) ???????IP –> FQDN
一個區(qū)域解析庫可以有多個NS記錄
NS: Name Server(專用于標(biāo)明當(dāng)前區(qū)域的DNS服務(wù)器)
CNAME:Canonical Name (別名記錄)
MX: Mail eXchanger(郵件交換器)
優(yōu)先級:0-99,數(shù)字越小優(yōu)先級越高
資源記錄定義的格式:
語法:name ?[TTL] ?IN ??rr_type ?value
注意:
(1) TTL可從全局繼承
(2) @可用于引用當(dāng)前區(qū)域的名字
(3)同一個名字可以通過多條記錄定義多個不同的值;此時DNS 服務(wù)器會以輪詢方式響應(yīng)
(4)同一個值也可能有多個不同的定義名字;通過多個不同的名字指向同一個值進(jìn)行定義;此僅表示通過多個不同的名字可以找到同一個主機(jī)
SOA記錄
name:當(dāng)前區(qū)域的名字,例如“rookie.com.”
value:有多部分組成
? ?(1)當(dāng)前區(qū)域的主DNS服務(wù)器的FQDN,也可以使用當(dāng)前區(qū)域的名字
? ?(2)當(dāng)前區(qū)域管理員的郵箱地址;但地址中不能使用@ 符號,一般用. 替換,例如Linux.rookie.com
? ?(3)主從服務(wù)區(qū)域傳輸相關(guān)定義以及否定的答案的統(tǒng)一的TTL
? ?例如:
rookie.com. ? ? ? ?86400 ? ? ? ?IN ? ? ? ?SOA ? ? ? ? ?rookie.com. ? ? ? ? admin.rookie.com. ???(
2017052201 ???? ?; 序列號serial
2H?????????????????????; 刷新時間refresh
10M ???????????????? ?; 重試時間retry
1W ????????????? ? ? ?; 過期時間expire
1D ????????????????????; 否定答案的TTL值negative answer ttl
)
NS記錄:
name: 當(dāng)前區(qū)域的名字
value: 當(dāng)前區(qū)域的某DNS 服務(wù)器的名字,例如 ns.rookie.com.
注意:一個區(qū)域可以有多個NS 記錄
例如:
rookie.com. ??IN ??NS ??ns1.rookie.com.
rookie.com. ??IN ??NS ??ns2.rookie.com.
注意:
(1)相鄰的兩個資源記錄的name相同時,后續(xù)的可省略
(2)對NS記錄而言,任何一個ns記錄后面的服務(wù)器名字,都應(yīng)該在后續(xù)有一個A記錄
MX記錄:
name:當(dāng)前區(qū)域的名字
value:當(dāng)前區(qū)域的某郵件服務(wù)器(smtp 服務(wù)器)的主機(jī)名
一個區(qū)域內(nèi),MX 記錄可有多個;但每個記錄的value之前應(yīng)該有一個數(shù)字(0-99),表示此服務(wù)器的優(yōu)先級;數(shù)字越小優(yōu)先級越高
例如:
rookie.com. ??IN ??MX ??10(優(yōu)先級) ? mx1.rookie.com.
rookie.com. ??IN ??MX ??20(優(yōu)先級) ? mx2.rookie.com.
注意:
(1)對MX記錄而言,任何一個MX記錄后面的服務(wù)器名字,都應(yīng)該在后續(xù)有一個A記錄
A記錄:
name:某主機(jī)的FQDN ??例如www.rookie.com.
value:主機(jī)名對應(yīng)主機(jī)的IP地址
例如:
www.rookie.com. IN A 1.1.1.1 www.rookie.com. IN A 2.2.2.2 mx1.rookie.com. IN A 3.3.3.3 mx2.rookie.com. IN A 4.4.4.4 $GENERATE 1-254 HOST$ A 1.2.3.$ *.rookie.com. IN A 5.5.5.5 rookie.com. IN A 6.6.6.6
避免用戶寫錯名稱時給錯誤答案,可通過泛域名解析進(jìn)行解析至某特定地址
AAAA記錄:
name: FQDN
value: IPv6
PTR記錄:
name: IP地址,有特定格式,把IP 地址反過來寫,1.2.3.4 ,要寫作4.3.2.1 ;并且要加特定后綴:in-addr.arpa. ,所以完整寫法為:4.3.2.1.in-addr.arpa.
value: FQDN
例如:
4.3.2.1.in-addr.arpa. ?IN ?PTR ?www.rookie.com.
如1.2.3為網(wǎng)絡(luò)地址 ,可簡寫成:
4 ?IN ?PTR ?www.rookie.com.
注意:網(wǎng)絡(luò)地址及后綴可省略;主機(jī)地址依然需要反著寫
CNAME:
name:FQDN格式的別名
value:FQDN格式的正式名字
例如:
web.rookie.com. ? IN ? CNAME ?www.rookie.com.
子域:
子域,是相對父域來說的,指域名中的每一個段。各子域之間用小數(shù)點分隔開。放在域名最后的子域稱為最高級子域,或稱為一級域,在它前面的子域稱為二級域。
子域授權(quán):每個域的名稱服務(wù)器,都是通過其上級名稱服務(wù)器在解析庫進(jìn)行授權(quán)
類似根域授權(quán)tld:
.com. ????IN ??NS ns1.com.
.com. ????IN ??NS ns2.com.
ns1.com. ? IN ??A ? 2.2.2.1
ns2.com. IN ???A ? 2.2.2.2
rookie.com. 在.com 的名稱服務(wù)器上,解析庫中添加資源記錄
rookie.com. ?IN ?NS ?ns1.rookie.com.
rookie.com. ?????IN ?NS ?ns2.rookie.com.
rookie.com. ?????IN ?NS ?ns3.rookie.com.
ns1.rookie.com. ?IN ?A ?3.3.3.1
ns2.rookie.com. ?IN ?A ?3.3.3.2
ns3.rookie.com. ?IN ?A ?3.3.3.3
glue record:粘合記錄,父域授權(quán)子域的記錄
BIND安裝:
DNS協(xié)議—>BIND
程序環(huán)境:
主程序:/usr/sbin/named
Unit File:/usr/lib/systemd/system/named.service
配置文件:/etc/named.conf
區(qū)域解析庫文件:/var/named
關(guān)閉dnssec功能:
vim ?/etc/named.conf
dnssec-enable no;
dnssec-validation no;
解析一個區(qū)域:
定義:/etc/named.rfc1912.conf
zone “iLinux.io” IN {
type master;
file “ZONE_FILE”;
};
例:vim /etc/named.rfc1912.conf
zone “rookie.com” IN {
type master;
file “rookie.com.zone”;
};
定義解析庫文件示例:
$TTL 600 ? ? ?#全局定義 ? ?緩存十分鐘
iLinux.com. ? ? ?IN ? ? ?SOA ? ? iLinux.com. ? ? ?nsadmin.iLinux.com. (
2017052301
1H
5M
1W
6H )
IN ? ? ?NS ? ? ?dns1.iLinux.com.
IN ? ? ?NS ? ? ?dns2.iLinux.com.
dns1.iLinux.com. IN ? ? ?A ? ? ? 172.16.0.67
dns2.iLinux.com. IN ? ? ?A ? ? ? 172.16.0.68
www.iLinux.com.IN ? ? ?A ? ? ? 172.16.0.1
web ? ? ? ?????? ? ?IN ? ? ?CNAME ? www
BIND 的安裝配置:
BIND:Berkeley Internet Name Domain
dns: 協(xié)議
BIND: dns協(xié)議的一種實現(xiàn)
named:bind程序的運行的進(jìn)程名
dns服務(wù)程序包:bind ?unbound
程序名:named ??unbound
程序包:yum list all bind*
bind:提供的dns server程序、以及幾個常用的測試程序
bind-libs:被bind和bind-utils包中的程序共同用到的庫文件
bind-utils:bind客戶端程序集,例如dig, host, nslookup等
bind-chroot:選裝,讓named運行于jail模式下
/var/named/chroot/
?
bind服務(wù)器:
服務(wù)腳本和名稱:/etc/rc.d/init.d/named
/usr/lib/systemd/system/named.service
主配置文件:/etc/named.conf
????????????????? ? ?/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
yum install -y bind后可見
解析庫文件:/var/named/ ZONE_NAME.ZONE
注意:
(1)一臺DNS服務(wù)器可同時為多個區(qū)域提供解析
(2)必須要有根區(qū)域解析庫文件;named.ca
(3)應(yīng)該有兩個區(qū)域解析庫文件(如果包括ipv6的,應(yīng)該更多)實現(xiàn)localhost和127.0.0.1的正反向解析庫
????????正向:named.localhost
反向:named.loopback
rndc: remote name domain controller (遠(yuǎn)程域名控制器)
提供輔助性的管理功能 953/tcp 但默認(rèn)監(jiān)聽于127.0.0.1地址,因此僅允許本地使用
bind程序安裝完成之后,默認(rèn)即可做緩存名稱服務(wù)器使用,如果沒有專門負(fù)責(zé)解析的區(qū)域,直接即可啟動服務(wù)
CentOS 6: ?service ?named ?start
CentOS 7: ?systemctl ?start ?named.service
?
主配置文件格式:
全局配置段:
????????options { … }
日志子系統(tǒng)配置段:
????????logging { … }
區(qū)域定義段:
????????zone “ZONE_NAME” IN { … }
區(qū)域定義:本機(jī)能夠為哪些zone進(jìn)行解析,就要定義哪些zone
注意:
每個配置語句必須以分號結(jié)尾
任何服務(wù)程序如果期望其能夠通過網(wǎng)絡(luò)被其它主機(jī)訪問,至少應(yīng)該監(jiān)聽在一個能與外部主機(jī)通信的IP
緩存名稱服務(wù)器的配置:
監(jiān)聽能與外部主機(jī)通信的地址
listen-on port 53
listen-on port 53 { 172.16.252.245; }
dnssec: 建議關(guān)閉dnssec,設(shè)為no(自己做實驗時建議關(guān)閉)
???????dnssec-enable no
???????dnssec-validation no
???????dnssec-lookaside no
關(guān)閉僅允許本地查詢:
???????//allow-query ?{ localhost; }
檢查配置文件語法錯誤:
named-checkconf ? ? ? ? ? ? ??/etc/named.conf
檢查區(qū)域配置文件錯誤:
????????named-checkzone “rookie.com” /var/named/rookie.com.zone
例:[root@localhost ~]#vim /etc/named.conf
測試命令dig:
dig [-t type] name [@SERVER] [query options]
dig 只用于測試dns 系統(tǒng),不會查詢hosts 文件進(jìn)行解析
查詢選項:
+[no]trace程:跟蹤解析過程 : dig +trace rookie.com
+[no]recurse:進(jìn)行遞歸解析
[root@localhost ~]#dig -t A www.baidu.com @172.16.252.254 +trace
測試反向解析:
dig ?-x ?IP = dig ?-t ?ptr ?reverseip.in-addr.arpa
模擬區(qū)域傳送:
dig ?-t ?axfr ?ZONE_NAME @SERVER
dig ?-t ?axfr ?rookie.com @10.10.10.11
dig ?-t ?axfr ?100.1.10.in-addr.arpa @172.16.1.1
dig ?-t ?NS ?. ?@114.114.114.114
dig ?-t ?NS ?. ?@a.root-servers.net
[root@localhost ~]#dig -t NS baidu.com @172.16.0.1 ; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -t NS baidu.com @172.16.0.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35043 ;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 6 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;baidu.com. IN NS ;; ANSWER SECTION: baidu.com. 54644 IN NS ns7.baidu.com. baidu.com. 54644 IN NS ns3.baidu.com. baidu.com. 54644 IN NS ns4.baidu.com. baidu.com. 54644 IN NS dns.baidu.com. baidu.com. 54644 IN NS ns2.baidu.com. ;; ADDITIONAL SECTION: ns2.baidu.com. 140982 IN A 61.135.165.235 ns4.baidu.com. 140982 IN A 220.181.38.10 dns.baidu.com. 140982 IN A 202.108.22.220 ns3.baidu.com. 140982 IN A 220.181.37.10 ns7.baidu.com. 140982 IN A 119.75.219.82 ;; Query time: 2 msec ;; SERVER: 172.16.0.1#53(172.16.0.1) ;; WHEN: Thu Jun 01 07:22:38 EDT 2017 ;; MSG SIZE rcvd: 208[root@localhost ~]#dig -t NS baidu.com @172.16.0.1 +nocomments ; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -t NS baidu.com @172.16.0.1 +nocomments ;; global options: +cmd ;baidu.com. IN NS baidu.com. 54627 IN NS dns.baidu.com. baidu.com. 54627 IN NS ns3.baidu.com. baidu.com. 54627 IN NS ns2.baidu.com. baidu.com. 54627 IN NS ns4.baidu.com. baidu.com. 54627 IN NS ns7.baidu.com. ns2.baidu.com. 140965 IN A 61.135.165.235 ns4.baidu.com. 140965 IN A 220.181.38.10 dns.baidu.com. 140965 IN A 202.108.22.220 ns3.baidu.com. 140965 IN A 220.181.37.10 ns7.baidu.com. 140965 IN A 119.75.219.82 ;; Query time: 1 msec ;; SERVER: 172.16.0.1#53(172.16.0.1) ;; WHEN: Thu Jun 01 07:22:56 EDT 2017 ;; MSG SIZE rcvd: 208
測試命令host:
host [-t type] name [SERVER]
host ??-t ??NS ??rookie.com 172.16.0.1
host ??-t ??soa ??rookie.com
host ??-t ??mx ??rookie.com
host ??-t ??axfr ??rookie.com
host 1.2.3.4
nslookup命令:nslookup [-option] [name | -] [server]
交互式模式:
nslookup>
server IP:指明使用哪個DNS server進(jìn)行查詢
set q=RR_TYPE:指明查詢的資源記錄類型
name:要查詢的名稱
[root@localhost ~]#nslookup > server 172.16.0.1 Default server: 172.16.0.1 Address: 172.16.0.1#53 > set q=a > www.tencent.com Server: 172.16.0.1 Address: 172.16.0.1#53 Non-authoritative answer: www.tencent.com canonical name = upfile.wj.qq.com.cloud.tc.qq.com. upfile.wj.qq.com.cloud.tc.qq.com canonical name = ssd.tcdn.qq.com. Name: ssd.tcdn.qq.com Address: 111.202.99.24 Name: ssd.tcdn.qq.com Address: 111.202.99.25 Name: ssd.tcdn.qq.com Address: 111.202.99.23 Name: ssd.tcdn.qq.com Address: 123.125.110.21 Name: ssd.tcdn.qq.com Address: 123.125.110.12 Name: ssd.tcdn.qq.com Address: 123.125.110.11 Name: ssd.tcdn.qq.com Address: 123.125.110.22
命令rndc:
rndc:remote name domain contoller(遠(yuǎn)程域名控制器)
953/tcp,但默認(rèn)監(jiān)聽于127.0.0.1地址,因此僅允許本地使用
????????rndc –> rndc (953/tcp)
rndc COMMAND
命令:
reload:重載主配置文件和區(qū)域解析庫文件
reload zonename:重載區(qū)域解析庫文件
retransfer zonename:手動啟動區(qū)域傳送,而不管序列號是否增加
notify zonename:重新對區(qū)域傳送發(fā)通知
reconfig:重載主配置文件
querylog:開啟或關(guān)閉查詢?nèi)罩疚募?var/log/message
trace:遞增debug 一個級別
trace LEVEL:指定使用的級別
notrace:為將調(diào)試級別設(shè)置為 0
flush:清空DNS
[root@localhost ~]#rndc status version: 9.9.4-RedHat-9.9.4-37.el7 <id:8f9657aa> 版本 CPUs found: 4 CPU worker threads: 4 線程 UDP listeners per interface: 4 接口 number of zones: 101 區(qū)域數(shù) debug level: 0 調(diào)試級別 xfers running: 0 運行 xfers deferred: 0 延遲 soa queries in progress: 0 正在進(jìn)行的SOA查詢 query logging is OFF 查詢記錄 recursive clients: 0/0/1000 遞歸客戶端 tcp clients: 0/100 TCP客戶端 server is up and running 服務(wù)器啟動并運行
配置主DNS 服務(wù)器:
(1)在主配置文件中定義區(qū)域
zone "ZONE_NAME" IN { type {master|slave|hint|forward}; file "ZONE_NAME.zone"; };
(2)定義區(qū)域解析庫文件
出現(xiàn)的內(nèi)容
宏定義
資源記錄
主配置文件語法檢查:
named-checkconf
解析庫文件語法檢查:
named-checkzone "rookie.com" /var/named/rookie.com.zone rndc status|reload ;service named reload
注意:實驗配置前需要特別注意三點
關(guān)閉防火墻
關(guān)閉SELinux
時間必須同步
?
配置解析一個正向區(qū)域:
以rookie.com域為例: (1)定義區(qū)域 在主配置文件中(/etc/named.conf)或主配置文件輔助配置文件(/etc/named.rfc1912.conf)中實現(xiàn) [root@localhost ~]#vim /etc/named.rfc1912.zones zone "rookie.com" IN { type master; file "rookie.com.zone"; }; 注意:區(qū)域名字即為域名(2)建立區(qū)域數(shù)據(jù)文件(主要記錄為A或AAAA記錄) 在/var/named目錄下建立區(qū)域數(shù)據(jù)文件; 文件為:/var/named/rookie.com.zone [root@localhost /var/named]#vim rookie.com.zone $TTL 600(全局變量 緩存600秒) rookie.com.(域名) IN SOA rookie.com. admin.rookie.com.管理員郵箱 ( 2017060101 序列號 1H 刷新時間間隔一小時 5M 重試時間間隔五分鐘 1W 過期時間一周 6H ) 否定答案的TTL值六小時 IN NS dns1.rookie.com. IN NS dns2.rookie.com. dns1.rookie.com. IN A 172.16.250.149 dns2.rookie.com. IN A 172.16.252.245 www.rookie.com. IN A 172.16.0.1 web IN CNAME www 權(quán)限及屬組修改: [root@localhost /var/named]#chgrp named /var/named/rookie.com.zone [root@localhost /var/named]#chmod o= /var/named/rookie.com.zone [root@localhost /var/named]#ll 總用量 20 drwxrwx--- 2 named named 6 11月 12 2016 data drwxrwx--- 2 named named 6 11月 12 2016 dynamic -rw-r----- 1 root named 2076 1月 28 2013 named.ca -rw-r----- 1 root named 152 12月 15 2009 named.empty -rw-r----- 1 root named 152 6月 21 2007 named.localhost -rw-r----- 1 root named 168 12月 15 2009 named.loopback -rw-r----- 1 root named 301 6月 1 00:22 rookie.com.zone 檢查語法錯誤: [root@localhost /var/named]#named-checkconf [root@localhost /var/named]#named-checkzone "rookie.com" /var/named/rookie.com.zone zone rookie.com/IN: loaded serial 2017060101 OK(3)讓服務(wù)器重載配置文件和區(qū)域數(shù)據(jù)文件 [root@localhost /var/named]#rndc reload [root@localhost ~]#systemctl restart named.service(4)驗證 [root@localhost /var/named]#dig -t A www.rookie.com @172.16.250.149 ; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -t A www.rookie.com @172.16.250.149 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38718 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.rookie.com. IN A ;; ANSWER SECTION: www.rookie.com. 600 IN A 172.16.252.125 ;; AUTHORITY SECTION: rookie.com. 600 IN NS dns1.rookie.com. rookie.com. 600 IN NS dns2.rookie.com. ;; ADDITIONAL SECTION: dns1.rookie.com. 600 IN A 172.16.250.149 dns2.rookie.com. 600 IN A 172.16.252.245 ;; Query time: 0 msec ;; SERVER: 172.16.250.149#53(172.16.250.149) ;; WHEN: 四 6月 01 01:02:13 CST 2017 ;; MSG SIZE rcvd: 129也可以通過修改/etc/hosts省略IP [root@localhost /var/named]#vim /etc/resolv.conf ; generated by /usr/sbin/dhclient-script search magedu.com #nameserver 172.16.0.1 [root@localhost /var/named]#dig -t A www.rookie.com ; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -t A www.rookie.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39628 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.rookie.com. IN A ;; ANSWER SECTION: www.rookie.com. 600 IN A 172.16.252.125 ;; AUTHORITY SECTION: rookie.com. 600 IN NS dns2.rookie.com. rookie.com. 600 IN NS dns1.rookie.com. ;; ADDITIONAL SECTION: dns1.rookie.com. 600 IN A 172.16.250.149 dns2.rookie.com. 600 IN A 172.16.252.245 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: 四 6月 01 01:08:08 CST 2017 ;; MSG SIZE rcvd: 129
配置解析一個反向區(qū)域
(1)定義區(qū)域 在主配置文件中或主配置文件輔助配置文件中實現(xiàn); [root@localhost ~]#vim /etc/named.rfc1912.zones zone "16.172.in-addr.arpa" IN { type master; file "172.16.zone"; }; 注意:反向區(qū)域的名字 反寫的網(wǎng)段地址.in-addr.arpa 16.172.in-addr.arpa(2)定義區(qū)域解析庫文件(主要記錄為PTR) [root@localhost ~]#vim /var/named/172.16.zone $TTL 600 @ IN SOA rookie.com. admin.rookie.com. ( 2017060101 1H 5M 2W 1D ) @ IN NS dns1.rookie.com. @ IN NS dns2.rookie.com. 149.250 IN PTR dns1.rookie.com. 245.252 IN PTR dns2.rookie.com. 125.252 IN PTR www.rookie.com. 權(quán)限及屬組修改: [root@localhost /var/named]#chgrp named /var/named/rookie.com.zone [root@localhost /var/named]#chmod o= /var/named/rookie.com.zone 檢查語法錯誤: [root@localhost ~]#named-checkconf [root@localhost ~]#named-checkzone "172.16" /var/named/172.16.zone zone 172.16/IN: loaded serial 2017060101 OK(3)讓服務(wù)器重載配置文件和區(qū)域數(shù)據(jù)文件 [root@localhost ~]#rndc reload [root@localhost ~]#systemctl restart named.service(4)驗證 [root@localhost /var/named]#dig -x 172.16.250.149 ; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -x 172.16.259.149 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8132 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;149.259.16.172.in-addr.arpa. IN PTR ;; ANSWER SECTION: 149.259.16.172.in-addr.arpa. 600 IN PTR dns1.rookie.com. ;; AUTHORITY SECTION: 16.172.in-addr.arpa. 600 IN NS dns1.rookie.com. 16.172.in-addr.arpa. 600 IN NS dns2.rookie.com. ;; ADDITIONAL SECTION: dns1.rookie.com. 600 IN A 172.16.250.149 dns2.rookie.com. 600 IN A 172.16.252.245 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: 四 6月 01 01:44:45 CST 2017 ;; MSG SIZE rcvd: 150
主從服務(wù)器:
注意:從服務(wù)器是區(qū)域級別的概念;
主區(qū)域配置:可以參照上面的正向區(qū)域配置和反向區(qū)域配置
從區(qū)域配置:
On Slave
(1)定義從區(qū)域 (以另一虛擬機(jī)為例) [root@localhost ~]#vim /etc/named.rfc1912.zones zone "rookie.com." IN { type slave; file "slaves/rookie.com.zone"; masters { 172.16.250.149; };????????????#指明主節(jié)點 };[root@localhost ~]#vim /etc/named.conf options { //listen-on port 53 { 127.0.0.1; }; 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; }; /* - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. - If you are building a RECURSIVE (caching) DNS server, you need to enable recursion. - If your recursive DNS server has a public IP address, you MUST enable access control to limit queries to your legitimate users. Failing to do so will cause your server to become part of large scale DNS amplification attacks. Implementing BCP38 within your network would greatly reduce such attack surface */ recursion yes; dnssec-enable no; dnssec-validation no; 配置文件語法檢查: [root@localhost ~]#named-checkconf(2)主/從都要重載配置 [root@localhost ~]#rndc reload [root@localhost ~]#systemctl restart named.service [root@localhost ~]#ll /var/named/slaves/ (文件已經(jīng)同步) total 4 -rw-r--r-- 1 named named 414 Jun 1 03:01 rookie.com.zone(3)驗證 從 [root@localhost ~]#dig -t A www.rookie.com @172.16.250.149 ; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -t A www.rookie.com @172.16.250.149 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5639 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.rookie.com. IN A ;; ANSWER SECTION: www.rookie.com. 600 IN A 172.16.252.125 ;; AUTHORITY SECTION: rookie.com. 600 IN NS dns1.rookie.com. rookie.com. 600 IN NS dns2.rookie.com. ;; ADDITIONAL SECTION: dns1.rookie.com. 600 IN A 172.16.250.149 dns2.rookie.com. 600 IN A 172.16.252.245 ;; Query time: 0 msec ;; SERVER: 172.16.250.149#53(172.16.250.149) ;; WHEN: Thu Jun 01 03:41:02 EDT 2017 ;; MSG SIZE rcvd: 129 (4)修改主配置文件,并重新測試 [root@localhost /var/named]#vim rookie.com.zone $TTL 600 rookie.com. IN SOA rookie.com. admin.rookie.com. ( 2017060102 1H 5M 1W 6D ) IN NS dns1.rookie.com. IN NS dns2.rookie.com. dns1.rookie.com. IN A 172.16.250.149 dns2.rookie.com. IN A 172.16.252.245 www.rookie.com. IN A 172.16.252.125 web IN CNAME www ftp IN CNAME www [root@localhost ~]#dig -t A ftp.rookie.com @172.16.250.149 ; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -t A ftp.rookie.com @172.16.250.149 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30068 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;ftp.rookie.com. IN A ;; ANSWER SECTION: ftp.rookie.com. 600 IN CNAME WWW.rookie.com. WWW.rookie.com. 600 IN A 172.16.252.125 ;; AUTHORITY SECTION: rookie.com. 600 IN NS dns1.rookie.com. rookie.com. 600 IN NS dns2.rookie.com. ;; ADDITIONAL SECTION: dns1.rookie.com. 600 IN A 172.16.250.149 dns2.rookie.com. 600 IN A 172.16.252.245 ;; Query time: 0 msec ;; SERVER: 172.16.250.149#53(172.16.250.149) ;; WHEN: Thu Jun 01 03:46:11 EDT 2017 ;; MSG SIZE rcvd: 147
On Master
(1) 確保區(qū)域數(shù)據(jù)文件中為每個從服務(wù)配置NS記錄,并且在正向區(qū)域文件需要每個從服務(wù)器的NS記錄的主機(jī)名配置一個A記錄,且此A后面的地址為真正的從服務(wù)器的IP地
注意:時間要同步
ntpdate命令
子域授權(quán):
正向解析區(qū)域授權(quán)子域的方法:
ops.rookie.com. IN NS ns1.ops.rookie.com. ops.rookie.com. IN NS ns2.ops.rookie.com. ns1.ops.rookie.com. IN A IP.AD.DR.ESS ns2.ops.rookie.com. IN A IP.AD.DR.ESS
定義轉(zhuǎn)發(fā):
注意:被轉(zhuǎn)發(fā)的服務(wù)器必須允許為當(dāng)前服務(wù)做遞歸;
(1) 區(qū)域轉(zhuǎn)發(fā):僅轉(zhuǎn)發(fā)對某特定區(qū)域的解析請求;
zone "ZONE_NAME" IN { type forward; forward {first|only}; forwarders { SERVER_IP; }; };
first:首先轉(zhuǎn)發(fā);轉(zhuǎn)發(fā)器不響應(yīng)時,自行去迭代查詢;
only:只轉(zhuǎn)發(fā)
(2) 全局轉(zhuǎn)發(fā):針對凡本地沒有通過zone定義的區(qū)域查詢請求,通通轉(zhuǎn)給某轉(zhuǎn)發(fā)器;
options { ... ... forward {only|first}; forwarders { SERVER_IP; }; .. ... };
轉(zhuǎn)發(fā)服務(wù)器
注意:被轉(zhuǎn)發(fā)的服務(wù)器需要能夠為請求者做遞歸,否則轉(zhuǎn)發(fā)請求不予進(jìn)行
first:首先轉(zhuǎn)發(fā);轉(zhuǎn)發(fā)器不響應(yīng)時,自行去迭代查詢
only:只轉(zhuǎn)發(fā)
(1)全局轉(zhuǎn)發(fā): 對非本機(jī)所負(fù)責(zé)解析區(qū)域的請求, 全 轉(zhuǎn)發(fā)給指定的服務(wù)器 Options { fforward {only|first}; forwarders { SERVER_IP; }; };(2)特定區(qū)域轉(zhuǎn)發(fā):僅轉(zhuǎn)發(fā)對特定的區(qū)域的請求,比全局轉(zhuǎn)發(fā)優(yōu)先級高 zone "ZONE_NAME" IN { type forward; forward {first|only}; forwarders { SERVER_IP; }; }; 注意:關(guān)閉dnssec 功能: dnssec-enable no; dnssec-validation no;
bind中的安全相關(guān)的配置:
acl:訪問控制列表;把一個或多個地址歸并一個命名的集合,隨后通過此名稱即可對此集合內(nèi)的所有主機(jī)實現(xiàn)統(tǒng)一調(diào)用
格式:
acl acl_name { ip; net/prelen; …… };示例: acl mynet { 172.16.0.0/16; 10.10.10.10; };
bind有四個內(nèi)置的acl:
none:沒有一個主機(jī)
any:任意主機(jī)
localhost:本機(jī)
localnet:本機(jī)的IP同掩碼運算后得到的網(wǎng)絡(luò)地址
注意:只能先定義,后使用,因此一般定在配置文件中,處于options
訪問控制的指令:
allow-query ?{};允許查詢的主機(jī);白名單
allow-transfer {};允許向哪些主機(jī)做區(qū)域傳送;默認(rèn)為向所有主機(jī);應(yīng)該配置僅允許從服務(wù)器
allow-recursion {}; 允許哪此主機(jī)向當(dāng)前DNS服務(wù)器發(fā)起遞歸查詢請求
allow-update {}; DDNS,允許動態(tài)更新區(qū)域數(shù)據(jù)庫文件中內(nèi)容
bind view:
view:視圖,一個bind 服務(wù)器可定義多個view ,每個view中可定義一個或多個zone
每個view 用來匹配一組客戶端
多個view 內(nèi)可能需要對同一個區(qū)域進(jìn)行解析,但使用不同的區(qū)域解析庫文件
view VIEW_NAME { zone zone zone } view internal { match-clients { 172.16.0.0/8; }; zone "rookie.com" IN { type master; file "rookie.com/internal"; }; }; view external { match-clients { any; }; zone "rookie.com" IN { type master; file rookie.com/external"; }; };