1. 程式人生 > >dns詳解(二)

dns詳解(二)

dns 子域授權 主從架構 bind 轉發區域 bind view


dns的另外一種實現方式:dnsmasq較為簡單請自行理解

一.主從架構
二.子域授權
三.轉發區域
四.bind中的安全相關配置
五.bind view視圖


一.主從架構
從s擁有和主s一樣的解析庫
註意:從服務器是區域級別的概念,從s是一個或多個區域的從s

一個區域可以為正向和反向分別配置不同的從s
AB可以互為主從:
一個是正向的主,反向的從
一個是反向的從,正向的主
AB負責一個區域
負載均衡:怎樣實現都能提供解析
方法:一半配置ns為A,另一半配置為B
方法二:在父域中定義該域的兩個NS //這樣有人請求的時候,就會有兩個NS輪流響應


配置實現:
Slave:
1.定義區域
zone “zone——name“ IN {
type slave;
file "slaves/zone_name.zone"; //只有slaves目錄中named組具有寫權限
masters { MASTERIP; };
};
named-checkconf
2.重載配置
rndc reload
systemctl reload rndc
Master:
1.確保區域數據文件中為每個服務配置NS記錄

實現 1.:
192.168.4.109:slave 正向
192.168.4.100:master 正向

Slave: //配置成為正向的從s

        yum install bind -y
        vim /etc/named.conf    
            listen-on port 53 { 192.168.4.109; };
            關閉dnssec功能
        vim /etc/named.rfc1912.zones
            zone "mt.com" IN {
                    type slave;
                    file "slaves/mt.com.zone";
                    masters { 192.168.4.100; };
            };
        named-checkconf
    service named start
    master:
        vim mt.com.zone //添加兩條記錄,已經啟動的話,需要修改序列號
                    IN      NS      ns2
            ns2     IN      A       192.168.4.109
        named-checkzone "mt.com" mt.com.zone

slave:
rndc reload //重載配置
systemctl status named.service //查看狀態信息
dig -t A www.mt.com @192.168.4.109
cat /var/named/slaves/mt.com.zone //在CnetOS7上是二進制格式,在6上是文本格式可以直接查看
測試:在主s上添加一條記錄,並修改serial
systemctl status named
sending notifies (serial 2017030102)


//第一次傳送成功,後期增量傳送未實現
原因:192.168.6.109的主機的ip地址是dhcp獲取的,受dhcp的影響,導致默認dns不是主DNS
zone mt.com/IN: refused notify from non-master: 192.168.4.113#37131

效果:master上修改序列號+rndc reload,systemctl named status //查看結果

實驗2:
192.168.4.109:slave 反向
192.168.4.100:master 反向
slave:
vim /etc/named.rfc1912.zones
zone "4.168.192.in-addr.arpa" IN {
type slave;
file "slaves/192.168.4.zone";
masters { 192.168.4.100; };
};
named-checkconf
master:
vim 192.168.4.zone
IN NS ns2.mt.com.
109 IN PTR ns2.mt.com.
named-checkzone 4.168.192.in-addr.arpa 192.168.4.zone
rndc reload
slave:
rndc reload
master:添加一個記錄,修改serial
systemctl status named

On master:
1.確保區域數據文件為每個從服務器配置NS記錄,並且在正向區域文件需要每個從服務器的NS記錄的主機名配置一個A記錄,且此後面的地址為真正的IP地址
手動區域傳送
dig -t axfr 4.168.192.in-addr.arpa
失敗總結:
1.註意:時間要同步
ntpdate命令:像同一臺服務器同步時間
2.在從s上
cat /etc/named.rfc1912.zones
zone "mt.com" IN {
type slave;
file "slaves/mt.com.zone";
masters { 192.168.4.100; };
allow-notify { 192.168.4.0/24; }; //允許這個網段內的主機發送來的通知
};

開始的時候修改為:allow-notify { 192.168.4.100; }; //只修改為單個ip,是不可以的
因為:master有多個ip:192.168.4.100,192.168.4.113,192.168.4.112等
而默認使用的發送接口,很有可能不是192.168.4.100

二.子域授權
正向解析的區域授權子域的方法

        ops.mt.com.        IN    NS    ns1.ops.mt.com.
        ops.mt.com.        IN    NS    ns2.ops.mt.com.
        ns1.ops.mt.com.    IN    A   192.168.4.11
        ns2.ops.mt.com.    IN    A   192.168.4.12

//DNS一般會建立主從,主要是為了應付突發情況

實現:
192.168.4.110 :為父域
192.168.4.100:為子域
1.192.168.4.100
vim mt.com.zone
ops IN NS ns1.ops
ns1.ops IN A 192.168.4.110
rndc reload
2.192.168.4.110
vim named.conf
listen-on port 53 { 192.168.4.110; };
allow-query { 192.168.4.0/24; }; //允許本地查詢
dnssec 關閉
sytemctl restart named
netstat -tunlp |grep named
vim named.rfc1912.zones
zone "ops.mt.com" IN {
type master;
file "ops.mt.com.zone";
};
named-checkconf
==================================================

vim ops.mt.com.zone
    $TTL 2500
    $ORIGIN ops.mt.com.
    @       IN      SOA     ns1.ops.mt.com. admin.ops.mt.com. (     
                            2018010101
                            1H
                            10M
                            1D
                            2H )
            IN      NS      ns1
    ns1      IN      A       192.168.4.110
    www     IN      A       192.168.4.109


chmod o= ops.com.zone
chgrp named ops.com.zone
rndc reload

3.測試
dig -t A www.ops.mt.com @192.168.4.109
dig -t NS ops.mt.com

三.轉發區域 //不查找根的折中方案,直接告訴你,mt.com區域的NS是誰
定義轉發
註意:被轉發的服務器必須允許為當前服務做遞歸
1.區域轉發;僅轉發對某特定區域的解析請求
zone "ZONE_NAME" IN {
type forward;
forward {first|only};
forwarders {SERVER_IP};
};

first:首先轉發;轉發器不在時,自行去叠代查詢
only:只轉發

2.全局轉發 //本地沒有定義的區域zone的查詢請求,統統轉給某轉發器
named.conf
options {
foward only;
forwarders { 192.168.4.100; };
...
}
只要不是自己負責的區域,就轉發
先查找zone,如果沒有定義,就直接轉發


四.bind中的安全相關配置
acl:訪問控制列表;把一個或多個地址歸並為一個命名的集合,隨後通過此名稱即可對此集合內的所有主機實現統一調用;

acl acl_name {
ip;
net/prelen;
};

示例:
acl mynet {
192.168.4.0/24;
127.0.0.0/8;
};

bind的四個內置acl
none:沒有一個主機
any:任意主機
local:本機
localnet:本機所在的IP所屬的網絡;
訪問控制指令:
allow-query {}; 允許查詢的主機,白名單
allow-transfer {};允許向哪些主機做區域傳送;默認向所有主機,master應該指定為從s,從s應該指定為none//因為從s不需要傳送給別人
;允許我向誰傳送
//以上連個可以加載zone{單個區域}或者options{全局}中都可以
allow-recursion {};允許哪些主機向當前DNS服務器發起遞歸請求的
recursion yes ; 允許所有主機遞歸
註意:只有允許遞歸的才允許轉發,否則你轉發過去,人家不給你轉發,沒吊用
allow-update{ none; } ;DDNS,允許動態更新區域數據庫文件中的內容
建議關閉,會更改記錄
notify yes //允許所有人給我發送通知
allow-notify { 192.168.4.0/24; }; //記得通知我


示例1:禁止區域傳送
1.master:192.168.4.100

        vim /etc/named.conf
            acl mynet {
                    192.168.4.100;
                    192.168.4.111;
            }       
        vim named.rfc1912.zone
            zone "mt.com" IN {
                    type master;
                    allow-transfer { mynet; };
                    file "mt.com.zone";
            };

named-checkconf
rndc reload
2.slave:192.168.4.109
dig -t axfr mt.com @192.168.4.100

五.bind view 視圖
Router:eth0:外網--eth1:內網
對內部一個服務器的解析,內網的解析為內網地址,外網的需要解析為外網的ip
//brain-split :同一個主機名對內網和外網解析成不同的ip地址

    view VIEW_NAME {
        zone 
        zone
        zone
    }
    
    view internal IN {
        match-clients { 192.168.1.0/24; };
        zone "mt.com" IN {
            type master; 
            file "mt.com/internal";
        };
    };
    view external IN {
        match-clients { any; };
        zone "mt.com" IN {
            type master;
            file "mt.com/external";
        };
    };





本文出自 “黑馬騰空” 博客,請務必保留此出處http://hmtk520.blog.51cto.com/12595610/1983910

dns詳解(二)