歡迎您光臨本站 註冊首頁

linux20-dns視圖

←手機掃碼閱讀     火星人 @ 2014-03-08 , reply:0

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


masters { 2.2.2.10; }; --指定主DNS伺服器的IP
file "slaves/dx.slave.cluster.com.zone";
};
};

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 )


IN NS li.cluster.com.
son.cluster.com. IN NS li.son.cluster.com.
li IN A 2.2.2.10
www IN A 2.2.2.2
li.son.cluster.com. IN A 2.2.2.15


# 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;


file "data/dx.son.cluster.com.zone";
};
};

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.


li IN A 2.2.2.15
www IN A 33.33.33.33


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服務,再做下面測試


第一種情況:客戶端屬於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 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" {


match-clients {any;};
query-source address 2.2.2.13 port *; --表示客戶端以其他的IP訪問過來則是以2.2.2.13這個IP去查詢子域
zone "cluster.com" IN {
type master;
file "data/others.cluster.com.zone";
};
};

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次圍觀

http://coctec.com/docs/linux/show-post-45757.html