Linux上DNS实现工具之bind详叙
?一、DNS的描敘及層次結構:
1、DNS:domain name service,即域名服務,是把復雜的IP地址解析成我們易于記憶并理解的域名,以方便在網絡上通信。
2、DNS的層次:DNS呈金字塔狀結構,根域在最頂層,向下依次為一級域、二級域、三級域(或有或無)、主機名。如下所示:
? ? ? ? ? ? ? ? A、根域:. ,以“.”來標識,全世界有13組根域服務器。
? ? ? ? ? ? ? ? B、一級域:(1)組織域:.com,,.org, .mil, .gov, .edu, .net
? ? ? ? ? ? ? ? ? ? ? ? ? ?(2)國家域:.cn,.hk,.tw,.jp,.ir,.iq,.us,.uk
? ? ? ? ? ? ? ? ? ? ? ? ? ?(3)反向域:.in-addr.arpa
? ? ? ? ? ? ? ? C、二級域:需要向一級域申請和注冊二級域名,如:xybbs.com,hello.net.
? ? ? ? ? ? ? ? D、三級域:可有可無,通常用在父子域關系中,如:tech.hello.edu.
? ? ? ? ? ? ? ? E、主機:具體的主機,即FQDN,Full Qualified Domain Name,完全合格的域名,如:www.baidu.com
二、linux上的DNS實現程序工具:
? ?1、實現工具:BIND(Berkeley Internet NameDomain), PowerDNS, dnsmasq。我們以bind為例來介紹DNS的安裝和使用。
? ?2、使用yum安裝bind程序包以及相應的路徑:
? ? ? ?圖1
? ?圖2
三、名稱解釋:
? ? ? ? ? ?1、DNS查詢類型:
? ? ? ? ? ?(1)遞歸查詢:只發出一次請求就得到最終結果。只有客戶端主機才能向DNS服務器遞歸,且DNS服務器必須允許客戶端遞歸,即recursion yes,客戶端才能得到結果。根域是不允許客戶端主機遞歸的。
? ? ? ? ? ?(2)迭代查詢:經過多次查詢才能返回結果。只有DNS服務器才能向其他DNS服務器進行多次迭代查詢。
? ? ? ? ? ?2、名稱解析類型:
? ? ? ? ? ? ?(1)正向解析:通過完全合格的域名來解析IP地址。
? ? ? ? ? ? ?(2)反向解析:通過IP地址來解析完全合格的域名。
? ? ? ? ? ?3、資源記錄的類型:
? ? ? ? ? ? ?(1)SOA:Start OfAuthority,起始授權,上級區域授權某一區域來管理的區域。SOA只能有一個。
? ? ? ? ? ? ?(2)NS:Name Server,域名服務器,標明某一DNS服務器所管理的區域。NS可以有多個,如輔助DNS服務器的NS記錄,子域的NS記錄。
? ? ? ? ? ? ?(3)MX:MaileXchanger,郵件交換器,標明該區域的郵箱服務。
? ? ? ? ? ? ?(4)A:internetaddress,地址記錄,通常是正向解析。
? ? ? ? ? ? ?(5)PTR:PoiTeR,指針記錄,通常用于反向解析。
? ? ? ? ? ? ?(6)AAAA:address,IPV6的正向解析記錄。
? ? ? ? ? ?(7)CNAME: Canonical Name,別名記錄。通常用于A記錄的別名。
? ? ? ? ?4、DNS服務器類型:
? ? ? ? ? ?(1)主DNS服務器:只能有一個。
? ? ? ? ? ?(2)輔助DNS服務器:輔助主DNS服務器工作,在主DNS服務器宕機的時候能頂替上去,輔助DNS要實時從主DNS同步區域名稱和區域數據庫文件。輔助DNS可以有多個。
? ? ? ? ? ?(3)緩存名稱服務器:緩存其它客戶端向DNS服務器遞歸查詢后,DNS服務器迭代查詢所緩存的的DNS記錄。
? ? ? ? ? ?(4)轉發DNS服務器:某一DNS服務器無法查詢的記錄會轉發給其它DNS服務器進行查詢,那么前一個DNS服務器就是一個轉發DNS服務器。
? ? ? ? ?5、區域傳送:輔助DNS服務器從主DNS服務器或其它的輔助DNS服務器請求傳輸數據的過程:
? ? ? ? ? ?(1)完全區域傳送:傳送區域的所有數據,命令為AXFR。
? ? ? ? ? ?(2)增量區域傳送:傳送區域中改變的數據部分,命令為IXFR。
? ? ? ? ?6、子域授權:父域DNS服務器授權子域DNS服務器所管理的區域。所以父域DNS服務器的配置文件中要有:授權的子區域名稱、子區域的名稱服務器、子區域的名稱服務器的IP地址,并且子域要設置好自己的區域數據文件,并把DNS服務器指向父域。如:父域為:yanhai.com.,子域為tech.yanhai.com.。
? ? ? ? ?7、轉發機制:配置好父子域之后,子域會無法解析父域的資源記錄,或子域想解析其它區域的資源記錄,那么就得在子域上做好轉發,并把地址指向想要解析的區域。轉發分2種,區域轉發和全局轉發,如果想解析某一或某些區域,則設置區域轉發,如果想讓本地客戶端解析所有區域,則設置全局轉發。
? ? ? ? ?8、view視圖:通常是讓內外網或不同地區訪問某一網站時,訪問的FQDN都一樣,但解析的IP地址不同。View提高了不同地區訪問網站的速度。
? ? ? ? ?9、rndc: Remote Name Domain Controller,即遠程名稱域控制器,是遠程管理BIND的工具,能夠實現重新載入區域數據文件、重新加載主配置文件等遠程操作。
四、正向解析、反向解析的實現:
1、配置bind的主配置文件/etc/named.conf:
圖片3
圖4
2、從一級域.com那里申請yanhai.com.的二級域名,并在/etc/named.rfc1912.zones中配置yanhai.com的區域:
圖片5
圖6
3、正向區域的區域數據庫文件:
圖7
圖8
說明:
資源記錄的格式:
? ? ? ? ? ? ? ?name ? ?[ttl] ? ?IN ? ? ? RRtype ? ? ? ? ? Value
(1)SOA:只能有一個
? ? name: 區域名稱, 通常可以簡寫為@,例如:yanhai.com.
? ? value: 主DNS服務器的FQDN
? ? 注意:SOA必須是區域數據庫文件第一條記錄
? ? 如:@ ? ?600 ? ? IN ? ? ? ? ?SOA ? ? ? ? ?dns.yanhai.com. ? ? ? admin.yanhai.com.(
? ? serialnumber ;序列號,十進制數字,不能超過10位,通常使用日期,例如2014031301
? ? refreshtime;刷新時間,即每隔多久到主服務器檢查一次
? ? retrytime;重試時間,應該小于refresh time
? ? expiretime;過期時間
? ? negativeanswer ttl;否定答案的ttl
(2) NS:可以有多條
? ?name: 區域名稱,通常可以簡寫為@
? ?value: DNS服務器的FQDN(可以使用相對名稱)
? ?如:@ ? ? ? ? ?600 ? ? ?IN ? ? ?NS ? ? ? ? ? dns
?(3)A:只能定義在正向區域數據庫文件中
? ? ?name: FQDN(可以使用相對名稱)
? ? ?value: IP
? ? ?如:www ? ? ? ? 600 ? ? ? ? ? IN ? ? ? ? A ? ? ? ? 172.16.35.100
? (4) MX: 可以有多個
? ? ? name: 區域名稱,用于標識smtp服務器
? ? ? value: 包含優先級和FQDN
? ? ? 優先級:0-99, 數字越小,級別越高
? ? ? 如:@ ? ? 600 ? ?IN ? ? ? MX ? 10 ? ? ? ?mail
? ? ? ? ? @ ? ? 600 ? ?IN ? ? ? MX ? 20 ? ? ? ?mail2
?(5)CNAME: 別名
? ? ? name: FQDN
? ? ? value: FQDN
? ? ? 如:
? ? ? ? ?ftp ? ? ?IN ? ? ? CNAME ? ? ? ? ?www
? ? ? ? ?pop ? ? ?IN ? ? ? CNAME ? ? ? ? ?mail
?(6)PTR:IP-->FQDN, 只能定義在反向區域數據文件中,反向區域名稱為逆向網絡地址加.in-addr.arpa.后綴組成
? ?name: IP, 逆向的主機地址,例如172.16.35.100的name為100.35,完全格式為。100.35.16.172.in-addr.arpa.
? ?value: FQDN
? 4、反向區域的區域數據庫文件:
? 圖9
?圖10
5、更改主配置文件和區域數據庫文件的屬主為root,屬組為named,權限為640:
圖11
6、重啟bind的named服務:
圖12
7、用dig工具模擬正向解析:
圖13
8、用dig工具模擬反向解析:
圖14
五、主DNS和輔助DNS服務器的實現:
? ? 1、配置輔助DNS服務器的IP為172.16.35.2,并把DNS指向主DNS服務器的地址172.16.35.1:
? ? ? 圖15
2、輔助DNS服務器安裝bind程序。
3、在主DNS服務器上的正向區域數據庫文件中添加輔助DNS服務器的NS記錄及其A記錄:
? ?圖16
4、在輔助DNS服務器上的/etc/named.rfc1912.zones文件中定義區域yanhai.com,區域類型為slave,即輔助DNS服務器,masters中寫上主DNS服務器的IP,并指定輔助DNS服務器的區域數據庫文件在slaves目錄下:
圖17
5、在主DNS服務器上生成遠程DNS控制器的配置文件:
? 圖18
? 圖19
6、把rndc配置文件中后半部分內容復制到/etc/named.conf中去:
? 圖20
7、重啟named服務,并查看rndc運行狀態:
? 圖21
8、重啟輔助DNS服務器后查看其數據庫文件已傳送成功:
圖22
9、在主DNS服務器上添加一條A記錄,并把序列號增加一個數:
? 圖23
10、重啟主DNS服務器和輔助DNS服務器的named服務,然后查看輔助DNS的數據庫文件中已成功傳送到一條A記錄:
? 圖24
11、在輔助DNS服務器上使用host解析2條A記錄:
? 圖25
六、子域授權和轉發機制:
1、在子域tech.yanhai.com中設置子域DNS服務器的IP為172.16.35.3,DNS地址指向父域172.16.35.1(yanhai.com):
? 圖26
2、注釋子域的主配置文件中的某些部分,見圖3。
3、在子域DNS服務器上的/etc/named.rfc1912.zones文件中配置子域信息:
圖27
4、配置子域的區域數據庫文件:
圖28
5、更改子域的區域數據庫文件的權限及屬主、屬組:
圖29
6、在父域yanhai.com的區域數據庫文件中添加子域的NS記錄和子域的A記錄:
圖30
7、分別重啟父域和子域的named服務。
8、在父域上能解析子域的A記錄:
? ? ?圖31
9、在子域上能解析本區域的A記錄:
?圖32
10、在子域上無法解析父域的資源記錄,原因是在子域上沒有配置轉發:
?圖33
11、在子域的區域文件中配置對yanhai.com區域的解析都轉發到yanhai.com區域:
? ? 圖34
12、重啟子域的named服務后,子域能夠解析父域的主機了:
圖35
13、如果想讓子域內客戶端能夠通過北京DNS服務器來上網,可在主配置文件的全局選項中添加轉發地址為北京DNS服務商的地址,或是如果父域和互聯網相通,子域可在主配置文件的全局選項中添加轉發的IP為父域的IP:
? ? ? 圖36
七、view視圖:
? 1、在一臺linux服務器上配置2個IP,一個為內網用戶解析,一個為外網用戶解析:
圖37
2、注釋掉viewDNS服務器的主配置文件的某些部分,如圖3。
3、在/etc/named.rfc1912.zones中定義視圖:
圖38
圖39
4、配置相同區域解析不同IP的區域數據庫文件:
圖40
? ? ? 圖41
5、更改2個區域數據庫文件的權限和屬主屬組:
圖42
6、重啟named服務后在內網和外網各解析www.yanhai.com,解析的IP不同:
圖43
圖44
八、結束語:
至此,bind中基本的解析配置都已完成,DNS中還涉及一些高級的配置,還待我們進一步研究。。。
轉載于:https://blog.51cto.com/yanhai/1376232
總結
以上是生活随笔為你收集整理的Linux上DNS实现工具之bind详叙的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 处理selinux方法
- 下一篇: 64位LINUX下hadoop2.2.0