1. 程式人生 > >第21章,DNS服務

第21章,DNS服務

mtp 條目 交換 profile 停止 ipad 引用 歐洲 anon

更多內容請點擊:

Linux學習從入門到打死也不放棄,完全筆記整理(持續更新,求收藏,求點贊~~~~)

http://blog.51cto.com/13683480/2095439


第21章,DNS服務

本章內容:

名字解析

DNS服務

實現主從服務器

實現子域

實現view

編譯安裝bind

壓力測試

DNS排錯

DNS服務:-----------------------------------------------------------------------

DNS:Domain Name Service 應用層協議

使用C/S結構,使用端口為 udp:53,tcp:53

其中,名字解析服務使用udp53,主從同步傳輸使用tcp53和udp53

BIND:Bekerley Internet Name Domin dns解析服務器端實現軟件

ISC維護的服務之一(www.isc.org)

本地名稱解析配置文件:hosts

linux: /etc/hosts

windows: %WINDIR%/system32/dvivers/etc/hosts

格式為:

IPADDR FQDN1 FQDN2..

122.10.117.2 www.test2.com www.test2.com ...

...

DNS解析:

一次完整的查詢請求過程:

clint--—> 本地host文件 ---> DNS Service local cache ---> DNS Server(recursion)

---> server cache ---> iteration(叠代) ---> 根 --->頂級域名dns---> 二級域名dns...

---> 結果返回,本地local將結果緩存至本地

DNS查詢類型:

遞歸查詢:recursion

客戶機只一次申請,返回結果。需要請求的dns服務器開啟遞歸查詢。

叠代查詢:iteration

支持遞歸查詢的dns服務器,在收到解析請求之後,如果請求的解析地址

非自己提供,會從根域自頂而下,依次尋找解析服務器,得到結果之後返回

給申請主機。

此查詢過程就稱為叠代

名稱服務器:域內負責解析本域內的名稱的主機

根服務器:全球共13組,美國10 歐洲2 日本1

解析類型:

正向解析: FQDN ---> IP

反向解析: IP----> FQDN

註意:正反向解析是兩個不同的名稱空間,是兩顆不同的解析樹

DNS服務器類型:

主DNS服務器:

管理和維護所負責解析的域內解析庫的服務器

從DNS服務器:

從主服務器或另一臺從服務器‘復制’(區域傳送)解析庫文件

緩存DNS服務器:

轉發器,自己不負責任何區域解析,但是收到解析請求之後,會從根域開始自上而下

尋找解析,一旦找到,提交給用戶,且會將結果暫時緩存起來,供其他用戶查詢

必須支持遞歸

名詞解釋:

區域傳送: 從服務器從主服務器同步解析庫

完全傳送:傳送整個解析庫

增量傳送:傳遞解析庫變化的那部分內容

序列號:

解析庫版本號,主服務器解析庫修改時,遞增其序列號

刷新時間間隔:

從服務器從主服務器請求同步解析的時間間隔

重試時間間隔:

從服務器同步失敗時,再次嘗試時間間隔

過期時長:

從服務器聯系不到主服務器時,多久後停止服務

通知機制:

notify ,主服務器解析庫發生變化時,會主動通知從服務器

解析答案:

肯定答案:dns服務器通過叠代或者本地緩存得到肯定結果返回給用戶

否定答案:請求的條目不存在等原因導致無法返回結果

權威答案:由負責所查詢區域的區域解析服務器返回的結果

非權威答案:通過緩存返回的結果

區域解析庫:由眾多解析記錄(RR)組成

資源記錄:Resource Record

記錄類型:

SOA: Start Of Authority,起始授權記錄,用於標記自己,一個區域解析庫有且僅能有一個

SOA記錄,必須位於解析庫的第一條記錄

A: 將 FQDN---> IP

AAAA: FQDN---> IPv6

PTR: PoinTeR, IP --> FQDN

NS: Name Server,專用於標明當前區域的DNS服務器

CNAME: Canonical Name, 別名記錄 FQDN ---> FQDN

MX: Mail eXchanger, 郵件交換器

資源記錄定義的格式:

語法: name [TTL] IN rr_tpye value

註意:

1 TTL(time to live )生存時間,可從全局繼承

2 @ 可用於引用當前區域的名字

3 同一個名字可以通過多條記錄定義多個不同的值,此時DNS服務器會以

輪詢方式相應

4 同一個值也可能有多個不同的定義名字,通過多個不同的名字指向同一個值

進行定義,此僅表示通過多個不同的名字可以找到同一個主機

SOA記錄:

name: 當前區域的名字,例如"alitaobao.com"

value:由多部分組成

1 當前區域的主dns服務器的fqdn,也可以使用當前區域的名字

2 當前區域管理員的郵箱地址;但地址中不能使用@符號,用‘.’替換

3 主從服務區域相關定義以及否定答案的統一TTL

例如:

@ IN SOA ns1.alitaobao.com. admin.alitaobao.com. (

20180060201 ;序列號

2H ;刷新時間

10M ;重試時間

1W ;過期時間

1D ) ;否定答案的TTL值

其中";" 表示註釋

NS記錄:

name:當前區域的名字

value:當前區域的某dns服務器的名字,例如ns.alitaobao.com.

一個區域可以有多個NS記錄

例如:

alitaobao.com. IN NS ns1.alitaobao.com.

alitaobao.com. IN NS ns2.alitaobao.com.

註意:

1 相鄰的兩個資源記錄的name相同時,後續的可省略

2 對NS記錄而言,任何一個ns記錄後面的服務器名字,都應該有一個A記錄

MX記錄:

name:當前區域的名字

value:當前區域的某郵件服務器(smtp服務器)的主機名

一個區域內,MX記錄可以有多個,但每個記錄的value之前應該有一個數字

(0-99,並且是5的倍數),表示此服務器的優先級,數字越小優先級越高

例如:

alitaobao.com. IN MX 5 mx1.alitaobao.com.

IN MX 10 mx2.alitaobao.com.

註意:

對MX記錄而言,任何一個MX記錄後面的服務器名字,都應該在後續有一個A記錄

A記錄:

name: 某主機的FQDN,例如www.alitaobao.com.

value: 主機名對應主機的IP地址

例如:

www.alitaobao.com. IN A 1.1.1.1

ops.alitaobao.com. IN A 2.2.2.2

mx1.alitaobao.com. IN A 3.3.3.3

mx2.alitaobao.com. IN A 4.4.4.4

$GENERATE 1-254 HOST$ A 1.2.3.$

*.alitaobao.com. IN A 5.5.5.5

alitaobao.com. IN A 6.6.6.6

* 泛域名解析,代表任意字段,

避免用戶寫錯名稱時給錯誤答案,可通過泛域名解析至某特定地址

AAAA:

name: FQDN

value:IPv6

PTR:

name: IP,有特定格式,把IP地址反過來寫,加上特定後綴 in-addr.arpa.

value: FQDN

例如:

4.3.2.1.in-addr.apra. IN PTR a.alitaobao.com.

如1.2.3為網絡地址,可簡寫成:

4 IN PTR a.alitaobao.com.

註意:網絡地址及後綴可省略,主機地址依然需要反著寫如:

4.3 IN PTR a.alitaobao.com.

別名記錄CNAME:

name: 別名的FQDN

value: 真正名字的FQDN

例如:

www.alitaobao. IN CNAME webserver.alitaobao.com.

子域:

子域授權:

每個域的名稱服務器,都是通過其上級名稱服務器在解析庫進行授權

類似根域授權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

在.com的名稱服務器上,授權alitaobao.com.,需要在解析庫中增加如下資源記錄

alitaobao.com. IN NS ns1.alitaobao.com.

alitaobao.com. IN NS ns2.alitaobao.com.

alitaobao.com. IN NS ns3.alitaobao.com.

ns1.alitaobao.com. IN A 3.3.3.1

ns2.alitaobao.com. IN A 3.3.3.2

ns3.alitaobao.com. IN A 3.3.3.3

glue record: 粘合記錄,父域授權子域的記錄

bind:----------------------------------------------------------------------------

: dns服務服務器端實現

使用yum安裝的服務腳本和名稱:

centos6: /etc/rc.d/init.d/named

centos7: /usr/lib/systemd/system/named.service

主配置文件:

/etc/named.conf

/etc/named.rfc1912.zones

/etc/rndc.key

解析庫文件:

/var/named/ZONE_NAME.zone

註意:

1 一臺物理服務器可同時為多個區域提供解析

2 必須要有根區域文件; named.ca

生成named.ca:dig -t NS . @a.root-servers.net. > /var/named/named.ca

3 應該有兩個(如果包括ipv6的,應該更多)實現localhost和本地回環地址的解析庫

rndc: remote name domain controller 遠程名稱域控制器

默認與bind安裝在同一主機,且只能通過127.0.0.1連接named進程

提供輔助性的管理功能:953/tcp

配置文件:

主配置文件:/etc/named.conf

全局配置:options {};

日誌子系統配置:logging {};

區域定義: 本機能夠為哪些zone進行解析,就要定義哪些zone

zone "zone_name" IN {};

一般定義在:/etc/named.rfc1912.zones 中

特別註意:

每一行必須以";"結尾,

{ ;}; 花括號內外結尾都必須加;

設置監聽接口與端口:

options{

listen-on port 53 { IP; };

};

默認配置為只監聽回環地址,可直接修改成需要監聽的IP地址

或者localhost

也可以刪除此行,或使用"//"將此行這註釋掉,默認監聽全部本地接口

設置zones文件目錄:

directory "/var/named"

訪問控制列表:

bind內置4個控制列表:

none: 沒有一個主機

any: 任意主機

localhost:本機

localnet:本網段,即本機的IP 同掩碼運算後得到的網絡地址

訪問控制指令:

allow-query {}; 允許查詢的主機;白名單

一旦定義,名單以外的主機禁止訪問

allow-transfer {}; 允許區域傳送的主機;白名單

allow-recursion {};允許遞歸的主機,白名單,建議全局使用

allow-update {}; 允許動態更新數據庫中的內容

訪問控制指令可以寫在options{};中,表示全局有效

也可以寫在zone""{};定義中,針對指定區域

範圍越小優先級越高

其他選項:

recursion yes|no; 是否開啟遞歸功能

dnssec-enable yes; 此兩項為安全選項,如非特別需要,或者非常熟悉此功能配置

dnssec-validation yes; 否則建議關:閉

根區域定義:

zone "." IN {

type hint;

file "named.ca";

};

實驗1:配置緩存名稱服務器

步驟: centos7.5為例

1 yum 安裝 bind

2 修改主配置文件,註釋掉listen-on 和 allow-query 兩行,修改dnssec 兩行值為no

3 開啟named服務 systemctl start named;systemctl enable named

4 使用ss -tunl 查看tcp udp 53端口記憶tcp953端口是否正常開啟

5 在另外一臺虛擬機上測試是否可以正常解析

dig www.baidu.com @192.168.65.155

實驗2: 配置主dns服務器,且實現ip地址輪詢

環境配置:

還是實驗1中的dns服務器,現需要配置區域 alitaobao.com 的正向解析區域

服務器ip地址:192.168.65.155 靜態ip 另外還一塊網卡通過dhcp連接外部網絡

http服務器兩臺且處於運行狀態

192.168.65.150 頁面 web1.alitaobao.com

192.168.65.128 頁面 web2.alitaobao.com

實現步驟:

1 在主配置文件中添加區域

vim /etc/named.rfc1912.zones

zone "alitaobao.com" IN {

type master;

file "alitaobao.zone";

};

2 配置區域解析庫文件

vim alitaobao.zone

$TTL 86400

@ IN SOA ns1.alitaobao.com. fun.alitaobao.com. (

2018060201

1H

10M

3D

1D )

IN NS ns1

IN NS ns2

ns1 IN A 192.168.65.155

ns2 IN A 192.168.65.160

www IN A 192.168.65.128

IN A 192.168.65.150

@ IN A 192.168.65.128

IN MX 5 mx1

IN MX 10 mx2

mx1 IN A 192.168.65.155

mx2 IN A 192.168.65.155

* IN A 192.168.65.128

3 修改文件屬組和權限

chown :named /var/named/alitaobao.zone

chmod 640 /var/named/alitaobao.zone

4 檢查配置:

named-checkconf 檢查主配置文件語法錯誤

named-checkzone "alitaobao.com" /var/named/alitaobao.zone

檢查區域解析庫文件語法是否錯誤

5 重讀配置文件:

使用rndc reload 命令重讀配置文件

6 使用dig -t A www.alitaobao.com @192.168.65.155 測試解析

7 在另外一臺虛擬機上測試打開www.alitaobao.com 是否輪詢

修改/etc/resolv.conf 默認dns為192.168.65.155

使用curl www.alitaobao.com 測試頁面

結果:隨機打開web1 和web2 頁面

測試命令:

dig:

dig [-t type] name [@server] [query options]

只用於測試dns系統,不會查詢本地hosts文件解析

查詢選項:

+[no]trace 跟蹤解析過程:dig +trace baidu.com

不管是否制定dns服務器,始終從根開始

+[no]recurse:進行遞歸解析

測試反向解析:

dig -x IP

dig -t ptr 反寫ip.in-addr.arpa

模擬區域傳送:

dig -t axfr zone_name @server

dig -t axfr alitaobao.com @192.168.65.155

dig -t axfr 65.168.192.in-addr.arpa @192.168.65.155

dig -t NS . @a.root-servers.net

host:

host [-t tpye] name [SERVER]

例如:

host -t NS alitaobao.com 192.168.65.155

host -t axfr alitaobao.com 192.168.65.155

host alitaobao.com

nslookup:

nslookup [-option] [name|-] [server]

例如:

nslookup www.alitaobao.com [192.168.65.155]

交互式命令:

nslookup

>server IP 用於切換dns服務器

>set q=type 用於切換查詢類型

>FQDN 要查詢的名稱

rndc命令使用:

用法:rndc COMMAND

COMMAND:

reload 從在主配置文件和區域解析庫文件

reload ZONE_NAME 重載指定區域解析庫文件

retransfer ZONE_NAME 手動啟動區域傳送,而不管序列號是否增加

notify ZONE_NAME 重新對區域傳送發通知

reconfig 重載主配置文件

querylog 開啟或關閉查詢日誌文件/var/log/message

trace 遞增debug一個級別

trace LEVEL 指定使用的debug級別

notrace 將調試級別設置為0

flush 清空dns服務器的所有緩存記錄

反向區域:

區域名稱:網絡地址反寫.in-addr.arpa.

172.15.100. ---> 100.15.172.in-addr.arpa.

1 定義區域

2 定義區域解析庫文件

註意:不需要MX 以PTR記錄為主

實驗3:配置反向區域解析:

1 定義區域

vim /etc/named.rfc1912.zones

zone "65.168.192.in-addr.arpa" IN {

type master;

file "65.168.192.in-addr.arpa.zone";

};

2 定義區域解析庫文件

vim /var/named/65.168.192.in-addr.arpa.zone

$TTL 86400

@ IN SOA ns1.alitaobao.com. admin.alitaobao.com. (

2018060201

1H

10M

3D

1D )

IN NS ns1.alitaobao.com.

IN NS ns2.alitaobao.com.

128 IN PTR www.alitaobao.com.

150 IN PTR www.alitaobao.com.

3 修改權限並重載配置文件

chown :named /var/named/65.168.192.in-addr.arpa.zone

chmod 640 /var/named/65.168.192.in-addr.arpa.zone

rndc reload

4 測試:

dig -x 192.168.65.128 @192.168.65.155

dig -t ptr 128.65.168.192.in-addr.arpa @192.168.65.155

host -t ptr 192.168.65.128

註意:host命令查詢ptr記錄可以不用反寫ip

允許動態更新:未復現

? 指定的zone語句塊中:Allow-update {any;};

? chmod 770 /var/named

? setsebool -P named_write_master_zones on

此命令需要開啟selinux

未復現

? nsupdate

? >server 127.0.0.1

? >zone magedu.com

? >update add ftp.magedu.com 88888 IN A 8.8.8.8

? >send

? >update delete www.magedu.com A

? >send

? 測試:dig ftp.magedu.com @127.0.0.1

ll /var/named/magedu.com.zone.jnl

cat /var/named/magedu.com.zone

從服務器:

註意事項:

1 應該為一臺獨立的名稱服務器

2 主服務器的區域解析庫文件中必須有一條NS記錄指向從服務器

3 從服務器只需要定義區域,而無需提供解析庫文件,解析庫文件應該放置於

/var/named/slaves/ 目錄中

4 主服務器得允許從服務器做區域傳送

5 主從服務器時間應該同步,可通過ntp進行

6 bind程序的版本應該保持一致,否則,應該從高主低

7 如主服務器down掉之後,過期時間到了過了但是服務器還沒上線

從服務器將會停止服務

定義從區域的方法:

zone "ZONE_NAME" IN {

type slave;

masters { MASTER_IP; };

file "slaves/ZONE_NAME.zone.slave";

};

實驗4:配置正反向從服務器,並實現主從同步

1 開啟另外一臺虛擬機,ip為192.168.65.160 ,作為從dns服務器使用

2 使用yum install bind 安裝bind

3 修改主配置文件,監聽端口,允許訪問的列表,dnssec

4 定義正向區域zone

vim /etc/named.rfc1912.zones

zone "alitaobao.com" IN {

type slave;

masters { 192.168.65.155; };

file "slaves/alitaobao.com.zone.slave";

};

5 定義反向區域zone

zone "65.168.192.in-addr.arpa." IN {

type slave;

masters { 192.168.65.155; };

file "slaves/65.168.192.in-addr.arpa.zone.slave";

};

6 開啟服務,systemctl start named

7 查看區域解析庫文件是否已同步

[root@3-centos7 /var/named/slaves]#ls

65.168.192.in-addr.arpa.zone.slave alitaobao.com.zone.slave

還可以通過日誌查看:

tail -f /var/log/messages

也可以在主服務器中查看日誌

8 測試名字解析

dig www.alitaobao.com @192.168.65.160

dig -t MX alitaobao.com @192.168.65.160

9 主服務器修改解析,更新序列號之後,查看是否同步

使用tail -f /var/log/messages 查看已同步

主服務器修改解析,不更新序列號,查看是否同步

未同步

主服務器單獨修改序列號,未更新解析記錄,查看是否同步

會同步

主服務器設置allow-transfer { none; }; 且修改解析和序列號:

查看日誌:

主服務器端 zone transfer 'alitaobao.com/IXFR/IN' denied

從服務器端 failed while receiving responses: REFUSED

實驗5:實現子域授權

使用另外一臺虛擬機192.168.65.150 作為子域 baidu.alitaobao.com 的dns服務器

1 在父域上授權子域:

vim /var/named/alitaobao.zone

添加兩條記錄

baidu IN NS ns1.baidu

ns1.baidu IN A 192.168.65.128

2 子域服務器修改主配置文件選項

3 子域服務器修改定義區域,增加

zone "baidu.alitaobao.com" {

type master;

file "baidu.alitaobao.com.zone";

};

4 子域服務器定義區域解析庫文件:

$TTL 86400

@ IN SOA ns1.baidu.alitaobao.com. fun.baidu.taobao.com. (

2018050201

1D

30M

7D

1D )

IN NS ns1

ns1 IN A 192.168.65.150

www IN A 192.168.65.128

* IN A 192.168.65.128

5 啟動服務

6 測試:

dig www.baidu.alitaobao.com @192.168.65.150

7 註意:需關閉dnssec功能

實驗6:實現區域轉發和全局轉發

1 在測試機查詢 dig ftp.alitaobao.com @192.168.65.150

由於alitaobao.com 這個區域只是私自定義,並未在互聯網上註冊

所以通過baidu.alibaidu.com這個區域解析服務器查詢時,由於子域並不知道父域ip

所以會從根域開始自上而下搜尋

當然找不到

2 子域服務器設置區域轉發,在192.168.65.150服務器上將區域alitaobao.com 轉向192.168.65.155

vim /etc/named.rfc1912.zones

zone "alitaobao.com" IN {

type forward;

forward only;

forwarders { 192.168.65.155; };

};

執行rndc reload

3 測試機測試dig ftp.alitaobao.com @192.168.65.150

會發現依然無法查看,註意此時需要子域服務器執行 rndc flush 清除緩存即可

4 設置全局轉發:

在子域dns服務器主配置文件中定義全局配置:

forward only;

forwarders { 114.114.114.114;};

同時將上一步中區域轉發註釋掉或者刪除

執行rndc reload

執行rndc flush

5 測試機上測試 dig www.baidu.com @192.168.65.150 OK

測試 dig ftp.alitaobao.com @192.168.65.150 NOT OK

證明114 無法解析 ftp.alitaobao.com

再次開啟區域轉發,reload flush

然後再次測試 dig ftp.alitaobao.com @192.168.65.150 OK

所以: 區域轉發優先級高於全局轉發

bind 中的ACL

ACL: 訪問控制列表

把一個或多個地址歸並為一個集合,並通過一個統一的名稱調用

格式:

acl list_name {

ip;

net;

...

};

示例:

acl mymet {

172.20.0.0/16;

10.10.10.10;

};

系統自帶列表: none,any,localhost,localnet

註意: 只能先定義,後使用

因此一般定義在配置文件中,處於options的前面

bind view:

view: 視圖,用於實現只能DNS

一個bind服務器可以定義多個view,每個view中可以定義一個或多個zone

每個view用來匹配一組客戶端

多個view內可能需要對同一個區域進行解析,但使用不同的區域解析庫文件

註意:

1 一旦啟用了view,所有的zone都只能定義在view中,

2 僅在允許遞歸請求的客戶端所在view定義根區域

3 客戶端請求到達時,是自上而下檢查每個view所服務的客戶端列表

格式:

view VIEW_NAME {

match-clients { LIST ;};

zone "alitaobao.com" IN {

type master;

file "alibaidu.com.zone";

};

include "/etc/named.rfc1912.zones"

};

實驗7: 通過view實現智能dns

192.168.65.160 充當dns服務器,解析區域為baidu.com

要求:

當192.168.65.128訪問www.baidu.com時,指向1.1.1.1

當192.168.65.150訪問www.baidu.com時,指向2.2.2.2

當192.168.65.155訪問www.baidu.com時,指向3.3.3.3

步驟:

1 修改配置文件,vim /etc/named.conf 修改 必要選項

如: listen-on allow-query dnssec

2 定義acl

acl list128 {

192.168.65.128;

};

acl list150 {

192.168.65.150;

};

acl list155 {

192.168.65.155;

};

3 定義view,以及各個view中定義的區域"baidu.com"

view huazhongnet {

match-clients { list128; };

zone "baidu.com" IN {

type master;

file "huazhongnet.zone";

};

include "/etc/named.rfc1912.zones";

};

view huanannet {

match-clients { list150; };

zone "baidu.com" IN {

type master;

file "huanannet.zone";

};

include "/etc/named.rfc1912.zones";

};

view huabeinet {

match-clients { list155; };

zone "baidu.com" IN {

type master;

file "huabeinet.zone";

};

include "/etc/named.rfc1912.zones";

};

4 將根域 "." 定義到/etc/named.rfc1912.zones中

zone "." IN {

type hint;

file "named.ca";

};

5 定義區域配置庫文件 huazhongnet.zone,以及屬組、權限修改

vim /var/named/huazhongnet.zone

$TTL 86400

@ IN SOA ns1.baidu.com. fun.baidu.com. (

2018060201

1D

1H

7D

1D )

IN NS ns1

ns1 IN A 192.168.65.160

@ IN A 1.1.1.1

www IN A 1.1.1.1

* IN A 1.1.1.1

定義區域配置庫文件 huanannet.zone,以及權限修改

$TTL 86400

@ IN SOA ns1.baidu.com. fun.baidu.com. (

2018060201

1D

1H

7D

1D )

IN NS ns1

ns1 IN A 192.168.65.160

@ IN A 2.2.2.2

www IN A 2.2.2.2

* IN A 2.2.2.2

定義區域配置庫文件 huanannet.zone,以及權限修改

$TTL 86400

@ IN SOA ns1.baidu.com. fun.baidu.com. (

2018060201

1D

1H

7D

1D )

IN NS ns1

ns1 IN A 192.168.65.160

@ IN A 3.3.3.3

www IN A 3.3.3.3

IN A 3.3.3.3

chgrp named /var/named/*

chmod 640 /var/named/*

6 啟動服務並測試

在三臺測試機上分別執行 host www.baidu.com 192.168.65.160

結果OK

編譯安裝bind:---------------------------------------------------------------------

編譯安裝步驟:

1 建立named組和named賬號

groupadd -g 53 -r named

useradd -r -g named -u 53 named

2 安裝開發包組

group install "development tools"

3 下載源碼包,並解壓,cd到解壓目錄

4 less README,執行./configure 查看安裝選項

5 執行configure程序

./configure --prefix=/usr/local/bind9 --without-openssl --without-ipv6 \

--sysconfdir=/etc/named --enable-threads --disable-chroot

6 make

7 make install

通用安裝後配置:

1 添加PATH路徑

vim /etc/profile.d/named.sh

PATH=/usr/local/bind9/bin:/usr/local/bind9/sbin:$PATH

2 添加庫文件

vim /etc/ld.so.conf.d/name.conf

/usr/local/bind9/lib

ldconfig -v

ln -sv /usr/local/bind9/include /usr/include/named

3 添加man 文檔路徑

vim /etc/man.conf man_db.conf 分別對應centos6 centos7

添加一行路徑記錄

MANPATH /usr/local/bind9/share/man

添加、編輯配置文件:

1 編輯主配置文件

vim /etc/named/named.conf

options {

directory "/var/named/";

dnssec-enable no;

dnssec-validation no;

recursion yes;

};

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; };

};

2 添加區域解析庫文件

mkdir /var/named

cd /var/named

生成named.ca

dig +norec @a.root-servers.net. > named.ca

生成named.localhost

vim named.localhost

$TTL 86400

@ IN SOA ns1.localhost. fun.localhost. (

01

1D

1H

3D

1D )

IN NS localhost.

localhost. IN A 127.0.0.1

生成named.loopback

vim named.loopback

$TTL 86400

@ IN SOA localhost. fun.localhost. (

01

1D

1H

3D

1D )

IN NS @

IN A 127.0.0.1

IN PTR localhost.

3 修改配置文件權限

chgrp -R named /etc/named/

chgrp -R named /var/named/

chmod -R 640 /etc/named/*

chmod -R 640 /var/named/*

註意:

不要修改主目錄/etc/named /var/named 權限

如需修改,也必須保持named用戶對主目錄有rx權限

啟動和測試服務:

man named 獲取使用選項

named-checkconf 檢查配置文件語法是否錯誤

named-checkzone "zone" /zonefile 檢查區域解析庫文件語法是否錯誤

named -u named -f -g 前臺啟動,查看是否正常

如無異常使用 named -u named 啟動後臺執行

如沒有添加區域,則默認為一臺緩存dns服務器

註意:編譯安裝啟動的程序無法通過systemctl 控制啟動和關閉

如通過後臺執行,需要關閉程序,需要使用kill命令

例如:

killall -1 named 重讀配置文件

killall named 關閉服務

如果最小化安裝,默認沒有killall的情況下

1 直接使用kill 配合ps命令

2 yum install psmisc 安裝即可

使用rndc:

生成key:

rndc-confgen -r /dev/urandom > /etc/named/rndc.conf

寫入主配置文件:

tail /etc/named/rndc.conf >> /etc/named/named.conf

刪除註釋:

vim /etc/named/named.conf

刪除寫入key文件那幾行前面的# 最後一行 # End of named.conf 保留#

重讀配置文件:

killall -1 named

測試使用rndc

rndc status

壓力測試:

編譯壓力測試工具:

cd contrib/queryperf/

./configure

make

cp queryperf /usr/bind9/bin

編輯測試文件:

vim test.txt

www.magege.com A

....

一系列解析操作集合,視機器配置,一般10W行左右即可

測試:

queryperf -d test.txt -s 192.168.65.155

打開日誌功能測試:

rndc querylog

rndc reload

queryperf -d test.txt -s 192.168.65.155

wc -l /var/log/message

筆記整理完成時間:2018年6月5日09:33:19

第21章,DNS服務