dns 視圖
Berkeley Internet Name Domain (BIND) --伯克利網路名字域
bind 9 版本加入了視圖功能
CDN 內容分發網路
將網站源伺服器中的內容存儲到分佈於各地的CDN網路節點上,通過智能網路流量分配控制系統,
將終端用戶的訪問請求自動指向健康可用且距離本地最近的CDN專用伺服器上,以提高用戶訪問
的響應速度和服務的可用性,改善互聯網上的服務質量.
緩存伺服器 + 智能DNS(DNS view)
IP庫如何獲得?
IANA(互聯網數字分配機構,internet assigned numbers authority)
ARIN (American registry for internet numbers)
北美,南美
RIPE
歐洲,中東,北非
APNIC
亞洲,大洋洲
ftp.apnic.net ripe
[root@li ~]# ls /share/soft/dns/
china crtc howto_ripe_dbase wangtong.txt
cnc dianxin.txt ripe-dbase-client-v3.tar.gz
--IP庫的下載方法寫在此文件里
[root@li dns]# cat /share/soft/soft/dns/howto_ripe_dbase
wangtong
shell> ./whois3 -h whois.apnic.net -l -i mb MAINT-CNCGROUP > /var/cnc
dianxin
shell> ./whois3 -h whois.apnic.net -l -i mb MAINT-CHINANET > /var/chinanet
tietong
shell> ./whois3 -h whois.apnic.net -l -i mb MAINT-CN-CRTC > /var/crtc
下載下來后的文件,需要經過grep,awk,sed和手動的處理
DNS view
根據你訪問過來的IP對應ACL列表來判斷,從而解析到不同的伺服器主機
在CDN中應用很多,也是解決目前區域間帶寬小和延遲大的問題的一種方法.
DNS 視圖
view優點:
優化訪問速度
成本低,無需額外設備
[root@li ~]# yum install bind* -y
實驗前準備:
1,主機名
2,時間同步
3,關閉iptables,selinux
iptables 的關閉:
iptables -F
iptables -X
iptables -Z
chkconfig iptables off
selinux 的關閉:
vim /etc/selinux/config
SELINUX=disabled --確認為disabled,如果不是則改成disabled,但需要reboot電腦才能生效
視圖的在DNS里的配置原理:
每一個view由match-clients來匹配網段,如:
match-clients {10.1.1.0/24;20.1.1.0/24}
--表示只有10.1.1和20.1.1網段可以訪問此view
--那麼因為定義的網段可能有很多,使用了acl,定義方法如下
acl "internalnet" {10.1.1.0/24;20.1.1.0/24;30.1.1.0/24}
view "internel" {
match-clients { "internalnet"; };
};
--或者使用include 來定義一個文件,在文件里寫多網段IP
vim /var/named/chroot/var/named/internalnet --在此文件里寫IP庫
include "internalnet";
view "internel" {
match-clients { internalnet;}
};
第一步:定義ACL文件 (用來放網段的文件,IP庫)
[root@li ~]# vim /var/named/chroot/var/named/dx --電信IP庫
acl dx {
2.2.2.97;
2.2.2.201; --IP寫法
200.11.22.33/24; --網段寫法
}
[root@li ~]# vim /var/named/chroot/var/named/wt --網通IP庫
acl wt {
2.2.2.100;
2.2.2.66;
100.10.20.30/24;
}
第二步:配置named.conf
[root@li ~]# vim /var/named/chroot/etc/named.conf
options {
directory "/var/named";
};
include "dx";;
include "wt";;
view "dx" {
match-clients {dx;};
zone "cluster.com" IN {
type master;
file "data/dx.cluster.com.zone";
};
};
view "wt" {
match-clients {wt;};
zone "cluster.com" IN {
type master;
file "data/wt.cluster.com.zone";
};
};
view "others" {
match-clients {any;};
zone "cluster.com" IN {
type master;
file "data/others.cluster.com.zone";
};
};
第三步:配置named.conf里定義的三個zone文件
# vim /var/named/chroot/var/named/data/dx.cluster.com.zone
$TTL 86400
@ IN SOA dx. root. (
2011080801
120
60
1D
86400 )
IN NS li.cluster.com.
li IN A 2.2.2.10 --DNS伺服器的IP
www IN A 1.1.1.1 --此為www.cluster.com域名的電信線路的IP,或者是在電信機房的伺服器的IP
# vim /var/named/chroot/var/named/data/wt.cluster.com.zone
$TTL 86400
@ IN SOA wt. root. (
2011080801
120
60
1D
86400 )
IN NS li.cluster.com.
li IN A 2.2.2.10
www IN A 2.2.2.2 --網通線路的
# vim /var/named/chroot/var/named/data/others.cluster.com.zone
$TTL 86400
@ IN SOA others. root. (
2011080801
120
60
1D
86400 )
IN NS li.cluster.com.
li IN A 2.2.2.10
www IN A 3.3.3.3 --除了電信和網通外的用戶指向的伺服器IP,如果你只有電信和網通兩個線路,可以隨意指向其中一個.但這裡是實驗,我假設有三個線路,這裡指向第三個IP 3.3.3.3
第四步:修改屬主,確保運行許可權OK
[root@li data]# chown named.named /var/named/chroot/etc/*
[root@li data]# chown named.named /var/named/chroot/var/named/*
[root@li data]# chown named.named /var/named/chroot/var/named/data/*
第五步: 重啟服務
/etc/init.d/named restart
驗證:
===================================
--主 從 DNSview 的實現
先備份或刪除或快照上面的全部配置
主DNS 從DNS
2.2.2.10 2.2.2.6;2.2.2.7;2.2.2.8 三個IP
主機名 li.cluster.com slave.cluster.com
準備工作:
兩台機都一樣要做
1,主機名
2,時間同步
3,關閉iptables,selinux
4,確保從DNS上的三個IP不要衝突
第一大步:在主域DNS上操作
1,先定義好acl文件,步驟省略
2,配置named.conf配置文件
[root@li dns]# vim /var/named/chroot/etc/named.conf
options {
directory "/var/named";
};
include "dx";;
include "wt";;
view "dx" {
match-clients { dx; 2.2.2.6; !2.2.2.7; !2.2.2.8; };
zone "cluster.com" IN {
type master;
file "data/dx.cluster.com.zone";
};
};
view "wt" {
match-clients { wt; !2.2.2.6; 2.2.2.7; !2.2.2.8; };
zone "cluster.com" IN {
type master;
file "data/wt.cluster.com.zone";
};
};
view "others" {
match-clients { any; !2.2.2.6; !2.2.2.7; 2.2.2.8; };
zone "cluster.com" IN {
type master;
file "data/others.cluster.com.zone";
};
};
第二大步:寫好主域DNS的三個zone文件,寫的內容自己定(下面省略)
[root@dns ~]# vim /var/named/chroot/var/named/data/dx.cluster.com.zone
[root@dns ~]# vim /var/named/chroot/var/named/data/wt.cluster.com.zone
[root@dns ~]# vim /var/named/chroot/var/named/data/others.cluster.com.zone
改好屬主和許可權,重啟主域的named服務
/etc/init.d/named restart
第三大步:對從DNS伺服器進行操作
1,定義acl文件,和主域的acl文件一樣,可以SCP過來
2,修改named.conf
[root@slave ~]# # vim /var/named/chroot/etc/named.conf
options {
directory "/var/named";
};
include "dx";;
include "wt";;
view "dx" {
match-clients { dx; 2.2.2.6; !2.2.2.7; !2.2.2.8; };
transfer-source 2.2.2.6; --transfer-source用來同步不同的view
zone "cluster.com" IN {
type slave; --類型為slave
view "wt" {
match-clients {wt; !2.2.2.6; 2.2.2.7; !2.2.2.8; };
transfer-source 2.2.2.7;
zone "cluster.com" IN {
type slave;
masters { 2.2.2.10; };
file "slaves/wt.salve.cluster.com.zone";
};
};
view "others" {
match-clients {any; !2.2.2.6; !2.2.2.7; 2.2.2.8; };
transfer-source 2.2.2.8;
zone "cluster.com" IN {
type slave;
masters { 2.2.2.10; };
file "slaves/others.salve.cluster.com.zone";
};
};
3,修改好屬主和許可權,重啟從DNS伺服器的named服務
/etc/init.d/named restart
第四大步:驗證
從DNS重啟named服務后,查看/var/named/chroot/var/named/slaves/目錄 ,可以看到馬上同步過來了,說明成功
[root@slave ~]# ls /var/named/chroot/var/named/slaves/
dx.slave.cluster.com.zone wt.slave.cluster.com.zone
others.slave.cluster.com.zone
nslookup去驗證,可以解析,並可以實現view的功能
===============================================================
實現子域及其子域view
主域DNS伺服器 子域DNS伺服器
2.2.2.10 2.2.2.15
主機名 li.cluster.com li.son.cluster.com
主域名 cluster.com
子域名 son.cluster.com
第一步:定義acl文件
--我這裡還是沿用上面實驗已經做好的acl,這一步省略
第二步:修改配置文件,先和第一個實驗一樣
[root@dns ~]# vim /var/named/chroot/etc/named.conf
options {
directory "/var/named";
};
include "dx";;
include "wt";;
view "dx" {
match-clients {dx;};
zone "cluster.com" IN {
type master;
file "data/dx.cluster.com.zone";
};
};
view "wt" {
match-clients {wt;};
zone "cluster.com" IN {
type master;
file "data/wt.cluster.com.zone";
};
};
view "others" {
match-clients {any;};
zone "cluster.com" IN {
type master;
file "data/others.cluster.com.zone";
};
};
第三步:在主域伺服器上,把每個view都加上子域的授權
[root@li etc]# vim /var/named/chroot/var/named/data/dx.cluster.com.zone
$TTL 86400
@ IN SOA dx. root. (
2011080801
120
60
1D
86400 )
IN NS li.cluster.com.
son.cluster.com. IN NS li.son.cluster.com.
li IN A 2.2.2.10
www IN A 1.1.1.1
li.son.cluster.com. IN A 2.2.2.15
# vim /var/named/chroot/var/named/data/wt.cluster.com.zone
$TTL 86400
@ IN SOA dx. root. (
2011080801
120
60
1D
86400 )
# vim /var/named/chroot/var/named/data/others.cluster.com.zone
$TTL 86400
@ IN SOA dx. root. (
2011080801
120
60
1D
86400 )
IN NS li.cluster.com.
son.cluster.com. IN NS li.son.cluster.com.
li IN A 2.2.2.10
www IN A 3.3.3.3
li.son.cluster.com. IN A 2.2.2.15
重啟主域上的named服務
/etc/init.d/named restart
第四步:
子域伺服器前面的步驟一樣
先準備
1,主機名
2,時間同步
3,關閉iptables,selinux
4,然後在子域伺服器上安裝好bind軟體
yum install bind* -y
5, 先定義電信,網通IP庫,需要和主域一致
我這裡直接從主域DNS用scp拷過來
# scp /var/named/chroot/var/named/dx 2.2.2.15:/var/named/chroot/var/named/
# scp /var/named/chroot/var/named/wt 2.2.2.15:/var/named/chroot/var/named/
6,配置子域DNS伺服器的named.conf文件
[root@son ~]# vim /var/named/chroot/etc/named.conf
options {
directory "/var/named";
};
include "dx";;
include "wt";;
view "dx" {
match-clients {dx;};
zone "son.cluster.com" IN { --和主域的區別就在這裡,寫的是子域名
type master;
view "wt" {
match-clients {wt;};
zone "son.cluster.com" IN { --同上
type master;
file "data/wt.son.cluster.com.zone";
};
};
view "others" {
match-clients {any;};
zone "son.cluster.com" IN { --同上
type master;
file "data/others.son.cluster.com.zone";
};
};
7,按照named.conf的配置寫三個zone文件
# vim /var/named/chroot/var/named/data/dx.son.cluster.com.zone
$TTL 86400
@ IN SOA dx. root. (
2011080801
120
60
1D
86400 )
IN NS li.son.cluster.com.
li IN A 2.2.2.15
www IN A 11.11.11.11
# vim /var/named/chroot/var/named/data/wt.son.cluster.com.zone
$TTL 86400
@ IN SOA wt. root. (
2011080801
120
60
1D
86400 )
IN NS li.son.cluster.com.
li IN A 2.2.2.15
www IN A 22.22.22.22
# vim /var/named/chroot/var/named/data/others.son.cluster.com.zone
$TTL 86400
@ IN SOA others. root. (
2011080801
120
60
1D
86400 )
IN NS li.son.cluster.com.
8.修改許可權屬主,確保運行OK;並重啟named服務
[root@son data]# chown named.named /var/named/chroot/var/named/
[root@son data]# chown named.named /var/named/chroot/var/named/*
[root@son data]# chown named.named /var/named/chroot/var/named/data/*
[root@son data]# /etc/init.d/named restart
9,驗證:
再使用另一台電腦來測試:
--下面是我的DNS記錄的情況,照著這張表來測試
[root@li etc]# www.cluster.com
[root@li etc]# dx 1.1.1.1
[root@li etc]# wt 2.2.2.2
[root@li etc]# others 3.3.3.3
[root@li etc]#
[root@li etc]#
[root@li etc]# www.son.cluster.com
[root@li etc]# dx 11.11.11.11
[root@li etc]# wt 22.22.22.22
[root@li etc]# others 33.33.33.33
[root@li etc]#
[root@li etc]#
[root@li etc]# li.cluster.com 2.2.2.10
[root@li etc]# li.son.cluster.com 2.2.2.15
當客戶端DNS指向主域:
--三種情況:
第一種情況:客戶端屬於othersIP段
命令 結果
nslookup www.cluster.com 3.3.3.3 OK
nslookup www.son.cluster.com 33.33.33.33 OK
第二種情況:客戶端屬於電信IP段
命令 結果
nslookup www.cluster.com 1.1.1.1 OK
nslookup www.son.cluster.com 33.33.33.33 --有問題
第二種情況:客戶端屬於網通IP段
命令 結果
nslookup www.cluster.com 2.2.2.2 OK
nslookup www.son.cluster.com 33.33.33.33 --有問題
當客戶端DNS指向子域:
--這樣客戶端就不能通過子域查主域的記錄
在options { }里加上一句
forwarders { 2.2.2.10; };
--加完全局轉發后,重啟named服務,再做下面測試
第二種情況:客戶端屬於電信IP段
命令 結果
nslookup www.cluster.com 3.3.3.3 --有問題
nslookup www.son.cluster.com 11.11.11.11 OK
第二種情況:客戶端屬於網通IP段
命令 結果
nslookup www.cluster.com 3.3.3.3 --有問題
nslookup www.son.cluster.com 22.22.22.22 OK
解決方法: 主DNS要有三個IP
在上面的基礎上做以下改變
1,主DNS上的操作
除了2.2.2.10外還要兩個IP
# ifconfig eth0:0 2.2.2.12 netmask 255.255.255.0
# ifconfig eth0:1 2.2.2.13 netmask 255.255.255.0
2,修改主DNS上的配置文件
# vim /var/named/chroot/etc/named.conf
options {
directory "/var/named";
};
include "dx";;
include "wt";;
view "dx" {
match-clients {dx;};
query-source address 2.2.2.10 port *; --表示客戶端以電信的IP訪問過來則是以2.2.2.10這個IP去查詢子域
zone "cluster.com" IN {
type master;
file "data/dx.cluster.com.zone";
};
};
view "wt" {
match-clients {wt;};
query-source address 2.2.2.12 port *; --表示客戶端以網通的IP訪問過來則是以2.2.2.12這個IP去查詢子域
zone "cluster.com" IN {
type master;
file "data/wt.cluster.com.zone";
};
};
view "others" {
3.把2.2.2.10加到電信的acl文件里,2.2.2.12加到網通的acl文件里(主域和子域的ACL文件都要加)
4.保存后,重啟named服務
/etc/init.d/named restart
5.驗證:
客戶端DNS指向主域,查主域記錄或子域記錄都能實現view,一切OK
客戶端DNS指向子域(子域做全局轉發主域),查子域記錄能view,查主域記錄還是不能view
解決方法:上面不能做全局轉發,而應該換成把子域也做成主域的從域
也就是主有3個IP,子也有3個IP(同時又是主的從域) --課後題目
本文出自 「linuxart」 博客,請務必保留此出處http://linuxart.blog.51cto.com/686203/843976
[火星人 ] linux20-dns視圖已經有723次圍觀