DNS伺服器在企業中應用也是十分廣泛的,搭建環境中,主機數量偏多,IP管理的話不好進行,是以就需要用主機名稱來管理,為了處理IP與主機名的一一對應關系,這時候便用到了DNS服務,下面我們來一起了解一下這個服務吧。
DNS的英文全名叫Domain Name Service,或者Domain Name System ,它是處在應用層的協定,是基于C/S,伺服器/用戶端結構體系的,它占用UDP和TCP的53端口,普通使用者去查一條解析記錄,走UDP的53端口,而區域傳輸需要同時使用UDP和TCP的53端口,包括主從複制也需要,這一點我們後面再談。
一般用來實作DNS解析用到的軟體是BIND,它是一款老牌的提供DNS服務的軟體,曆史悠久,同時這個公司也提供DHCP服務的軟體。
BIND的英文全名叫Bekerley Internat Name Domain ISC 這是它的官網,有興趣可以去看看:www.isc.org.
在Linux中,本身提供本地名稱解析配置檔案是hosts,它在在/etc/hosts檔案中;
在Windows中,他存放在%WINDIR%/system32/drivers/etc/hosts 中,%WINDIR%表示的是你裝系統時候的系統盤,比如C槽,D盤
對于DNS伺服器的類型,主要有以下幾種:
-
主DNS伺服器
管理和維護所負責解析的域内解析庫的伺服器
-
從DNS伺服器
從主伺服器或從伺服器“複制”(區域傳輸)解析庫副本
在解析庫裡面有以下幾項關鍵内容
- 序列号:解析庫版本号,主伺服器解析庫變化時,其序列遞增
- 重新整理時間間隔:從伺服器從主伺服器請求同步解析的時間間隔
- 重試時間間隔:從伺服器請求同步失敗時,再次嘗試時間間隔
- 過期時長:從伺服器聯系不到主伺服器時,多久後停止服務 “通知”機制:主伺服器解析庫發生變化時,會主動通知從伺服器
-
緩存DNS伺服器(轉發器)
這種DNS伺服器就相當于小區裡的DNS,為用戶端提供傳遞解析請求,同時也可以緩存DNS記錄,可以加快使用者通路速度,減短解析時間。
一次完整的查詢請求經過的流程是下面這樣的:
Client -->hosts檔案 -->DNS Service Local Cache --> DNS Server (recursion) --> Server Cache --> iteration(疊代) --> 根–> 頂級域名DNS–>二級域名DNS…
而在傳回解析結果的時候,會有以下幾種内容(例如dig查詢):
- 肯定答案:得到的解析結果
- 否定答案:請求的條目不存在等原因導緻無法傳回結果
- 權威答案:直接得到的解析結果
- 非權威答案:通過轉發,一步一步查詢得到的結果
而對于BIND來說,它的具體内容和配置檔案有以下:
- 服務腳本和名稱:/etc/rc.d/init.d/named #CentOS6
- /usr/lib/systemd/system/named.service #CentOS7
- 主配置檔案:
- /etc/named.conf
- /etc/named.rfc1912.zones
- /etc/rndc.key
- 解析庫檔案:/var/named/ZONE_NAME.ZONE
- 注意:
- 一台實體伺服器可同時為多個區域提供解析
- 必須要有根區域檔案;named.ca
- 應該有兩個(如果包括ipv6的,應該更多)實作localhost 和本地回環位址的解析庫
-
rndc: remote name domain controller, 預設與bind安裝在同一主機,且隻能通過127.0.0.1連接配接
named程序,使用TCP的953端口提供輔助性的管理功能,比如:
- rndc reload 不用重新啟動BIND,使配置檔案生效
- rndc flush 清楚DNS緩存
rndc後面加:
reload: 重載主配置檔案和區域解析庫檔案
reload zonename: 重載區域解析庫檔案
retransfer zonename: 手動啟動區域傳送,而不管序列号是否增加
notify zonename: 重新對區域傳送發通知
reconfig: 重載主配置檔案
querylog: 開啟或關閉查詢日志檔案/var/log/message
trace: 遞增debug一個級别
trace LEVEL: 指定使用的級别
notrace:将調試級别設定為 0 flush:清空DNS伺服器的所有緩存記錄
主配置檔案内容:
- 主配置檔案: 全局配置:options {};
- 日志子系統配置:logging {};
-
區域定義:本機能夠為哪些zone進行解析,就要定義哪些zone
zone “ZONE_NAME” IN {};
這裡需要特别強調,由于BIND軟化曆史悠久,它的配置檔案文法是C語言風格,每一句話,隻要換行必須加分号";",注釋也不再是"#",而是"//"
- 注意:任何服務程式如果期望其能夠通過網絡被其它主機通路 ,至少應該監聽在一個能與外部主機通信的IP位址上
-
緩存名稱伺服器的配置: 監聽外部位址即可
dnssec: 建議關閉dnssec,設為no
主DNS名稱伺服器:
-
在主配置檔案/etc/named.conf中定義區域
zone “ZONE_NAME” IN {
type {master|slave|hint|forward};
type有四種類型,我們後面再講
file “ZONE_NAME.zone”;
allow-update { none; };
這裡這一項,它的具體作用後面再講,不加也可以,不是必須的
};
-
定義區域解析庫檔案
出現的内容
宏定義
資源記錄
- 主配置檔案文法檢查: named-checkconf
-
解析庫檔案文法檢查:
named-checkzone “yangyang.host” /var/named/yangyang.host.zone
-
配置檔案重新加載:
rndc status|reload
service named reload
說了這麼多,也不如實實在在的搭建一個服務來的明白,那我們下面就來具體搭建一個DNS服務吧!
一.正向yangyang.host解析
1.安裝包bind
yum install -y bind
2.vim /etc/named.conf
修改這個主配置檔案,需要知道,如果下面兩項沒有修改,會造成用戶端無法連接配接你的DNS伺服器。
第一項:
listen-on port 53 { localhost;};
這一項的意思是,監聽自己回環IP的53端口,預設是127.0.0.1 這樣是把端口綁定到了127.0.0.1IP上,隻有你自己通過127.0.0.1才能連接配接到伺服器,其他人不可以,而且你在伺服器上使用自己的真正IP也不行,隻能使用這個回環IP。這一項也可以使用//注釋掉。
第二項:
allow-query { any;};
這一項不開的話,其他人還是不能通路,預設是localhost,隻允許自己的IP來通路,這也失去了DNS伺服器的意義。是以需要把它改為any,允許任何人通路,這裡你也可以改成具體IP:192.168.1.20,或者改為網段:192.168.1.0/24,這一項也可以使用//注釋掉。
好啦,到這裡,主配置檔案就修改好了,在許多教程中,會在主配置檔案下面來添加區域檔案,但是這樣不友善管理,容易亂,需要注意在主配置檔案最下面有這樣一句話:include “/etc/named.rfc1912.zones”;
它的意思就是這路徑下的檔案也可以定義,它是包含在主配置檔案裡的,是以我們就在這裡設定區域檔案,友善統一管理。
3.vim /etc/named.rfc1912.zones
修改這個檔案配置區域檔案,在裡面找個地方加入下面内容,切記不能忘了分号";"
zone "yangyang.host" IN {
type master; //聲明是主DNS伺服器,因為它有主從之分
file "yangyang.host.zone"; //聲明區域資料庫檔案路徑,這裡寫的是相對路徑,系統知道他應該在/var/named/下面找
};
4.vim /var/named/magedu.com.zone
修改區域資料庫檔案,這裡十分關鍵,為核心内容,格式也十分重要,為什麼DNS叫“隻有我搭建不好的服務”,原因就在這。
首先,這個檔案實在/var/named/目錄下建立的,但是進去會發現沒有這個檔案,是以需要你拷貝模闆,并且重新命名,自己修改,模版也在這個目錄下,叫:named.localhost
cp -a /var/named/named.localhost yangyang.host.zone
這裡的yangyang.host.zone是上一步在zone "yangyang.host"裡面的file “yangyang.host.zone” 裡面的内容,是以名稱必須統一,為你要解析的域名。
$TTL 1D
@ IN SOA dnssrv1 admin.yangyang.host. (
0 ; serial
1H ; refresh
600 ; retry
1D ; expire
3H ) ; minimum
NS dnssrv1
dnssrv1 A 192.168.218.100
websrv1 A 6.6.6.6
www CNAME websrv1
@ MX 10 mailsrv
mailsrv A 192.168.218.101
這裡我們主要說一下這個解析資料庫裡面的每一項含義:
區域解析庫是由衆多RR(Resource Record)組成:
- 資源記錄:Resource Record, RR
- 記錄類型:A, AAAA, PTR, SOA, NS, CNAME, MX
- SOA:Start Of Authority,起始授權記錄;一個區域解析庫有 且僅能有一個SOA記錄,必須位于解析庫的第一條記錄
- A:internet Address,作用,域名(QFDN) --> IPv4
- AAAA: 域名(QFDN) --> IPv6
- PTR: PoinTeR,IP --> FQDN
- NS: Name Server,專用于标明目前區域的DNS伺服器
- CNAME:Canonical Name,别名記錄
- MX: Mail eXchanger,郵件交換器
資源記錄SOA定義的格式:
文法:name [TTL] IN RR_type value
- 注意:
- (1) TTL可從全局繼承
- (2) @可用于引用目前區域的名字
- (3) 同一個名字可以通過多條記錄定義多個不同的值;此時 DNS伺服器會以輪詢方式響應
- (4) 同一個值也可能有多個不同的定義名字;通過多個不同的 名字指向同一個值進行定義;此僅表示通過多個不同的名字可 以找到同一個主機
- name: 目前區域的名字,例如“yangyang.host.”
- value: 有多部分組成
- (1) 目前區域的主DNS伺服器的FQDN,也可以使用目前區域的名字;
- (2) 目前區域管理者的郵箱位址;但位址中不能使用@符号,一般用.替換 ,例如[email protected]. 等價linuxedu.yangyang.host.
- (3) 主從服務區域傳輸相關定義以及否定的答案的統一的TTL
對于這個區域資料庫檔案:
TTL是生存時間,也就說DNS緩存時間 1D是一天,以此類推1H 一小時,1W 一周,預設不寫字母為秒,例如:10 是10秒
@表示本伺服器的域,也就是yangyang.host.
這裡有一點需要十分注意!!!
這裡有一點需要十分注意!!!
這裡有一點需要十分注意!!!
在區域資料庫檔案裡,你的域名隻要後面沒加".",系統會預設給你補全,他認為你這不全,比如:@可以寫成yangyang.host. 但是你要是寫yangyang.host,他就會認為你應該是yangyang.host.yangyang.host. 是以你的配置檔案就出了問題。
其實它的思路很簡單,比如:
NS dnssrv1
dnssrv1 A 192.168.218.100
websrv1 A 6.6.6.6
www CNAME websrv1
第一步,你肯定得先把伺服器的IP表示出來對吧,因為在之前SOA記錄了定義了伺服器的名稱dnssrv1,還有郵箱名稱admin.yangyang.host.
@ IN SOA dnssrv1 admin.yangyang.host.
是以,因為有繼承機制, NS dnssrv1這一行前面不用寫,系統也知道是聲明@為DNS伺服器,而@不就是yangyang.host.嗎?
第二步,因為你聲明了DNS伺服器,但是還沒有IP,是以
才有了dnssrv1 A 192.168.218.100,IP與伺服器對應。
第三步,websrv1解析了位址6.6.6.6,但是我們都習慣www,是以把www聲明為websrv1的别名,
是以這就都出來了.
在SOA中,以下需要注意:
0 ; serial 是判斷主DNS資料庫變化的标準
修改資料庫後需要手動加一
1D ; refresh
從伺服器一天拉取一次資料庫
1H ; retry
如果拉取失敗,一小時以後再次嘗試
1W ; expire
資料庫資訊存活時間為一周
一周以後失效
3H ) ; minimum
3小時之内不需要查詢上次沒查到的記錄
5.systemctl start named
啟動服務
之前啟動過的也可以使用
rndc reload
重新加載配置檔案
6.測試
使用dig
這裡使用dig需要下載下傳bind-utils軟體包,
yum install -y bind-utils
裡面也還有nslookup和host等其他測試指令
dig www.yangyang.host @DNS伺服器IP
NF記錄
- name: 目前區域的名字
-
value: 目前區域的某DNS伺服器的名字,例如
ns.yangyang.host.
-
注意:一個區域可以有多個NS記錄
例如:
- yangyang.host. IN NS
- yangyang.host. IN NS
-
注意:
ns1.yangyang.host. ns2.yangyang.host.
- 相鄰的兩個資源記錄的name相同時,後續的可省略
- 對NS記錄而言,任何一個ns記錄後面的伺服器名字 ,都應該在後續有一個A記錄
MX記錄
- name: 目前區域的名字
- value: 目前區域的某郵件伺服器(smtp伺服器)的主機名
- 一個區域内,MX記錄可有多個;但每個記錄的value之前應該 有一個數字(0-99),表示此伺服器的優先級;數字越小優先 級越高
- 例如:
yangyang.host. IN MX 10 mx1.yangyang.host.
IN MX 20 mx2.yangyang.host.
- 注意:
- 對MX記錄而言,任何一個MX記錄後面的伺服器名字 ,都應該在後續有一個A記錄
A記錄
- name: 某主機的FQDN,例如www.yangyang.host.
- value: 主機名對應主機的IP位址
- 例如:
www.yangyang.host. IN A 1.1.1.1
www.yangyang.host. IN A 2.2.2.2
mx1.yangyang.host. IN A 3.3.3.3
mx2.yangyang.host. IN A 4.4.4.4
$GENERATE 1-254 HOST$ A 1.2.3.$
*.yangyang.host. IN A 5.5.5.5
yangyang.host. IN A 6.6.6.6
注意:
這裡
$GENERATE 1-254 HOST$ A 1.2.3.$
$GENERATE用來實作一一對應
類似:server1 - 1.2.3.1 server100 - 1.2.3.100
避免使用者寫錯名稱時給錯誤答案,可通過泛域名解析進行解析至某特定位址 比如上面的*.yangyang.host.
其他記錄
- 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.yangyang.host.
如1.2.3為網絡位址,可簡寫成:
4 IN PTR www.yangyang.host.
- 注意:網絡位址及字尾可省略;主機位址依然需要反着寫
- CNAME:
- name: 别名的FQDN
- value: 真正名字的FQDN
-
例如:
www.yangyang.host. IN CNAME websrv.yangyang.host.
二.反向解析192.168.218.101
有了前面的基礎,後面就好了解,我這裡隻叙述重要的關鍵點。
反向解析的zone檔案需要把IP倒過來寫
zone "218.168.192.in-addr.arpa"{
type master;
file "192.168.218.zone";
};
區域資料庫檔案
模版為/var/named/named.loopback
$TTL 1D
@ IN SOA master admin.yangyang.host. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 127.0.0.1
100 PTR master.yangyang.host.
101 PTR www.yangyang.host.
其中的@代表:
218.168.192.in-addr.arpa. IP域
也可以這樣寫
直接解析master或者把master解析到回環IP,再由回環IP傳回對應IP是同樣的道理,都可以
$TTL 1D
@ IN SOA master admin.yangyang.host. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.218.100
100 PTR master.yangyang.host.
101 PTR www.yangyang.host.
2 PTR @
最後的可以解析192.168.218.2來檢視@代表的意思
dig -x IP @DNS主機IP 實作反向解析
或者
dig -t ptr 101.218.168.192.in-addr.arpa. @伺服器IP 也可以
dig -t axfr 抓取DNS資料庫 域名 @DNS伺服器IP
三.主從DNS伺服器
1.主伺服器的配置同上,隻不過需要再多加一句話:
vim /etc/named.conf
allow-transfer { 從伺服器的IP;};
這句話的作用是不允許随便的伺服器當DNS的從伺服器,因為從伺服器可以拉取主伺服器的解析庫,不安全
2.從伺服器的配置
zone "yangyang.host" {
type slave; //聲明這是從伺服器
masters {主伺服器IP;};
file "slaves/magedu.com.zone"; //需要聲明相對路徑,slaves/在 /var/named/目錄下
};
3.從伺服器的配置同上 ,隻不過需要在配置檔案中多加一句
vim /etc/named.conf
allow-transfer { none;}; 這是聲明自己是最後的從伺服器了,在:主->從->從->從 結構體系中處于最下端,保護解析資料庫安全,放在有人抓取從資料庫。
四.遠端更新資料庫
之前提到allow-update { none; };語句的作用,這裡來談
它是用于遠端更新資料庫的
指定的zone語句塊中:
allow-update {any;}; //為了安全這裡需要指定IP,這裡是實驗,是以是any,意思是任何人都可以遠端修改資料庫。
-
修改 /var/named權限,使它可寫
chmod 770 /var/named
-
如果開了SE Linux設定這一項:
setsebool -P named_write_master_zones on
-
nsupdate 這個指令來進行互動寫入
• >server DNS伺服器IP
• >zone 修改的zone域 例如:zone yangyang.host
• >update add ftp. yangyang.host 88888 IN A 8.8.8.8
• >send
• >update delete www. yangyang.host A 删除記錄
• >send
-
測試:dig ftp. yangyang.host @伺服器IP
ll /var/named/ yangyang.host.zone.jnl
cat /var/named/ yangyang.host.zone
五.DNS委派
子域實作普通DNS一樣,隻不過父域需要在解析資料庫聲明子域DNS和它的IP,這樣就實作了DNS委派
子域授權:每個域的名稱伺服器,都是通過其上級名稱伺服器在解析庫進行授權
類似根域授權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
舉個例子:
$TTL 86400
. IN SOA dns1 admin (
4 ; serial
86400 ; refresh
3600 ; retry
604800 ; expire
10800 ; minimum
)
NS dns1
host NS dns2
dns1 A 192.168.218.100
dns2 A 192.168.218.102
其中,父域"."DNS為dns1,子域"host"為dns2
不過有一點需要注意:
修改配置檔案
vim /etc/named.conf
設定
dnssec-enable no;
dnssec-validation no;
六.DNS轉發
DNS轉發分為兩種:
1.全局轉發:
對非本機所負責解析區域的請求,全轉發給指定的伺服器
修改配置檔案
vim /etc/named.conf
在Options括号裡添加兩句話
Options {
forward first|only;
forwarders { ip;};
};
例如:
forward first;
forwarders {192.168.27.103;}; //這裡聲明轉發到哪個DNS伺服器,例如:192.168.27.103**
2.特定區域轉發
僅轉發對特定的區域的請求,比全局轉發優先級高
修改配置檔案
vim /etc/named.rfc1912.zones
在zone區域括号裡添加兩句話
zone "yangyang.host" {
type forward;
forward first;
forwarders {192.168.218.103;};
};
這裡說明一下first 與only的差別:
forward first|only
- first 先轉發到forwarders設定的DNS伺服器,如果實在找不到這台伺服器,比如它down機了,就轉發到網際網路上去找根DNS
- only 轉發到forwarders設定的DNS伺服器,如果找不到這台伺服器,那就到此為止了,不再去尋找根伺服器**
- recursion 設為 no 是取消遞歸,不再轉發網際網路去查找DNS
注意:關閉dnssec功能:
dnssec-enable no;
dnssec-validation no;
七.智能DNS
BIND 通過view來實作智能DNS:
- 一個bind伺服器可定義多個view,每個view中可定義一個 或多個zone
- 每個view用來比對一組用戶端
- 多個view内可能需要對同一個區域進行解析,但使用不同 的區域解析庫檔案
- 注意:
- (1) 一旦啟用了view,所有的zone都隻能定義在view中
- (2) 僅在允許遞歸請求的用戶端所在view中定義根區域
- (3) 用戶端請求到達時,是自上而下檢查每個view所服務 的用戶端清單
- 格式:
view VIEW_NAME {
match-clients { testacl; };
zone “magedu.com” {
type master;
file “magedu.com.zone”;
};
include “/etc/named.rfc1912.zones”;
};
其中testacl是一種提前定義
是BIND中基礎的安全相關的配置:
- acl: 把一個或多個位址歸并為一個集合,并通過一個統一的名稱調用
格式:
acl acl_name {
ip;
net/prelen; ......
};
示例:
acl mynet {
172.16.0.0/16;
10.10.10.10;
};
bind有四個内置的acl:
- none: 沒有一個主機
- any: 任意主機
- localhost: 本機
- localnet: 本機的IP同掩碼運算後得到的網絡位址
注意:隻能先定義,後使用;是以一般定義在配置檔案中,處于options的前面,而且限制範圍小的要比限制範圍大的排在前。
舉個例子:
acl beijingnet {192.168.218.0/24; };
acl shanghainet {172.18.0.0/16;10.0.0.0/8;};
acl othernet {any;};
具體實作:
vim /etc/named.conf
acl beijingnet {192.168.27.0/24; };
acl shanghainet {172.18.0.0/16;10.0.0.0/8;};
acl othernet {any;};
view beijingview {
match-clients {beijingnet;};
zone "yangyang.host" {
type master;
file "yangyang.host.zone1";
};
include "/etc/named.rfc1912.zones";
};
view shanghaiview{
match-clients {shanghainet;};
zone "yangyang.host" {
type master;
file "yangyang.host.zone2";
};
include "/etc/named.rfc1912.zones";
};
view otherview {
match-clients {othernet;};
zone "yangyang.host" {
type master;
file "yangyang.host.zone1";
};
include "/etc/named.rfc1912.zones";
};
include "/etc/named.root.key";
然後再在具體的yangyang.host.zone1檔案裡來定義具體的解析資料庫。
八.源碼編譯BIND
-
下載下傳bind: isc.org:
bind-9.10
bind-9.11
bind-10
- 編譯安裝bind
- tar xvf bind-9.11.0a3.tar.gz
- cd bind-9.11.0a3/
- groupadd -r -g 53 named
- useradd -r -u 53 -g 53 named
- ./configure --prefix=/usr/local/bind9 – sysconfdir=/etc/named/ --without-openssl --disable-ipv6 – disable-chroot --enable-threads
- make
- make install
- 環境變量:
-
vim /etc/profile.d/named.sh
export PATH=/usr/local/bind9/bin:/usr/local/bind9/sbin/:$PATH
-
- 庫和頭檔案
-
vim /etc/ld.so.conf.d/named.conf
/usr/local/bind9/lib
- ldconfig –v
- ls -sv /usr/local/bind9/include /usr/include/named
-
- man幫助
-
vim /etc/man.config | /etc/man_db.conf
MANPATH /usr/local/bind9/share/man
- man named.conf
-
- vim /etc/named/named.conf
options {
directory "/var/named/"
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file “named.localhost";
allow-update {none;};
};
zone “1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update {none;};
};
-
區域資料庫
• mkdir /var/named
• named-checkconf
• dig +norec @a.root-servers.net > /var/named/named.ca
• vim /var/named/named.localhost
$TTL 1d
@ IN SOA localhost. admin.localhost. (
2016061801
1h
5m
7d
1d)
IN NS localhost.
localhost. IN A 127.0.0.1
- vim /var/named/named.loopback
$TTL 1d
@ IN SOA localhost. admin.localhost.(
2016061801
1h
5m
7d
1d)
NS @
A 127.0.0.1
PTR localhost.
-
設定權限
• chmod 640 /var/named/*
• chmod 640 /etc/named/named.conf
• chgrp -R named /var/named/
• chgrp named /etc/named/named.conf
-
啟動服務和測試
• man named
• named -u named -f -g -d 3 前端級别3方式運作
• named -u named 背景運作
• killall named
• ss -tuln
• tail /var/log/message
• named -u named
-
支援rndc
• rndc reload 觀察錯誤提示
• rndc-confgen -r /dev/urandom > /etc/named/rndc.conf 生成key
• tail /etc/named/rndc.conf >> /etc/named/named.conf
• killall -SIGHUP named
• rndc status
九.壓力測試
- /root/bind-xxx/contrib/scripts
-
編譯壓力測試工具
• cd /root/bind-xxx/contrib/queryperf
• ./configure
• make
• cp queryperf /usr/local/bind9/bin
• queryperf -h
-
壓力測試
• vim test.txt
www.yangyang.host A
yangyang.host NS
yangyang.host MX
pop3.yangyang.host A
web.yangyang.host A
• queryperf -d test.txt -s 127.0.0.1 打開日志功能
• rndc querylog
• rndc status
• queryperf -d test.txt -s 127.0.0.1 • wc -l /var/log/message
十.DNS排錯
#dig A example.com 傳回以下結果
• ; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> A
example.com
• ;; global options: +cmd
• ;; Got answer:
• ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30523
• …
• SERVFAIL:The nameserver encountered a problem while
processing the query.
• 可使用dig +trace排錯,可能是網絡和防火牆導緻
-
NXDOMAIN:The queried name does not exist in the zone.
• 可能是CNAME對應的A記錄不存在導緻
-
REFUSED:The nameserver refused the client’s DNS request due to policy restrictions.
• 可能是DNS政策導緻
• NOERROR不代表沒有問題,也可以是過時的記錄
• 檢視是否為權威記錄,flags:aa标記判斷
• 被删除的記錄仍能傳回結果,可能是因為*記錄存在
• 如:*.example.com. IN A 172.25.254.254
• 注意“.”的使用
• 避免CNAME指向CNAME記錄,可能産生回環 test.example.com. IN CNAME lab.example.com. lab.example.com. IN CNAME test.example.com.
• 正确配置PTR記錄,許多服務依賴PTR,如sshd,MTA
• 正确配置輪詢round-robin記錄