DNS主从,反向,访问控制,压力测试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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”下的结果,之多行,不会少行

[[email protected] ~]# 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上.


[[email protected] ~]# ping www.amazon.com
PING www.amazon.com (54.192.141.51) 56(84) bytes of data.
...

[[email protected] ~]# 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>
[[email protected]~]# cat test.txt
www.amazon.com A
amazon.com NS
a.amazon.com A
b.amazon.com A

使用-d指定数据文件,做压力测试的时候,要对其解析哪些记录为基准型测试,-s 指定需要压测的服务器IP

[[email protected]~]# 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
....

然后将如上行多复制几行,(不论怎么复制行都可以)如下所示:

[[email protected]~]# wc -l test.txt
3774840 test.txt

再次进行压力测试

[[email protected]~]# queryperf -d test.txt -s 192.168.0.6


本文出自 “12890864” 博客,请务必保留此出处http://12900864.blog.51cto.com/12890864/1974558

以上是关于DNS主从,反向,访问控制,压力测试的主要内容,如果未能解决你的问题,请参考以下文章

DNS主从服务,子域授权,view视图,日志系统,压力测试

DNS视图以及日志压力测试

DNS压力测试

DNS压力测试工具dnsperf简介

DNS从入门到管理

+++++++子域授权与编译安装