日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux运维实战之DNS的高级配置(转发器、视图等)

發布時間:2023/12/4 linux 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux运维实战之DNS的高级配置(转发器、视图等) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上次博文我們具體配置了一臺DNS服務器并實現了主輔之間的區域傳送,本次博文我們來看看DNS的一些高級配置。

在進行DNS的高級配置之前,必須要理解DNS的原理(參見http://sweetpotato.blog.51cto.com/533893/1596973)

并且對DNS的基礎配置也要熟練(參見http://sweetpotato.blog.51cto.com/533893/1598225)

【本次博文的主要內容】

  • 子域授權
  • 轉發域
  • acl
  • 視圖(view)

【實驗環境】


實驗說明:

本次博文的實驗只做正向解析;

VMware station 10

BIND服務器:兩臺CentOS 6.4虛擬機做主輔DNS

windows 7物理機做客戶端

Domain Name:test.com.???????? 192.168.80.0/24

主DNS:Master.test.com.???????? 192.168.80.11

輔助DNS:Slave.test.com.???????? 192.168.80.13

web主機:www.test.com.? ??????? 192.168.80.11?? 192.168.1.201?? 192.168.80.14

ftp主機:ftp.test.com.? CNAME?? www.test.com.

mx郵件服務器:mx.test.com.? 192.168.80.11

######################################規劃子域##################################################

子域:SubZone.test.com.

子域DNS:ns1.SubZone.test.com.??? 192.168.80.12

web主機:www.SubZone.test.com.??? 192.168.80.12

imap:CNAME?? www


一、子域授權:

【DNS服務器的主輔配置】

按照上次博文的介紹,將主輔DNS的基本配置做好(參考http://sweetpotato.blog.51cto.com/533893/1598225)

主DNS配置好后,test.com區域文件如下所示:

輔助DNS上的區域文件是從主DNS復制過去的,如下所示:

所有資源記錄都有了哈。下面我們來配置子域DNS,并在其父域DNS上完成授權。

【子域授權】

子域授權的基本理論在我的前兩次博文中具體介紹過了,這里不再贅述(參見http://sweetpotato.blog.51cto.com/533893/1596973)。

子域授權創建步驟:

第一步、劃分子域:

這里,我們劃分的子域為SubZone.test.com. 在192.168.80.12主機上,配置子域的區域解析文件:

(1)修改主配置文件,在/etc/named.rfc1912.zones文件中添加如下條目:

(2)創建“SubZone.test.com.zone”區域解析文件,并修改屬組和權限:

(3)檢查主配置文件和區域文件的語法錯誤(語法檢查沒問題了別急著啟動服務或重新載入區域文件,需要先到父域DNS上完成授權)

[root@Centos ~]# named-checkconf [root@Centos ~]# named-checkzone "SubZone.test.com" /var/named/SubZone.test.com.zone zone SubZone.test.com/IN: loaded serial 2015012001 OK

第二步、完成授權:

(1)在主DNS(192.168.80.11主機)上完成子域的授權,即在區域文件/var/named/test.com.zone中添加子域相應的NS記錄和粘附A記錄:

(2)檢查區域文件語法錯誤并重新加載主DNS的區域文件:

[root@Centos named]# named-checkzone "test.com" test.com.zone zone test.com/IN: loaded serial 2015012001 OK [root@Centos named]# rndc reload server reload successful

(3)回到子域DNS,啟動named服務或重新加載區域文件;

至此,子域授權的過程結束。

【驗證子域授權】:

1、回到父域DNS,查看區域解析情況:

授權是自上而下的哈,父域能知道子域的存在。

Tis如果檢查區域文件語法錯誤時出現了以下情況:

[root@Centos named]# named-checkzone "test.com" test.com.zone zone test.com/IN: SubZone.test.com/NS 'ns1.SubZone.test.com' extra GLUE A record (192.168.80.12) zone test.com/IN: SubZone.test.com/NS 'ns1.SubZone.test.com' missing GLUE A record (192.99.166.230) zone test.com/IN: loaded serial 2015012004 OK 隨后,在父域DNS用dig命令查詢子域SubZone.test.com的NS記錄時,只給出了NS記錄而沒有對應的粘附A記錄。這種情況是由于/etc/resolv.conf配置了多個DNS(且能夠與公網通信),并且主機配置了多塊網卡造成。將/etc/resolv.conf文件中的其它記錄都注釋掉,把DNS指向本機IP地址即解決問題(這是我遇見的情況,大家遇到的情況可能有所不同,歡迎多交流)。

2、在父域的輔助DNS(192.168.80.13主機)上,查看區域解析情況:

3、回到子域DNS,查看區域解析情況:

能夠解析,而且是權威應答哈。思考一下,子域DNS能夠解析父域嗎?我你們來試一下哈!

結論:授權是自上而下的,上級(父域)知道下級(子域)的存在,而下級(子域)并不知道上級(父域)的存在(因此子域的解析從根開始層層往下迭代)

那如何才能讓子域解析父域呢?通過轉發!


二、DNS名稱解析轉發器:

1、問題的引入:什么是轉發器?為什么需要轉發器?

擔當DNS名稱解析的服務器被稱為“DNS轉發器”。轉發器也是網絡上的DNS服務器,用來將內部DNS名稱的DNS查詢轉發給該網絡外的DNS服務器。

如果不將特定DNS服務器指定為轉發器,所有DNS服務器可使用其根提示在網絡外發送查詢。這樣,許多內部可能非常重要的DNS信息都可暴露在公網上。除了安全和隱私問題,該解析方法可導致大量的外部通信,且通信費用昂貴,對于慢速Internet連接的網絡或Internet服務成本很高的公司來說效率低下。而將DNS服務器指定為轉發器時,轉發器將負責處理外部通信,從而將DNS服務器有限地暴露給公網。轉發器將建立外部DNS信息的巨大緩存,因為網絡中的所有外部DNS查詢都是通過它解析的。你在很短的時間內,轉發器將使用該緩存數據解析大部分外部DNS查詢,從而減少網絡的Internet通信與DNS客戶端的響應時間。

2、轉發的原理:

轉發是一種鏈式結構,如下圖所示:

(1)當本地DNS服務器(也是轉發器)收到查詢時,它會嘗試使用它主持和緩存的主要和輔助區域解析該查詢;

(2)如果不能使用本地數據解析查詢,此時它作為客戶端,會將查詢轉發給外網DNS服務器;

(3)本地DNS(轉發器)收到客戶端的請求后會等待一段很短的時間,等待來自外網DNS的應答;

(4)對于外網DNS來說,它接收到的查詢請求是遞歸查詢,此時,它自己需要向外層層迭代找到最終答案返回給轉發器(此時轉發器作為DNS客戶端)

(5)轉發器將外網DNS返回的查詢結果送到客戶端(非權威答案),完成解析過程。

注:轉發的前提——接收轉發請求的服務器(這里是外網DNS)必須能夠為請求者(這里是本地DNS,也是轉發器)做遞歸查詢;

3、轉發的類型:

??? (1)無條件轉發:轉發所有針對非本機負責解析的區域的請求;?
???????

#在主配置文件/etc/named.conf的全局選項中添加如下內容: options { forwarders { ip; }; forward ; };
??? (2)條件轉發:僅轉發對特定區域的請求(即轉發域); zone "區域名稱" IN {type forward; forwarders { ip; }; forward ; };

【舉例說明】

######################################規劃轉發器#################################################

上面的例子中,子域DNS(192.168.80.12主機)無法與外網通信,且無法解析父域;

輔助DNS服務器(192.168.80.13主機)能夠與外網通信,現在將其作為子域DNS的轉發器;

1、無條件轉發:在子域DNS上設置轉發,讓子域能夠解析父域且能夠通過轉發器解析公網的查詢:

第一步、在子域DNS上配置轉發。修改主配置文件/etc/named.conf,實現無條件轉發即轉發所有非本機負責解析的區域的請求:

第二步、重新加載配置文件,并清空DNS緩存:

[root@Centos ~]# rndc reconfig [root@Centos ~]# rndc flush

第三步、用dig命令進行測試,看看通過轉發子域是否能夠解析父域:

第四步、用dig命令測試,看看通過轉發能否解析外網的查詢:

可以看出,通過無條件轉發,可以解析針對非本地負責的區域的查詢哈。

現在假設這樣一個場景:

如果子域DNS能夠與外網通信而轉發器DNS服務器(192.168.80.13主機)不能與外網通信,并且子域DNS能夠根據根提示做DNS查詢,那么將轉發選項設置為“first”,結果怎樣呢?

(1)設置外網網關,讓子域DNS服務器能夠與外網通信:

(2)在轉發器DNS服務器(192.168.80.13主機)上,設置網關,讓其無法與外網通信:

(3)在子域DNS上修改主配置文件,把轉發選項改為”first“:

(4)重新加載子域DNS的配置文件并清除DNS緩存:

(5)用dig命令測試,看是否還能夠解析外網的區域:

能夠解析哈,說明不能從轉發器查詢外網之后,它自己用根提示出去迭代查詢到了結果。

2、條件轉發:配置轉發域,使得只對test.com域的查詢能夠通過轉發器解析:

第一步、修改主配置文件/etc/named.conf,將上例中的無條件轉發選項注釋掉:

第二步、修改/etc/named.rfc1912.zone,配置轉發域test.com:

第三步、在轉發器DNS服務器上(192.168.80.13主機),設置“允許遞歸”:

第四步、在子域DNS上用dig命令進行測試,看是否可以解析轉發域:

能夠解析哈,那現在是否可以解析baidu.com呢?試試看哈。

不能解析哈。


三、DNS的ACL配置:

1、問題的引入:為什么需要ACL?

因為安全和DNS服務器性能,如果沒有ACL,那么任何人都可以到我們的DNS服務器上做遞歸查詢,這樣是非常危險的。而且DNS的區域傳送是多主復制,如果不設置ACL,那么任何主機都可以到我們的DNS上來做完全區域傳送,這也是很危險的,而且會讓我們的DNS服務器忙死。

2、BIND的ACL:

(1)BIND中常用4個常用的控制指令:

//允許做區域傳送的指令//允許做查詢的指令//允許做遞歸查詢的ip列表,一般來說只允許給本地客戶端做遞歸查詢//用于DDNS(動態DNS:與DHCP聯動),比較危險,一般不允許更新數據文件

(2)BIND的ACL

如果allow-transfer 和 allow-query 放到區域配置中一般后期修改ip地址會非常的麻煩,所以可以定義acl訪問規則:

#對于配置文件的格式以及參數調整,具體可以查看man手冊 ,命令:man named.conf

定義acl的格式如下:

acl 名稱 定義acl規則

可以看到如上所示信息,定義格式非常簡單:使用bind訪問控制列表,明確定義一組客戶端或者一組主機并使用一個名稱來定義它們;

其中,定義的參數有四種,分別是:any、none、local、localnet

acl只有先定義才可以使用,因此acl定義必須在acl調用的最上方即放在配置文件的最上方。

【配置ACL】

在子域DNS上配置ACL,只允許本機地址127.0.0.1查詢:

(1)先定義acl:

(2)acl定義后需要應用在區域文件中(編輯區域配置文件/etc/named.rfc1912.zone):

(3)重新載入配置文件;

(4)驗證結果(在子域DNS服務器上用dig命令測試):

首先用本機的IP地址192.168.80.12來解析:

拒絕查詢哈!

然后用127.0.0.1來解析:

能夠解析哈,說明ACL起作用了。


四、通過VIEW實現智能DNS:

1、BIND VIEW是什么:

BIND的view是基于人的腦裂(brain split)原理,靈活控制哪些客戶機能看到哪個view視圖的訪問控制列表,view功能可以實現不同網段發出同樣的請求卻得到不同的DNS解析結果,可以有效的分流網絡流量,提高訪問控制能力。

2、VIEW語句的介紹:

通過view語句可以完成DNS的智能解析功能,其語法如下:?

3、配置VIEW,實現智能DNS解析:

######################################規劃VIEW##################################################

實驗拓撲還是采用子域授權的那一個,每個虛擬機上都配置了兩塊網卡(參見拓撲圖),將來自192.168.80.0/24網段的IP作為內網的主機,192.168.1.0/24網段的IP和所有其它IP作為外網的主機,用win7物理機與虛擬機通信時,訪問192.168.80.0/24網段采用的是NAT地址轉換,會將物理機的IP地址192.168.1.3轉換為192.168.80.254來訪問。使用acl來定義控制列表。

【配置VIEW】

(1)在主DNS(192.168.80.11主機)上,編輯主配置文件/etc/named.conf,配置acl和view:

options {directory "/var/named"; };acl internal { //定義acl列表,來自192.168.80.0/24網段的客戶端均為內網用戶192.168.80.0/24; };acl external { //定義acl列表,來自192.168.1.0/24網段的客戶端均為外網用戶192.168.1.0/24; };view "internal" { //內網視圖,定義了內網主機查詢所使用的區域解析庫文件match-clients { internal; };recursion yes;zone "test.com" IN {type master;file "internal.test.com.zone";}; };view "external" { //外網視圖,定義了外網主機查詢所使用的區域解析庫文件match-clients { external; };recursion yes;zone "test.com" IN {type master;file "external.test.com.zone";}; };

(2)使用named-checkconf來檢測主配置文件是否有存在語法錯誤:

[root@Centos ~]# named-checkconf [root@Centos ~]#

(3)分別創建內外網用戶訪問test.com域服務器所使用的正向解析區域文件:

內網(internal)的zone文件/var/named/internal.test.com.zone :

外網(external)的zone文件/var/named/external.test.com.zone :

(4)將internal和external所使用的解析區域數據文件的屬組及權限分別改為named和640:

[root@Centos ~]# chmod 640 /var/named/internal.test.com.zone /var/named/external.test.com.zone [root@Centos ~]# chown :named /var/named/internal.test.com.zone /var/named/external.test.com.zone [root@Centos ~]# ll /var/named/*.zone -rw-r-----. 1 root named 272 Jan 23 13:01 /var/named/external.test.com.zone -rw-r-----. 1 root named 276 Jan 23 00:29 /var/named/internal.test.com.zone

(5)使用named-checkzone分別檢測internal和external所使用的區域數據文件是否存在語法錯誤;

(6)重新加載配置文件和區域文件,并打開查詢日志:

[root@Centos ~]# rndc reload server reload successful [root@Centos ~]# rndc querylog [root@Centos ~]# rndc status version: 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 CPUs found: 2 worker threads: 2 number of zones: 34 debug level: 0 xfers running: 0 xfers deferred: 0 soa queries in progress: 0 query logging is ON recursive clients: 0/0/1000 tcp clients: 0/100 server is up and running

(7)分別在192.168.80.0/24和192.168.1.0/24網段上進行測試,并查看結果:

說明:我的win7物理機的IP是192.168.1.3,DNS服務器上配置了兩塊網卡,IP地址分別為192.168.80.11和192.168.1.58

查詢日志的情況如下:

訪問的是內網視圖,物理機的IP(192.168.1.3)被轉換成了192.168.80.254;

查詢日志情況如下:

由此,通過VIEW實現了智能DNS哈。


【小結】

本次博文主要知識點:

1、DNS的子域授權:

  • 子域的概念:在域內劃分出小域即為子域。
  • 授權也稱為委派,子域授權的步驟:

(1)劃分子域

(2)完成授權

  • 授權是自上而下的過程,父域知道子域的存在并知道子域的主DNS服務器地址(父域的名稱解析庫中有子域的NS記錄和主機A記錄),而子域并不知道父域的存在,因此子域需要從根域開始查找。
  • 如果想讓子域解析父域,最簡單的辦法就是設置轉發。

2、DNS的轉發:

轉發的前提——接收轉發請求的服務器必須能夠為請求者做遞歸查詢;

(1)無條件轉發:轉發所有針對非本機負責解析的區域的請求;
#在主配置文件/etc/named.conf的全局選項中添加如下內容: options { forwarders { ip; }; forward ; };
(2)條件轉發:僅轉發對特定區域的請求(即轉發域); zone "區域名稱" IN {type forward; forwarders { ip; }; forward ; };

3、BIND的ACL:

(1)BIND中常用4個常用的控制指令:

//允許做區域傳送的指令//允許做查詢的指令//允許做遞歸查詢的ip列表,一般來說只允許給本地客戶端做遞歸查詢//用于DDNS(動態DNS:與DHCP聯動),比較危險,一般不允許更新數據文件

(2)BIND的ACL定義:

acl 名稱 定義acl規則

其中,定義的參數有四種,分別是:any、none、local、localnet

acl只有先定義才可以使用,因此acl定義必須在acl調用的最上方即放在配置文件的最上方。

4、通過視圖(view)實現智能DNS:

通過view語句可以完成DNS的智能解析功能,其語法如下:


本次博文的內容就這么多哈,下次我們給出一個綜合案例來總結下DNS的知識;歡迎各位大大拍磚~~

轉載于:https://blog.51cto.com/sweetpotato/1607383

總結

以上是生活随笔為你收集整理的Linux运维实战之DNS的高级配置(转发器、视图等)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。