1、智能DNS的實現(xiàn)
所謂智能DNS就是讓不同地區(qū)的客戶端訪問網(wǎng)站時能將就近網(wǎng)站的IP地址反饋到客戶端统抬,這樣可以增加客戶端的訪問速度火本,比如beijing的客戶去訪問www.magdu.com網(wǎng)站反饋一個ip地址,henan的客戶訪問這個網(wǎng)站時反饋另外一個ip地址聪建,實現(xiàn)過程如下:
在centos7上的操作
1钙畔、vim /etc/named.conf
acl beijing {
192.168.25.226/24; ---北京客戶的地址
};
acl henan {
172.18.21.106/16; ---河南客戶的地址
};
view bjview {
match-clients {beijing;}; ---如果匹配北京的地址
zone "magedu.com"{ ---定義區(qū)域解析庫,也可以將這個內(nèi)容寫到/etc/named.rfc1912.zones中金麸,將下面三行的內(nèi)容換為include "/etc/named.rfc1912.zones.bj"
type master;
file "magedu.com.bj"; ---就走這個區(qū)域解析庫文件
};
};
view hnview {
match-clients {henan;};
zone "magedu.com"{
type master;
file "magedu.com.hn";
};
include "/etc/named.rfc1912.zones"; 這個文件中也可以定義其他的域擎析,那么如果河南的客戶去訪問這個文件中定義的其他域,就會解析解析庫文件中定義的相應(yīng)地址
};
view otherview { ---這個view是兜底用的挥下,如果不是來自這兩個地址的客戶揍魂,就反饋給北京的地址
match-clients {any;};
zone "magedu.com"{
type master;
file "magedu.com.bj";
};
};
2挪鹏、 vim /var/named/magedu.com.bj
$TTL 1D
@ IN SOA dns1 admins.magedu.com. (
66 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns1
dns1 A 172.18.21.107
websrv A 192.168.25.226
www CNAME websrv
vim /var/named/magedu.com.hn
$TTL 1D
@ IN SOA dns1 admins.magedu.com. (
68 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns1
dns1 A 172.18.21.107
websrv A 172.18.21.106
www CNAME websrv
3、測試
在centos6.9上操作愉烙,有兩個ip地址讨盒,分別是定義的beijing和henan的客戶地址
dig www.magedu.com @192.168.25.21 ---相當(dāng)于是用我的192.168.21.226地址去訪問這個dns服務(wù)器
dig www.magedu.com @172.18.21.107
總結(jié):
1、view(視圖)步责,一個bind服務(wù)器可定義多個view返顺,每個view中可定義一個或多個zone.
2、每個view用來匹配一組客戶端地址段
3蔓肯、多個view內(nèi)可能需要對同一個區(qū)域進行解析遂鹊,但使用不同的區(qū)域解析庫文件
4、 一旦啟用了view蔗包,所有的zone都只能定義在view中
5秉扑、 僅在允許遞歸請求的客戶端所在view中定義根區(qū)域
6、 客戶端請求到達時调限,是自上而下檢查每個view所服務(wù)的客戶端列表
2舟陆、編譯安裝bind
1、安裝開發(fā)包組耻矮、創(chuàng)建named賬號
yum groupinstall " Development Tools"
useradd -r -m -d /var/named -s /sbin/nologin named
2秦躯、執(zhí)行configure腳本并安裝
./configure --prefix=/app/bind9 --without-openssl
make && make install
3、將別的主機的named.ca文件拷貝到本主機
scp /var/named/named.ca 172.18.21.7:/app/bind9/etc/
chgrp named named.ca
4裆装、vim /etc/profile.d/env.sh
export PATH=/app/bind9/sbin:/app/bind9/bin:$PATH
5踱承、 編寫named.conf文件
vim /app/bind9/etc/named.conf
options {
directory "/var/named";
};
zone "test.com"{
type master;
file "test.com.zone";
};
zone "."{
type hint;
file "named.ca";
};
6、編寫區(qū)域解析庫文件
vim /var/named/test.com.zone
$TTL 1D
@ IN SOA dns1 admins.test.com ( 1 1d 1h 1w 1d )
NS dns1
dns1 A 172.18.21.7
www A 8.8.8.8
7哨免、加添man 幫助的路徑
8茎活、開啟服務(wù)
named -u named -g -f -d 3 --- u誰來開啟服務(wù),-f前段運行琢唾,-g前段運行并顯示標(biāo)準(zhǔn)錯誤载荔,有助于排錯,-d是debug級別慧耍,級別越高身辨,顯示的信息越詳細
9、測試
dig www.test.com @172.18.21.7
安裝rndc工具
1芍碧、生成rndc.conf文件
rndc-confgen -r /dev/urandom >/app/bind9/etc/rndc.conf
cat /app/bind9/etc/rndc.conf
# Start of rndc.conf
key "rndc-key" {
algorithm hmac-md5;
secret "h5c6Wu39YsRht3YzwoK2MA==";
};
options {
default-key "rndc-key";
default-server 127.0.0.1;
default-port 953;
};
# End of rndc.conf
# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
# algorithm hmac-md5;
# secret "h5c6Wu39YsRht3YzwoK2MA==";
# };
#
# controls {
# inet 127.0.0.1 port 953
# allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf
這個文件相當(dāng)于生成兩把鑰匙煌珊,分別放在這個文件和下面的文件中,使sync這個命令能夠控制dns泌豆。
2定庵、編輯named.conf文件,將上面文件中的# key "rndc-key" {行 至# End of named.conf行添加到文件中
vim /app/bind9/etc/named.conf
options {
directory "/var/named";
};
zone "test.com"{
type master;
file "test.com.zone";
};
zone "."{
type hint;
file "named.ca";
};
# Use with the following in named.conf, adjusting the allow list as needed:
key "rndc-key" {
algorithm hmac-md5;
secret "h5c6Wu39YsRht3YzwoK2MA==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
# End of named.conf
3、測試
rndc status ---發(fā)現(xiàn)rndc命令已經(jīng)可以使用了蔬浙。
3猪落、壓力測試
壓力測試的目的是測試某個dns服務(wù)器的性能,查看一下這個服務(wù)器一秒鐘可以并發(fā)處理多少個用戶的請求畴博。dns的壓力測試工具是queryperf笨忌,這個工具也需要編譯安裝,過程如下
1俱病、編譯安裝
cd /app/bind-9.11.2/contrib/queryperf/
./configure
make
cp -a queryperf /app/bind9/bin/ --移動到PATH變量的路徑下
2官疲、測試
vim test.txt ---創(chuàng)建一個文件,比如解析www.test.com的A記錄
www.test.com A
這個文件要盡量的大才能測出來亮隙,也就是多復(fù)制幾行途凫,實驗時復(fù)制了38萬行。這樣才能模擬并發(fā)處理多少個操作
開啟服務(wù)
在另外一個終端輸入如下面命令
queryperf -d test.txt -s 127.0.0.1 ---s指定測哪個主機,實驗時測的本主機
DNS Query Performance Testing Tool
Version: $Id: queryperf.c,v 1.12 2007/09/05 07:36:04 marka Exp $
[Status] Processing input data
[Status] Sending queries (beginning with 127.0.0.1)
[Status] Testing complete
Statistics:
Parse input file: once
Ended due to: reaching end of file
Queries sent: 377856 queries
Queries completed: 377856 queries
Queries lost: 0 queries
Queries delayed(?): 0 queries
RTT max: 0.085477 sec
RTT min: 0.000586 sec
RTT average: 0.007314 sec
RTT std deviation: 0.011023 sec
RTT out of range: 0 queries
Percentage completed: 100.00%
Percentage lost: 0.00%
Started at: Thu Sep 21 23:13:33 2017
Finished at: Thu Sep 21 23:15:52 2017
Ran for: 138.438754 seconds
Queries per second: 2729.409136 qps ---可以看出一秒鐘能并發(fā)處理2729個請求溢吻。