DNS主從,反向,訪問控制,壓力測試

DNS


1,基礎正向解析配置(域名—>IP)
2,反向解析配置(IP—>域名)
3,主從同步配置
3,訪問控制及區域訪問綁定
4,bind壓測工具


實驗環境


服務器主機:centos7.3 2臺
192.168.0.5 (主)
192.168.0.6(從)(客串客戶端)


客戶端主機:centos7.3 1臺(隨意)
192.168.0.4


客戶端配置:
vi /etc/resolve
DNS1=192.168.0.5
DNS2=192.168.0.6


客戶端測試工具:

dig的使用方法:

 yum install bind-utils -y

#dig www.baidu.com

#dig www.baidu.com @192.168.0.6
#以192.168.0.6爲DNS服務器查詢
#dig -x 192.168.0.6
# -x:IP解析成網址用的
#dig www.baidu.com @127.0.0.1
        #以本機爲DNS服務器做查詢


正常的查詢會返回如下“ANSWER SECTION”下的結果,之多行,不會少行

[root@ftp ~]# dig www.amazon.com

; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7_3.1 <<>> www.amazon.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26711
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.amazon.com. IN A

;; ANSWER SECTION:
www.amazon.com. 31536000 IN A 54.192.141.51

;; AUTHORITY SECTION:
amazon.com. 31536000 IN NS www.amazon.com.

;; Query time: 1 msec

;; SERVER: 192.168.0.6#53(192.168.0.6)
#由哪個DNS服務器返回的結果


;; WHEN: Fri Sep 01 11:23:44 CST 2017
;; MSG SIZE  rcvd: 73




若要訪問外網需做好放行,tcp53,udp53端口




基礎正向解析配置


安裝配置主DNS:

安裝:

yum install bind -y #包名叫bind,服務名叫named

修改主配置文件:

vi /etc/named.conf     
options {
        listen-on port 53 { localhost; };
        allow-query     { any; };
        allow-transfer     { 192.168.0.5; };
forward first
        forwarders { 8.8.8.8; };


        dnssec-enable no;
        dnssec-validation no;


#監聽本機的所有IP
#允許所有人查詢
#只允許從服務器192.168.0.5拉取本服務器DNS配置資料
#本機查不到,會向forwarders 記錄的服務器查詢


#dnssec和tsig協議不啓用




添加解析域:


vi /etc/named.rfc1912.zones

zone "amazon.com" {
        type master;
        file "amazon.com.zone";
};

#域名amazon.com
#是主服務器
#地址解析文件名,默認爲/var/named/下




編輯域名解析文件:

複製正向解析模板:
cp -p /var/named/named.localhost /var/named/amazon.com.zone


編輯:
vi /var/named/amazon.com.zone

$TTL 1D
@       IN SOA  @ dnsadmin.amazon.com. (
                                        2017090101       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@       NS      www
www A 54.192.141.51


#第1行,是生存時間記錄字段。定義該資源記錄中的信息存放在高速緩存中的時間長度($TTL)
#第2行,是一個 SOA 記錄的設定,在這裏我們看到一個特殊字符 @ ,它就是域名,"amazon.com "可以用 @ 來代替。
 接着 SOA 後面,是這個區域管理者的信箱,因爲@在 DNS 記錄中是個保留字符,所以在 SOA 中就用“.”來代替了@。
         不要忘了com後的“.”

#接下來的 SOA 設置,是被括在“( )”之間的 5 組數字,主要作爲和 slave 服務器同步 DNS 資料所使用的資料:

Serial:其格式通常會是“年月日+修改次序”。當 slave 要進行資料同步的時候,會比較這個號碼
如果發現在這裏的號碼比它那邊的數值“大”,就進行更新,否則忽略。不能超過 10 位數字!

Refresh:這裏是是告訴 slave 要隔多久要進行資料同步(是否同步要看 Serial 的比較結果)。

Retry:如果 slave 在進行更新失敗後,要隔多久再進行重試。

Expire:記錄有效期:當 slave 一直未能成功與 master 同步,時間一過就放棄 retry,資料也將標識爲過期。

Minimum:這是最小默認 TTL 值,如果您在前面沒有用“$TTL”來定義,就會以此值爲準。

請注意:SOA 記錄中這對“( )”符號之第一個“(”括號一定要和 SOA 寫在同一行,而不能用 Enter 斷行到下一行去,
而且其左邊最好有一個空格鍵或 tab 建。而最後一個 “ )”括號也不能寫在註解符號 “ ;”的右邊。

#倒數第二行“NS”是標識當前區域的DNS服務器(此爲應老大要求而做了改動)
#最後一行是A記錄(,)
            A記錄,將域名解析成IP(www.amazon.com--->54.192.141.51)
            www代表"www.amazon.com."
            ftpsrv代表"ftpsrv.amazon.com."
            會自動繼承此配置的域名,所以可以不用寫完整的名字



注意:


由於上面配置的NS記錄是www,而www解析的是www.amazon.com的IP ,所以使用dig時,不會出現本DNS的IP,但不添加NS記錄我不知道怎麼設置備用服務器,所以下面的配置備用DNS時主DNS的NS記錄需要修改




配置完各配置文件後:

named-checkconf
#配置文件語法測試

named-checkzone "amazon.com" /var/named/amazon.com.zone
#域的配置與解析文件的語法測試

systemctl start named

rndc status
#查看狀態

rndc querylog
#開啓日誌功能

rndc reload
#重新加載配置文件

然後客戶端訪問

dig ftpsrv.amazon.com

dig www.amazon.com

若能訪問外網DNS服務器

dig www.baidu.com




反向解析


添加反向解析域:

vi /etc/named.rfc1912.zones

zone "0.168.192.in-addr.arpa" {
        type master;
        file "192.168.0.zone";
};

#反向解析,0.168.192代表192.168.0.0/24網段



反向解析配置模板

cp -p /var/named/named.loopback /var/named/192.168.0.zone


域名解析文件設置:

vi /var/named/192.168.0.zone

$TTL 365D
@       IN SOA  dns1 nsadmin.king.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS     dns1
dns1    A       127.0.0.1
6       PTR     dns1.king.com.
7       PTR     www.king.com.
4       PTR     ftp.king.com.

#PTR 標記爲反向解析
#4,5,6分別代表4.0.168.192,5.0.168.192,6.0.168.192
#PTR 右邊是網址名,com後要加“.”




語法檢測:
named-checkzone “0.168.192.in-addr.arpa” /var/named/192.168.0.zone

重載配置文件:
rndc reload

訪問測試:
dig -x 192.168.0.[467]




從服務器


yum isntall bind -y

vi /etc/named.conf
options {

        allow-transfer     { none; }; #不允許任何IP從此服務器拉取域名解析配置資料

        #其他同主服務器



vi /etc/named.rfc1912.zones

zone "amazon.com" {
type slave;
masters{192.168.0.6;};
file "slaves/amazon.com.zone.slave";
};

#此服務的類型是slave
#主服務器是192.168.0.6
#解析文件在/var/named/slaves/amazon.com.zone.slave


語法檢測

named-checkconf

systemctl start named



注意

主從服務器都需確保/var/named/下任何文件(數據存放位置)  named 用戶對其有讀權限
從服務器下的目錄/var/named/slaves/ “named”用戶需對其有寫權限
若如上不在主DNS上的解析文件中添加從DNS解析行的話會使得主服務器解析序列號更改也不會像從服務器發送信息

      NS1 dns1
      NS2 dns2
dns1  A  192.168.0.5        #主DNS解析
dns2  A  192.168.0.6        #備DNS解析

後面就是正常的域名解析了

每次主服務器做出改動後記得增大序列號,如此才能同步到從服務器


測試:

關閉主服務器named程序,然後客戶端訪問







訪問控制、區域地址綁定、隨機調度


服務器主配置文件:

vi /etc/named.conf

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html


acl hongkongnet {
192.168.0.5;
};
     #定義組hongkongnet,其下的IP有192.168.0.5


acl americanet {
192.168.0.4;
};


acl other {
any;
};
    #定義組other,其上面的組爲匹配到的IP都調度到此組來
    #從上到下優先匹配


options {
listen-on port 53 { localhost; };
listen-on-v6 port 53 { ::1; };
directory  "/var/named";
dump-file  "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query     { any; };
allow-transfer     { 192.168.0.5; };
forward first;
forwarders { 8.8.8.8; };

/* 
 - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
 - If you are building a RECURSIVE (caching) DNS server, you need to enable 
   recursion. 
 - If your recursive DNS server has a public IP address, you MUST enable access 
   control to limit queries to your legitimate users. Failing to do so will
   cause your server to become part of large scale DNS amplification 
   attacks. Implementing BCP38 within your network would greatly
   reduce such attack surface 
*/
recursion yes;

dnssec-enable no;
dnssec-validation no;

/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";

managed-keys-directory "/var/named/dynamic";

pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

view americaview {
match-clients { americanet; };   #調度到本view的acl控制組,也可直接寫IP或網段
zone "amazon.com" {
type master;
file "amazon.com.zone.america";
};
};

view hongkongview {
match-clients { hongkongnet; };   #調度到本view的acl控制組,也可直接寫IP或網段
zone "amazon.com" {
type master;
file "amazon.com.zone.hongkong";
};
};

view otherview {
match-clients { other; };   #調度到本view的acl控制組,也可直接寫any(所有)
zone "." IN {               #此爲根節點域
type hint;
file "named.ca";    #到/var/named/named.ca文件中查找根節點
};
include "/etc/named.rfc1912.zones";
};

include "/etc/named.root.key";

      #view匹配模式,同acl也是從上到下優先權




複製模板:

cp -p /var/named/named.localhost /var/named/amazon.com.zone.america

cp -p /var/named/named.localhost /var/named/amazon.com.zone.hongkong




美國地區域名解析文件:

vi /var/named/amazon.com.zone.america

$TTL 365D
@   IN SOA @ nsadmin.amazon.com. (
2 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS www
www A 54.192.141.51
www     A       54.192.141.52

        #同一個域名解析成兩個IP,查詢的結果是隨機分配在兩個IP上的





香港地區域名解析文件:

vi /var/named/amazon.com.zone.hongkong

$TTL 365D
@   IN SOA @ nsadmin.amazon.com. (
2 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS www
www A 54.239.17.7



systenctl start named



最後不同客戶端主機訪問:


設置192.168.0.4與192.168.0.5的DNS爲192.168.0.6後各自訪問“dig www.amazon.com”.

最後再使用192.168.0.4去 “ping www.amazon.com”查看是否隨機調度到兩個IP上.


[root@localhost ~]# ping www.amazon.com
PING www.amazon.com (54.192.141.51) 56(84) bytes of data.
...

[root@localhost ~]# ping www.amazon.com
PING www.amazon.com (54.192.141.52) 56(84) bytes of data.
...





編譯DNS壓測工具


centos7.3

1,編譯環境

yum groupinstall “Development Tools”


2,安裝queryperf

可以在www.isc.org 下載bind10-1.1.0並安裝它們

wget https://www.isc.org/downloads/file/bind-9-9-4-p1-tar-gz/?version=tar.gz
tar -xvf  index.html?version=tar.gz
cd bind-9.9.4-P1/contrib/queryperf/
./configure
make

      #不用直接make install ,將queryperf 拷貝至/bin/目錄即可
cp queryperf /bin/



3,壓力測試


2.使用querypery

首先創建文件,指定需要測試的域名和記錄類型:

<code>
[root@test~]# cat test.txt
www.amazon.com A
amazon.com NS
a.amazon.com A
b.amazon.com A

使用-d指定數據文件,做壓力測試的時候,要對其解析哪些記錄爲基準型測試,-s 指定需要壓測的服務器IP

[root@test~]# queryperf -d test.txt -s 192.168.0.6
DNSQuery 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 10.0.10.60)    #發送查詢請求
[Status]Testing complete  

Statistics:

 Parse input file:     once
 Ended due to:         reaching end of file

 Queries sent:         3 queries              #共發起了多少請求
 Queries completed:    3 queries              #完成了多少請求
 Queries lost:         0 queries              #丟失多少請求
 Queries delayed(?):   0 queries        

 RTT max:             0.006557sec             #將請求發出去響應回過來最大的一次耗時多少
 RTT min:              0.002860 sec           #最短一次
 RTT average:          0.004116 sec           #平均多久
 RTT std deviation:    0.001721 sec
 RTT out of range:     0 queries

 Percentage completed: 100.00%                #完成的比例
 Percentage lost:        0.00%                #丟失的比例

 Started at:           Wed Dec 18 20:29:43 2013
 Finished at:          Wed Dec 18 20:29:43 2013
 Ran for:              0.009473 seconds

 Queries per second:   316.689539 qps         #每秒鐘平均能完成多少個請求

之前測試的數量太少,接下來修改test.txt,將信息填滿:

www.amazon.com A
amazon.com NS
a.amazon.com A
b.amazon.com A
c.amazon.com A
d.amazon.com A
e.amazon.com A
f.amazon.com A
g.amazon.com A
h.amazon.com A
i.amazon.com A
j.amazon.com A
....

然後將如上行多複製幾行,(不論怎麼複製行都可以)如下所示:

[root@test~]# wc -l test.txt
3774840 test.txt

再次進行壓力測試

[root@test~]# queryperf -d test.txt -s 192.168.0.6


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章