DNS服務——域名解析轉發 和 條件轉發


前言

有一台Linux機器作為DNS服務器,查看這台機器上的DNS文件,發現指向互聯網上的DNS服務器。

[root@ziqiang named]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 222.222.222.222
View Code

那么問題來了,可以把這些互聯網上的DNS服務器刪掉,換成Linux服務器本身的IP嗎? 換句話說就是讓DNS服務器指向自己。

回答前言的問題

完全可以。

DNS服務安裝完畢后,他就有根提示,天生就知道互聯網上13個根DNS服務器。只要安裝DNS服務的那台機器可以訪問Internet,就完全可以解析全球域名。

因此DNS服務器的/etc/resolv.conf完全可以指向自己,對於未知域名,DNS服務器上的DNS服務會自己找根DNS服務器進行域名解析,並把解析結果保存在本地DNS服務器上。當然,/etc/resolv.conf指向Internet上的DNS服務器更是沒毛病。

域名解析轉發

回顧下DNS域名解析的過程

當內網計算機使用域名上網的時候,會先找該局域網內的DNS服務器,即本地DNS服務器。由於本地DNS服務器上配置了zone,他知道自己掌管了哪些域名。所以,如果客戶機恰好請求的這些域名就是本地DNS管理的,本地DNS直接回復客戶機。如果本地DNS服務器,不知道你請求的域名,他會直接向根DNS請求,然后經過DNS遞歸查詢,最終將域名解析結果返回給客戶機。

域名解析轉發(foward)

上面DNS域名解析是正常的流程,也是很多大學教材里面講解DNS域名解析過程用到的。下面介紹域名解析轉發

考慮如下場景,母公司內部配置有本地DNS服務器,負責解析母公司內部服務器域名以及互聯網上的域名。子公司與母公司物理距離較遠,兩地使用專線鏈接,專線帶寬不高。子公司內部計算機不直接連接互聯網。

假如不在子公司內部設置DNS服務器,子公司內部計算機對母公司內部域名解析請求以及互聯網上域名解析請求都會交由母公司的DNS服務器(為啥子公司電腦不直接填互聯網上的DNS?1.解析不到母公司私網的服務器 2.公司也不可能允許你這么做)。這部分域名解析流量會嚴重占用專用鏈路的帶寬,導致網絡阻塞。

在子公司內部設置一個DNS服務器,但是這個DNS服務器又有點不同。對於自己不知道域名,他並沒有請求互聯網上的根DNS服務器,而是把域名解析的流量轉發給了母公司DNS服務器,這樣有效降低了專用鏈路上域名解析的帶寬占用。這種場景就是DNS轉發。

DNS轉發還有2種場景(或者說2個參數)

foward only  子公司DNS服務器指向母公司DNS服務器請求DNS解析。如果母公司DNS服務器掛了 或 子公司到母公司鏈路故障 或 母公司DNS上不了網(子公司DNS服務器可以解析母公司內網服務器域名),子公司DNS服務器無法解析Internet域名

foward first   子公司DNS服務器優先指向母公司DNS服務器,如果母公司DNS服務器連不上(比如子公司到母公司的鏈路故障)會使用子DNS服務器保存的根DNS服務器來解析域名(這時候無法解析母公司內網域名,可以解析Internet域名)。

如果子公司到母公司之間鏈路是好的,單純母公司DNS服務器上不了網。子公司可以解析母公司內網服務器域名,但是無法解析Internet域名。

配置域名解析轉發

在子公司DNS服務器上修改配置文件named.conf

[root@ziqiang 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.
//

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     { 192.168.80.0/24;192.168.90.0/24;};
    recursion yes;
    
    forward only; 
    forwarders {192.168.60.111;};
    
    dnssec-enable no;
    dnssec-validation no;
    dnssec-lookaside no;

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

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

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

zone "." IN {
    type hint;
    file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
View Code

針對這個文件主要注意如下兩個字段

forward only; 
forwarders {192.168.60.111;};
View Code

forward only;  表明DNS轉發模式

forwarders {192.168.60.111;};  轉發給母公司哪個DNS服務器,可以設置多個

重啟nemed服務 service named restart

域名解析條件轉發

forward only;  

forwarders {192.168.60.111;};  

上面講域名解析轉發的時候添加的2個字段是針對所有域名的,還可以設置條件轉發。

考慮如圖場景,有2個DNS服務器,分別負責abc.com和xyz.com域名。對於左邊DNS服務器下面的客戶機,解析xyz.com域名時,通過條件轉發可以直接找右邊DNS服務器,而不是直接找根DNS服務器。

在左邊DNS服務器上編輯文件/etc/named.conf加上下面一段話

[root@WebServer ~]# vi /etc/named.conf
zone "xyz.com." {
        type forward;
        forwarders { 192.168.80.111;};
};
View Code

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM