DNS之BIND使用小结(Forward转发)
之前詳細(xì)介紹了DNS及其在linux下的部署過程,今天再說(shuō)下DNS的BIND高級(jí)特性-forwarder轉(zhuǎn)發(fā)功能。比如下面一個(gè)案例:
1)已經(jīng)在測(cè)試環(huán)境下部署了兩臺(tái)內(nèi)網(wǎng)DNS環(huán)境,DNS的zone域名為kevin.cn:http://www.cnblogs.com/kevingrace/p/5570312.html
2)測(cè)試機(jī)器的DNS地址已經(jīng)調(diào)整為這兩臺(tái)DNS地址,所以測(cè)試機(jī)訪問kevin.cn域名是沒有問題的。
由于業(yè)務(wù)需求,需要測(cè)試機(jī)器能訪問grace.cn域名(grace.cn域名是使用別的DNS地址解析的),這就用到了DNS的BIND中的forwarder轉(zhuǎn)發(fā)功能了。
通過BIND的forwarder轉(zhuǎn)發(fā)功能,將測(cè)試機(jī)訪問的非kevin.cn的域名都轉(zhuǎn)向forwarder指定的DNS地址上。
forwarder轉(zhuǎn)發(fā)功能只需要在named.conf中配置即可:
[root@uatdns01 ~]# cat /etc/named/named.conf
options {
listen-on port 53 { any; };
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;
forward first;
forwarders { #即訪問非kevin.cn域名時(shí)將解析轉(zhuǎn)發(fā)到這幾個(gè)DNS地址(分別為阿里的DNS、google的DNS)上進(jìn)行解析。
223.5.5.5; #注意這里轉(zhuǎn)發(fā)的是DNS地址,沒有指定DNS轉(zhuǎn)發(fā)域名。
223.6.6.6;
8.8.8.8;
8.8.4.4;
};
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." {
type hint;
file "named.ca";
};
zone "kevin.cn" {
type master;
file "kevin.cn_zone";
};
zone "51.168.192.in-addr.arpa" {
type master;
file "192.168.51.zone";
};
zone "50.168.192.in-addr.arpa" {
type master;
file "192.168.50.zone";
};
zone "104.168.192.in-addr.arpa" {
type master;
file "192.168.104.zone";
};
zone "grace.cn" { #訪問grace.cn域名時(shí),將解析請(qǐng)求轉(zhuǎn)到192.168.51.39(即grace.cn域名的DNS地址),注意這個(gè)不能寫在上面的forwarder處,否則轉(zhuǎn)發(fā)無(wú)效!
type forward; #注意這里轉(zhuǎn)發(fā)配置中制定了轉(zhuǎn)發(fā)的域名,即forwad轉(zhuǎn)發(fā)區(qū)(forward zone)設(shè)置,這是bind9之后的新特性。
forwarders { 192.168.51.39; };
};
========================================================================
嘗試了下,無(wú)法在一個(gè)named.conf里同時(shí)配置兩個(gè)或多個(gè)域的zone(即正向解析的zone),配置好并重啟named服務(wù)器后,多出的那個(gè)域名解析無(wú)效。
比如內(nèi)網(wǎng)有兩個(gè)域名:kevin.cn和grace.cn,要做這兩個(gè)域名的DNS解析環(huán)境,實(shí)現(xiàn)方案如下:
1)分別針對(duì)kevin.cn和grace.cn部署兩套DNS環(huán)境
2)在其中一個(gè)域名的DNS環(huán)境中使用forwadr轉(zhuǎn)發(fā),比如在kevin.cn域名的named.conf配置中添加:
zone "grace.cn" {
type forward;
forwarders { 192.168.51.39; }; # 該ip為grace.cn域名的DNS服務(wù)器地址
};
3)將客戶機(jī)的DNS(/etc/resolv.conf)配置成kevin.cn域名的DNS地址,這樣該客戶機(jī)對(duì)于kevin.cn和grace.cn域名都可以解析。
===========================BIND之forwarder轉(zhuǎn)發(fā)功能小結(jié)======================
forward first | only;
forward指令用于設(shè)置DNS轉(zhuǎn)發(fā)的工作方式:
1)forward first設(shè)置優(yōu)先使用forwarders DNS服務(wù)器做域名解析,如果查詢不到再使用本地DNS服務(wù)器做域名解析。
2)forward only設(shè)置只使用forwarders DNS服務(wù)器做域名解析,如果查詢不到則返回DNS客戶端查詢失敗。
最新版的BIND提供了很多非常好的DNS新特性,其中一個(gè)就是Forwarder轉(zhuǎn)發(fā)功能:
總所周知,某些網(wǎng)絡(luò)連接是不鼓勵(lì)向本地以外發(fā)送很大的數(shù)據(jù)流量的,因?yàn)榫W(wǎng)絡(luò)連接是按流量計(jì)費(fèi)的,并且網(wǎng)絡(luò)連接本身是帶寬不足。在這樣的情況下,如果想將發(fā)往外部的DNS流量限制到盡可能的小,就需要使用BIND的轉(zhuǎn)發(fā)機(jī)制。或者網(wǎng)絡(luò)中只有一臺(tái)機(jī)器能連接到Internet ,而在這臺(tái)機(jī)器上運(yùn)行了 BIND ,那么可以將這臺(tái)BIND作為內(nèi)部網(wǎng)絡(luò)中的其他BIND的轉(zhuǎn)發(fā)器,使得其他DNS也能查找Internet域名。
BIND的forward轉(zhuǎn)發(fā)機(jī)制的這樣的:
當(dāng)設(shè)置了forwarders轉(zhuǎn)發(fā)器后,所有非本域的和在緩存中無(wú)法找到的域名查詢都將轉(zhuǎn)發(fā)到設(shè)置的DNS轉(zhuǎn)發(fā)器上,由這臺(tái)DNS來(lái)完成解析工作并做緩存,因此這臺(tái)轉(zhuǎn)發(fā)器的緩存中記錄了豐富的域名信息。因而對(duì)非本域的查詢,很可能轉(zhuǎn)發(fā)器就可以在緩存中找到答案,避免了再次向外部發(fā)送查詢,減少了流量。
轉(zhuǎn)發(fā)器的配置格式是:
options {
forwarders { 192.168.10.35; 192.168.10.36; };
};
這里需要注意的是:
轉(zhuǎn)發(fā)器本身不用做任何設(shè)置,而是對(duì)需要轉(zhuǎn)發(fā)器的其他DNS server做以上配置。還有,如果該DNS Server無(wú)法聯(lián)系到轉(zhuǎn)發(fā)器,那么BIND會(huì)自己嘗試解析。
如果要禁止BIND在無(wú)法聯(lián)系到轉(zhuǎn)發(fā)器時(shí)不做任何操作,那么還可以使用forward only命令,這樣BIND只能使用區(qū)的權(quán)威數(shù)據(jù)和緩存來(lái)響應(yīng)查詢了(在連接不到轉(zhuǎn)發(fā)器的情況下)。
options {
forwarders { 192.168.10.35; 192.168.10.36; };
forward only;
};
=======================================================================
在BIND8.2以后引入了一個(gè)新的特性:轉(zhuǎn)發(fā)區(qū)(forward zone),它允許把DNS配置成只有查找特定域名的時(shí)候才使用轉(zhuǎn)發(fā)器。( BIND 9從9.1.0才開始有轉(zhuǎn)發(fā)區(qū)功能 )例如,你可以使你的服務(wù)器將所有對(duì) kevin.cn 結(jié)尾的域名查詢都轉(zhuǎn)發(fā)給 kevin.cn 的兩臺(tái)名字服務(wù)器:
zone "kevin.cn" {
type forward;
forwarders { 110.50.80.208; 110.50.80.209; };
};
這樣的功能有什么用呢?
假設(shè)kevin.cn和你的網(wǎng)絡(luò)有一個(gè)私有的連接,而kevin.cn又沒有連接上Internet ,那么你從Internet 是無(wú)法查到 kevin.cn 后綴的域名的,這時(shí)你就要使用轉(zhuǎn)發(fā)區(qū)的功能了。
還有一種轉(zhuǎn)發(fā)區(qū)設(shè)置和剛才的設(shè)置剛好相反,它允許設(shè)置什么樣的查詢將不被轉(zhuǎn)發(fā),當(dāng)然這只適用于在options語(yǔ)句中指定了轉(zhuǎn)發(fā)器的DNS 。配置如下:
options {
directory "/var/named";
forwarders { 192.168.10.35; 192.168.10.36; };
};
zone "kevin.cn" {
type master;
file "zone.kevin.cn";
forwarders {};
};
這樣寫有人可能會(huì)問為什么要在自己的權(quán)威區(qū)里禁止轉(zhuǎn)發(fā)?難道不是自己回答查詢而不使用轉(zhuǎn)發(fā)器嗎?
這是因?yàn)橛羞@樣一種情況:在 kevin.cn這個(gè)區(qū)中,你授權(quán)了幾個(gè)子域,例如:zx.kevin.cn、lab.kevin.cn 等,那么在kevin.cn的權(quán)威服務(wù)器上設(shè)置轉(zhuǎn)發(fā)后,因?yàn)閷?duì) zx.kevin.cn、lab.kevin.cn 這幾個(gè)子域不是權(quán)威,那么如果有對(duì)www.zx.kevin.cn這樣的子域的域名查詢,服務(wù)器也將轉(zhuǎn)發(fā)。這完全是沒有必要的,因?yàn)榉?wù)器上就有zx.kevin.cn 子域的NS記錄,何須再轉(zhuǎn)發(fā)。
假設(shè)我的DNS服務(wù)器 192.168.1.10,在BIND中有這么一個(gè)配置
forward only;
forwarders {
192.168.1.12;
};
這里的192.168.1.10解析不了的,就會(huì)被轉(zhuǎn)發(fā)到192.168.1.12這就是DNS轉(zhuǎn)發(fā)器。
說(shuō)到這里就不得不說(shuō)下BIND的遞歸功能了。
=====================BIND遞歸查詢功能小結(jié)====================
默認(rèn) Resolver 發(fā)出的是遞歸查詢,而且默認(rèn) BIND name server 也處理所有的遞歸請(qǐng)求。
遞歸查詢的工作方式
遞歸查詢是最常見的查詢方式,域名服務(wù)器將代替提出請(qǐng)求的客戶機(jī)(下級(jí)DNS服務(wù)器)進(jìn)行域名查詢,若域名服務(wù)器不能直接回答,則域名服務(wù)器會(huì)在域各樹中的各分支的上下進(jìn)行遞歸查詢,最終將返回查詢結(jié)果給客戶機(jī),在域名服務(wù)器查詢期間,客戶機(jī)將完全處于等待狀態(tài)。
示例: (紅色為查詢,藍(lán)色為迭代查詢返回的提示信息,棕色為遞歸查詢返回的IP信息)
示例說(shuō)明:
A向B發(fā)送遞歸查詢請(qǐng)求,B向C發(fā)送迭代查詢請(qǐng)求,得到C給出的提示后,B向D發(fā)送迭代查詢請(qǐng)求,得到D給出的提示后,B向E發(fā)出迭代請(qǐng)求,得到E給出的提示后,B向F發(fā)出迭代查詢請(qǐng)求,得到F給出的提示后,B得到了F返回G的IP地址,B向A返回G的IP地址,整個(gè)查詢結(jié)束。
迭代查詢的工作方式
迭代查詢又稱重指引,當(dāng)服務(wù)器使用迭代查詢時(shí)能夠使其他服務(wù)器返回一個(gè)最佳的查詢點(diǎn)提示或主機(jī)地址,若此最佳的查詢點(diǎn)中包含需要查詢的主機(jī)地址,則返回主機(jī)地址信息,若此時(shí)服務(wù)器不能夠直接查詢到主機(jī)地址,則是按照提示的指引依次查詢,直到服務(wù)器給出的提示中包含所需要查詢的主機(jī)地址為止,一般的,每次指引都會(huì)更靠近根服務(wù)器(向上),查尋到根域名服務(wù)器后,則會(huì)再次根據(jù)提示向下查找。從上節(jié)的圖中可以知道,B訪問C、D、E、F、G,都是迭代查詢,首先B訪問C,得到了提示訪問D的提示信息后,開始訪問D,這時(shí)因?yàn)槭堑樵?,D又返回給B提示信息,告訴B應(yīng)該訪問E,依次類推。
說(shuō)明:假設(shè)你要尋找一家你從未去過的公司,你會(huì)有2種解決方案:
1)找一個(gè)人替你問路,那可能是你的助手
2)自己?jiǎn)柭罚孔哌^一個(gè)路口,就問一個(gè)人,這就好比遞歸查詢和迭代查詢,遞歸查詢?cè)谶@里代表你的第1種解決方案,而迭代則是第2種解決方案。
但某些情況下,服務(wù)器應(yīng)該被配置為不接受遞歸請(qǐng)求,例如根域服務(wù)器。根域服務(wù)器不接受遞歸請(qǐng)求的原因 :
1)因?yàn)楦蚍?wù)器太忙了,它們沒有精力來(lái)回答遞歸查詢。
2)接受遞歸請(qǐng)求將會(huì)建立緩存,如此根域服務(wù)器的緩存將會(huì)變得十分巨大
關(guān)于遞歸/非遞歸方面的配置語(yǔ)句有recursion no和 allow-recursion 語(yǔ)句,兩者都只能放在options或者view語(yǔ)句中;
recursion no只對(duì)外部域名有效,如果查詢的是本地zone域名(僅限于該 name server 上所定義的 zone,不包括下級(jí)子域)則可以回答。因?yàn)榻馕鐾獠坑蛎枰樵兺獠?name server ,這才是 recursion no 控制和關(guān)心的部分,如果查詢的是本地 zone 的數(shù)據(jù),當(dāng)然不需要擔(dān)心本地 name server 被誘導(dǎo),可以直接返回答案。
需要注意以下幾點(diǎn);
1)保證該非遞歸服務(wù)器不出現(xiàn)在客戶機(jī)的 /etc/resolv.conf 的
2)證該非遞歸服務(wù)器不被其他 name server 當(dāng)成轉(zhuǎn)發(fā)器 (forwarder)
3)推薦使用 allow-recursion 而不是 recursion
4)該非遞歸服務(wù)器可以出現(xiàn)在 zone data file 的 NS 記錄中。它可以正常的接收其他 name server 發(fā)來(lái)的查詢
5)外部 name server 是通過上級(jí)域的 Referral 消息找到該非遞歸服務(wù)器的
6)外部 name server 在得到上級(jí)域的 Referral 消息后,向該非遞歸服務(wù)器發(fā)送的查詢是 iterative query ,而不是 recusive query ,所以該非遞歸服務(wù)器仍然可以回答那些它所權(quán)威的 zone 的查詢。但不能用于查詢外部域名了。
============================BIND配置語(yǔ)法小結(jié)============================
下面羅列出/etc/named/named.conf 中使用的常用配置語(yǔ)句。named.conf 中使用的常用配置語(yǔ)句:
| acl | 定義訪問控制列表,參考 acl |
| controls | 定義 rndc 命令使用的控制通道,若省略此句,則只允許經(jīng)過 rndc.key 認(rèn)證的 127.0.0.1 的 rndc 控制,參考 rndc |
| include | 將其他文件包含到本配置文件當(dāng)中 |
| key | 定義用于 TSIG 的授權(quán)密鑰 |
| logging | 定義日志的記錄規(guī)范,參考 BIND 9 的高級(jí)配置 的 “BIND 日志部分” |
| lwres | 將 named 同時(shí)配置成一個(gè)輕量級(jí)的解析器 |
| options | 定義全局配置選項(xiàng) |
| trusted-keys | 為服務(wù)器定義 DNSSEC 加密密鑰 |
| server | 設(shè)置每個(gè)服務(wù)器的特有的選項(xiàng) |
| view | 定義域名空間的一個(gè)視圖,參考 BIND 9 的高級(jí)配置 的 “View 語(yǔ)句部分” |
| zone | 定義一個(gè)區(qū)聲明 |
下面對(duì)named.conf中常用的語(yǔ)句作進(jìn)一步的說(shuō)明。
include
include 語(yǔ)句的功能為:將指定的文件引入 named.conf 主配置文件。語(yǔ)法為:
include "path";
建議使用絕對(duì)路徑
若使用相對(duì)路徑,則相對(duì)于 directory 選項(xiàng)指定的目錄
options
options 用于定義全局配置選項(xiàng),語(yǔ)法為:
options {
配置子句;
配置子句;
};
下面列出一些常用的全局配置子句。
| 子句 | 說(shuō)明 |
|---|---|
| directory “path” | 定義服務(wù)器區(qū)數(shù)據(jù)庫(kù)文件的工作目錄,配置文件中所有使用的相對(duì)路徑,指的都是在這里配置的目錄下。Ubuntu 默認(rèn)為 /var/cache/bind |
| notify yes/no | 若 named 是主服務(wù)器,當(dāng)區(qū)數(shù)據(jù)庫(kù)變化時(shí)將自動(dòng)通知相應(yīng)區(qū)的從服務(wù)器,默認(rèn)為 yes |
| recursion yes/no | 是否使用遞歸式DNS服務(wù)器,默認(rèn)為 yes |
| transfer-format one-answer/many-anser | 設(shè)置從主服務(wù)器向從服務(wù)器復(fù)制數(shù)據(jù)的方式,使用在主域名服務(wù)器上,是否允許在一條消息中放入多條應(yīng)答信息,默認(rèn)值為 many-answer |
| forwarders {IPaddrs} | 設(shè)置全局轉(zhuǎn)發(fā)器,列出要用作轉(zhuǎn)發(fā)器的服務(wù)器 IP 地址 |
| forward only/first | 若值為 only,則服務(wù)器緩存數(shù)據(jù)并查詢轉(zhuǎn)發(fā)器,但從不查詢其他的任何服務(wù)器,若轉(zhuǎn)發(fā)器不能響應(yīng)查詢則查詢失?。蝗糁禐?first,則在轉(zhuǎn)發(fā)查詢失敗或沒有查到結(jié)果時(shí),會(huì)在本地發(fā)起正常查詢。默認(rèn)為 first |
zone 區(qū)聲明是配置文件中最重要的部分。Zone 語(yǔ)句的格式為:
zone "zone-name" IN {
type 子句;
file 子句;
其他子句;
};
下面列出一些常用的 zone 配置子句。
| 子句 | 說(shuō)明 |
|---|---|
| type master/slave/hint/forward | 說(shuō)明一個(gè)區(qū)的類型。master:說(shuō)明一個(gè)區(qū)為主域名服務(wù)器;slave說(shuō)明一個(gè)區(qū)為輔助域名服務(wù)器;hint:說(shuō)明一個(gè)區(qū)為根服務(wù)器的線索;forward:說(shuō)明一個(gè)區(qū)為轉(zhuǎn)發(fā)區(qū) |
| file “filename” | 說(shuō)明一個(gè)區(qū)的域信息源數(shù)據(jù)庫(kù)信息文件名 |
DNS 數(shù)據(jù)庫(kù)
一個(gè)域的 DNS 數(shù)據(jù)庫(kù)是由這個(gè)域的主域名服務(wù)器的管理員所維護(hù)的文本文件的集合。這些文件經(jīng)常被稱為區(qū)文件,區(qū)文件定義了一個(gè)區(qū)的域名信息。Ubuntu 默認(rèn)將區(qū)文件存放在 /var/cache/bind 目錄下。
每個(gè)區(qū)文件都是由若干個(gè)資源記錄(RR,resource records)和分析器指令所組成。
資源記錄簡(jiǎn)介
標(biāo)準(zhǔn)資源記錄的基本格式是:
[name] [ttl] [class] type data
各個(gè)字段之間由空格或制表符分隔,字段可以包含如下的特殊字符:
; — 引出注釋
@ — 表示當(dāng)前域
() — 允許數(shù)據(jù)跨行,通常用于 SOA 記錄
* — 僅用于 name 字段的通配符
name 字段
name 字段說(shuō)明資源記錄引用的對(duì)象名,可以是一臺(tái)單獨(dú)的主機(jī)也可以是個(gè)域名。
對(duì)象名可以是相對(duì)域名或全域名,全域名應(yīng)該以“.”結(jié)束
若幾條連續(xù)的 RR 記錄涉及同一個(gè)對(duì)象名,則第一條 RR 記錄后的 RR 記錄可以省略對(duì)象名
若出現(xiàn)字段名字段,則必須出現(xiàn)在第一個(gè)字段
關(guān)于相對(duì)域名和全域名:舉例來(lái)說(shuō),在 ubuntu.org.cn 域中,相對(duì)域名 osmond 與全域名 osmond.ubuntu.org.cn. 等效;而 osmond.ubuntu.org.cn 由于沒有以“.”結(jié)尾,被認(rèn)為是一個(gè)相對(duì)域名,與其等效的全域名為 osmond.ubuntu.org.cn.ubuntu.org.cn.。因此在書寫對(duì)象名時(shí)要特別小心。
ttl 字段
ttl(time to live) 字段是一個(gè)壽命字段。它以秒為單位定義該資源記錄中的信息存放在高速緩存中的時(shí)間長(zhǎng)度。通常省略該字段,而使用位于文件開始處的 $TTL 語(yǔ)句所指定值。
class 字段
class 字段用于指定網(wǎng)絡(luò)類型,可選的值有:IN、CH 和 HS,其中 IN (Internet)是廣泛使用的一種。雖然 IN 是該字段的默認(rèn)值,但通常我們會(huì)顯示地指出。
type 字段
type 字段用于說(shuō)明 RR 的類型。常用的 RR 類型如下:
關(guān)于RR 的書寫順序
SOA RR 應(yīng)該放在最前面
通常 NS RR 緊跟在 SOA RR 之后
其他記錄的順序無(wú)關(guān)緊要
data 字段
data 字段的內(nèi)容取決于 RR 的類型字段。
常用的資源記錄
SOA 資源記錄
SOA RR 用于標(biāo)示一個(gè)區(qū)的開始,其格式如下:
zone IN SOA Hostname Contact (
SerialNumber
Refresh
Retry
Expire
Minimum )
SOA 記錄的數(shù)據(jù)說(shuō)明
Hostname
存放本 Zone 的域名服務(wù)器的主機(jī)名
Contact
管理域的管理員的郵件地址
SerialNumber
本區(qū)配置數(shù)據(jù)的序列號(hào),用于從服務(wù)器判斷何時(shí)獲取最新的區(qū)數(shù)據(jù)
Refresh
輔助域名服務(wù)器多長(zhǎng)時(shí)間更新數(shù)據(jù)庫(kù)
Retry
若輔助域名服務(wù)器更新數(shù)據(jù)失敗,多長(zhǎng)時(shí)間再試
Expire
若輔助域名服務(wù)器無(wú)法從主服務(wù)器上更新數(shù)據(jù),原有的數(shù)據(jù)何時(shí)失效
Minimum
設(shè)置被緩存的否定回答的存活時(shí)間
如下示例:
kevin.cn. IN SOA wang.kevin.cn. root.wang.kevin.cn. (
2006063000 ;序列號(hào)
3H ;3小時(shí)后刷新
15M ;15分鐘后重試
1W ;1星期后過期
1D ) ;否定緩存TTL為1天
對(duì) Contact 來(lái)說(shuō),因?yàn)?ldquo;@”在文件中有特殊含義,所以郵件地址 root@wang.kevin.cn 寫為 root.wang.kevin.cn.
對(duì) SerialNumber 來(lái)說(shuō),它可以是 32 位的任何整數(shù),每當(dāng)更新區(qū)文件時(shí)都應(yīng)該增加此序列號(hào)的值,否則 named 將不會(huì)把區(qū)的更新數(shù)據(jù)傳送到從服務(wù)器
緩存時(shí)間字段 Refresh、Retry、Expire、Minimum 可以使用時(shí)間單位字符 m、h、d、w 分別表示分鐘、小時(shí)、天、星期。
各個(gè)緩存時(shí)間字段的經(jīng)驗(yàn)值為:
Refresh — 1 到 6 小時(shí)
Retry — 20 到 60 分鐘
Expire — 1 周 到 1 月
Minimum — 1 到 3 小時(shí)
Minimum 設(shè)置被緩存的否定回答的存活時(shí)間,而肯定回答(即真實(shí)記錄)的默認(rèn)值是在區(qū)文件開始處用 $TTL 語(yǔ)句設(shè)置的。
NS 資源記錄
NS RR 用于標(biāo)識(shí)一個(gè)區(qū)的權(quán)威服務(wù)器(包括主服務(wù)器和從服務(wù)器),并將子域授權(quán)賦予其他服務(wù)器,其格式如下:
zone [ttl] IN NS hostname
示例如下:
kevin.cn. IN NS wang.kevin.cn. #指定 kevin.cn. 的主服務(wù)器 kevin.cn. IN NS dapper.kevin.cn. #指定 kevin.cn. 的從服務(wù)器 osmond.kevin.cn. IN NS ubuntu.osmond.kevin.cn. #指定委派域 osmond.kevin.cn. 的主服務(wù)器 osmond.kevin.cn. IN NS dapper.osmond.kevin.cn. #指定委派域 osmond.kevin.cn. 的從服務(wù)器
若上面的記錄緊跟在 SOA 記錄后,也可以寫成如下的形式:
IN NS wang.kevin.cn. #指定 kevin.cn. 的主服務(wù)器
IN NS dapper.kevin.cn. #指定 kevin.cn. 的從服務(wù)器
osmond IN NS ubuntu.osmond.kevin.cn. #指定委派域 osmond.kevin.cn. 的主服務(wù)器
osmond IN NS dapper.osmond.kevin.cn. #指定委派域 osmond.kevin.cn. 的從服務(wù)器
A 資源記錄
A RR 是 DNS 數(shù)據(jù)庫(kù)的核心,它提供了主機(jī)名到 IP 地址的映射。其格式為:
hostname [ttl] IN A IPAddress
對(duì)于 kevin.cn 區(qū)來(lái)說(shuō), 如下示例:
wang IN A 192.168.0.251 dapper IN A 192.168.0.252 wang.osmond IN A 192.168.1.251 dapper.osmond IN A 192.168.1.252
也可以寫成如下的形式
wang.kevin.cn. IN A 192.168.0.251 dapper.kevin.cn. IN A 192.168.0.252 wang.osmond.kevin.cn. IN A 192.168.1.251 dapper.osmond.kevin.cn. IN A 192.168.1.252
對(duì)于有多個(gè)網(wǎng)絡(luò)接口的計(jì)算機(jī)來(lái)說(shuō),可以使用多條 A RR 分別設(shè)置每個(gè)網(wǎng)絡(luò)接口上的主機(jī)名與 IP 地址的映射。當(dāng)然多個(gè) IP 地址也可以關(guān)聯(lián)同一個(gè)主機(jī)名。類似地,也可以使用多條 PTR RR 分別設(shè)置每個(gè)網(wǎng)絡(luò)接口上的 IP 地址與主機(jī)名的映射。
PTR 資源記錄
PTR RR 提供了 IP 地址到主機(jī)名的映射。其格式為:
IPAddress [ttl] IN PTR hostname
例如: 在 168.192.in-addr.arpa 區(qū)中,前面的 wang.kevin.cn. 和 dapper.kevin.cn. 所對(duì)應(yīng)的 PTR 記錄為:
251.0 IN PTR wang.kevin.cn. 252.0 IN PTR dapper.kevin.cn.
而在 0.168.192.in-addr.arpa 區(qū)中,前面的 wang.kevin.cn. 和 dapper.kevin.cn. 所對(duì)應(yīng)的 PTR 記錄為:
251 IN PTR wang.kevin.cn. 252 IN PTR dapper.kevin.cn.
在 1.168.192.in-addr.arpa 區(qū)中,前面的 wang.osmond.kevin.cn. 和 dapper.osmond.kevin.cn. 所對(duì)應(yīng)的 PTR 記錄為:
251 IN PTR wang.osmond.kevin.cn. 252 IN PTR dapper.osmond.kevin.cn.
在 PTR RR 中 hostname 應(yīng)該使用全域名。例如 osmond.kevin.cn 域的主機(jī) wang 應(yīng)該寫為 wang.osmond.kevin.cn. 。而 wang.osmond.kevin.cn 將被解析為 wang.osmond.kevin.cn.1.168.192.in-addr.arpa. 。
PTR RR 所提供的反向解析能夠?yàn)槿魏螌?duì)進(jìn)入網(wǎng)絡(luò)的請(qǐng)求進(jìn)行認(rèn)證的程序所使用,這些程序包括:sshd、tcpd、sendmail、syslogd 等。
MX 資源記錄
MX RR 用于郵件系統(tǒng)實(shí)現(xiàn)郵件路由 。 其格式為:
zone [ttl] IN MX preference host
其中 preference 是優(yōu)先級(jí)字段,數(shù)值越小優(yōu)先級(jí)越高。
示例如下:
kevin.cn. IN MX 5 wang.kevin.cn. kevin.cn. IN MX 10 wang.kevin.cn.
CNAME 資源記錄
CNAME RR 用于設(shè)置主機(jī)的別名。 其格式為:
nikename [ttl] IN CNAME hostname
示例如下:
wang IN A 192.168.0.251 www IN CNAME wang ftp IN CNAME wang
文件內(nèi)必須有規(guī)范名字的 A RR。
分析器指令
在區(qū)文件中還可以使用分析器指令,分析器指令可以為 RR 的輸入提供方便。
$ORIGIN — 設(shè)置默認(rèn)域(或初始域)
$TTL — 為沒有定義精確的生存期的 RR 定義缺省的 TTL 值
遇到過一個(gè)DNS的forwarders轉(zhuǎn)發(fā)設(shè)置的問題
IDC機(jī)房服務(wù)器上部署了內(nèi)網(wǎng)DNS環(huán)境, 線上各服務(wù)器的/etc/resolv.conf文件里均配置了該DNS地址. 后來(lái)在其中過的一臺(tái)服務(wù)器上去wget下載一個(gè)客戶方的地址, 有時(shí)好有時(shí)壞, 由于該客戶方的這個(gè)url里的域名采用了CDN加速, 所以在機(jī)房的這臺(tái)服務(wù)器上"nslookup 該域名" 解析這個(gè)客戶方的域名的ip是隨時(shí)變的 (即解析到的都是CDN那邊的地址池里的地址), 有時(shí)會(huì)解析不到這個(gè)域名的地址. 這是為什么呢?
發(fā)現(xiàn)是因?yàn)樵摍C(jī)房DNS配置 (/etc/named/named.conf)里的forwarders轉(zhuǎn)發(fā)到的NS服務(wù)器地址問題導(dǎo)致的. 因?yàn)橹芭渲玫膄orwarders是:
forwarders {
223.5.5.5;
223.6.6.6;
8.8.8.8;
8.8.4.4;
};
即之前通過forwarders轉(zhuǎn)發(fā)的NS地址是阿里云和谷歌的DNS地址. 后來(lái)又加上聯(lián)通的DNS地址并放在了前面 (這幾個(gè)DNS地址在forwarders轉(zhuǎn)發(fā)時(shí)是輪詢關(guān)系)就解決了上面問題:
forwarders {
114.114.114.114;
202.106.0.20;
223.5.5.5;
223.6.6.6;
8.8.8.8;
8.8.4.4;
};
如上添加后, 在機(jī)房的那臺(tái)服務(wù)器上通過"nslookup 客戶域名" 解析出來(lái)的ip地址相比于之前更多了.
總結(jié)
以上是生活随笔為你收集整理的DNS之BIND使用小结(Forward转发)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 变量属性
- 下一篇: getsockopt函数的使用