4.2 DNS服務進階

DNS 轉發

全局轉發

    對非本機所負責解析區域的請求,全轉發給指定的服務器。

    在轉發服務器的主配置文件 /etc/named.conf 中設置全局轉發

options {                                                 #在全局配置中設置
	listen-on port 53 { localhost; };
	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     { localhost;any; };
	allow-transfer  { 192.168.30.174; };
	forward only;                       #設置轉發爲全部轉發
	forwarders { 192.168.30.75; };      #轉發至指定主機

    向轉發服務器請求一個不在轉發服務器卻在 192.168.30.75 上的域名

[root@CentOS69 ~]# host www.test.com 192.168.30.74
Using domain server:
Name: 192.168.30.74
Address: 192.168.30.74#53
Aliases: 

www.test.com is an alias for websver.test.com.
websver.test.com has address 192.168.30.75

    發現可以解析成功,說明成功轉發。

    向內網地址請求一個外網地址,也可以解析成功,說明這條請求也被轉發至目標服務器進行解析。

[root@CentOS69 ~]# host www.baidu.com 192.168.30.74
Using domain server:
Name: 192.168.30.74
Address: 192.168.30.74#53
Aliases: 

www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 61.135.169.125
www.a.shifen.com has address 61.135.169.121

局部轉發

    僅轉發對特定的區域的請求,比全局轉發優先級高

    在 /etc/named.rfc1912.zones 中添加

zone "test.com" IN {
	type forward;
	forward only;
	forwarders { 192.168.30.75; };
};

    重載配置文件後,只有請求 test.com 域的時候,纔會轉發至192.168.30.75,請求其他的域名,若本機沒有對應的 DNS 記錄,則會向根服務器詢問。

[root@CentOS69 ~]# host www.test.com 192.168.30.74
Using domain server:
Name: 192.168.30.74
Address: 192.168.30.74#53
Aliases: 

www.test.com is an alias for websver.test.com.
websver.test.com has address 192.168.30.75

    主配置文件中 recursion yes 如果設置爲 no,則會禁止轉發,只查找本機區域數據庫中的 DNS 記錄。

[root@CentOS69 ~]# host www.test.com 192.168.30.74
Using domain server:
Name: 192.168.30.74
Address: 192.168.30.74#53
Aliases: 

Host www.test.com.Miriam not found: 5(REFUSED)    #禁止轉發後,無法轉發查詢

DNS 服務 ACL

    bind 中內置了四種 acl 權限

none: 沒有一個主機
any: 任意主機
localhost: 本機

localnet: 本機網段內的所有主機

也可以指定 IP 地址爲acl權限。

    acl 控制指令

allow-query {}: 允許查詢的主機;白名單
allow-transfer {}:允許區域傳送的主機;白名單
allow-recursion {}: 允許遞歸的主機,建議全局使用

allow-update {}: 允許更新區域數據庫中的內容

實現智能 DNS

    修改 DNS 服務器的主配置文件

[root@CentOS74 named]# cat /etc/named.conf 
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html

acl zone1 {                    #添加acl策略
	192.168.30.69;
};

acl zone2 {
	192.168.30.174;
};

acl otherzone {
	any;
};

options {
	listen-on port 53 { localhost; };
	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     { localhost;any; };
	allow-transfer  { 192.168.30.174; };

	/* 
	 - 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;

	/* Path to ISC DLV key */
	bindkeys-file "/etc/named.iscdlv.key";

	managed-keys-directory "/var/named/dynamic";

	pid-file "/run/named/named.pid";
	session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

view view1 {                                    #聲明view
	match-clients { zone1; };               #指定此view使用那個acl策略
	include "/etc/named.rfc1912.zones1";    #指定區域數據庫文件路徑
};

view view2 {
	match-clients { zone2; };
        include "/etc/named.rfc1912.zones2";
};

view otherview {
	match-clients { otherzone; };
        include "/etc/named.rfc1912.zones";
};

include "/etc/named.root.key";
注意:
    一旦啓用了view,所有的 zone 都只能定義在 view 中;
    僅在允許遞歸請求的客戶端所在 view 中定義根區域;

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

    設置區域數據庫

[root@CentOS74 named]# ll /etc/named.rfc1912.zones*
-rw-r----- 1 root named 1187 Jun 23 20:50 /etc/named.rfc1912.zones    #對應otherzone策略
-rw-r----- 1 root named 1187 Jun 23 20:38 /etc/named.rfc1912.zones1   #對應zone1策略 
-rw-r----- 1 root named 1187 Jun 23 20:38 /etc/named.rfc1912.zones2   #對應zone2策略
[root@CentOS74 named]# cat /etc/named.rfc1912.zones* | grep jiangbowen.com.cn
zone "jiangbowen.com.cn" IN {
	file "jiangbowen.com.cn.other";    #對應不同的解析庫文件
zone "jiangbowen.com.cn" IN {
	file "jiangbowen.com.cn.zone1";
zone "jiangbowen.com.cn" IN {
	file "jiangbowen.com.cn.zone2";

然後在不同的解析庫中保存不同的 DNS 記錄就可以實現智能 DNS。

    在不同的主機上解析同一個域名,查看解析結果

[root@CentOS69 ~]# host www.jiangbowen.com.cn
www.jiangbowen.com.cn is an alias for websver.jiangbowen.com.cn.
websver.jiangbowen.com.cn has address 192.168.30.11
[root@CentOS174 ~]# host www.jiangbowen.com.cn
www.jiangbowen.com.cn is an alias for websver.jiangbowen.com.cn.
websver.jiangbowen.com.cn has address 192.168.30.22
[root@CentOS75 named]# host www.jiangbowen.com.cn
www.jiangbowen.com.cn is an alias for websver.jiangbowen.com.cn.
websver.jiangbowen.com.cn has address 192.168.30.33

DNS 測試

    rndc 命令是一個遠程管理bind的工具,監聽在 tcp 的 953端口上。

    語法:rndc 選項 動作

    選項

-b:指定目標服務器地址
-s:指定服務器
-c:指定文件作爲配置文件

-p:將命令發送至指定端口

    動作

reload: 重載主配置文件和區域解析庫文件
reload zonename: 重載區域解析庫文件
retransfer zonename: 手動啓動區域傳送,而不管序列號是否增加
notify zonename: 重新對區域傳送發通知
reconfig: 重載主配置文件
querylog: 開啓或關閉查詢日誌文件/var/log/message
trace: 遞增debug一個級別
trace LEVEL: 指定使用的級別
notrace:將調試級別設置爲 0
flush:清空DNS服務器的所有緩存記錄

    nsupdate 是一個動態DNS更新工具.可以向DNS服務器提交更新記錄的請求.它可以從區文件中添加或刪除資源記錄,而不需要手動進行編輯區文件.

    dig 命令是常用的域名查詢工具,可以用來測試域名系統工作是否正常。

    語法:dig [選項] 主機/域名

    選項

@<服務器地址>:指定進行域名解析的域名服務器;
-b<ip地址>:當主機具有多個IP地址,指定使用本機的哪個IP地址向域名服務器發送域名查詢請求;
-f<文件名稱>:指定dig以批處理的方式運行,指定的文件中保存着需要批處理查詢的DNS任務信息;
-P:指定域名服務器所使用端口號;
-t<類型>:指定要查詢的DNS數據類型;
-x<IP地址>:執行逆向域名查詢;
-4:使用IPv4;
-6:使用IPv6;

-h:顯示指令幫助信息。

    host 命令是常用的分析域名查詢工具,可以用來測試域名系統工作是否正常。

    語法:host [選項] 主機/域名

    選項

-a:顯示詳細的DNS信息;
-c<類型>:指定查詢類型,默認值爲“IN“;
-C:查詢指定主機的完整的SOA記錄;
-r:在查詢域名時,不使用遞歸的查詢方式;
-t<類型>:指定查詢的域名信息類型;
-v:顯示指令執行的詳細信息;
-w:如果域名服務器沒有給出應答信息,則總是等待,直到域名服務器給出應答;
-W<時間>:指定域名查詢的最長時間,如果在指定時間內域名服務器沒有給出應答信息,則退出指令;
-4:使用IPv4;
-6:使用IPv6.




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章