dns詳解(二)
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
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詳解(二)