懒人少语之第十一周:编译安装bind并做压力测试
1 💙编译安装bind包
2 www.isc.org下载
3 tar xvf bind-9.11.2.tar.gz
4 yum -y groupinstall "development tools"
5 cd bind-9.11.2/
6 useradd -r -m -d /var/named -s /sbin/nologin named `创建named系统帐号;-m强制给系统用户生成家目录`
7 ./configure --help `查看使用说明`
8 ./configure --prefix=/app/bind9 --sysconfdir=/etc/bind9 --sysconfdir=/etc/bind9 --without-openssl
9 根据需要是否补充openssl包,是否加密
10 make -j 4 `编译...`
11 测试:在其它机器上将named.ca文件拷贝到编译安装的机器上()
12 dig -t ns . @172.18.0.1
13 dig -t ns . @172.18.0.1 > /app/named.ca `将有根ip地址信息的服务器把ip信息补充一下`
14 scp /app/named.ca 192.168.0.1:/var/named/ `将根文件拷贝过来.`因为编译安装过程缺少一些配置文件
15 若发现有些企业里边无法做114.114.114.114的地址解析,可以找一个根服务器做正向解析即可:
16 dig -t ns . @e.root-servers.net. > /app/named.ca
17
18 make install
19
20 cd /app/bind9/ `安装位置`
21 cd /etc/bind9/ `配置位置`
22 vim /etc/profile.d/env.sh
23 export PATH=/app/bind9/bin:/app/bind9/sbin/:$PATH `添加PATH`
24 . /etc/profile.d/env.sh
25
26 vim /etc/bind9/named.conf `创建补充配置`
27 options {
28 directory "/var/named/";
29 };
30
31 zone "." {
32 type hint;
33 file "named.ca";
34 };
35
36 zone "test.com" { `该条是用来做测试域`
37 type master;
38 file "test.com.zone";
39 };
40
41 cd /var/named/
42 vim test.com.zone `创建区域`
43 $TTL 1D
44 @ IN SOA dns1 admin ( 1 1d 10m 1w 1d )
45 NS dns1
46 dns1 A 192.168.0.1 `指向自己,用作测试`
47 www A 6.6.6.6
48
49 在这里要注意可能存在权限问题,根据需要可选择补充:
50 chmod 640 /var/named/*
51 chmod 640 /etc/named/named.conf
52 chgrp -R named /var/named/
53 chgrp named /etc/named/named.conf
54
55 named -u named -f -g -d 3 `[11]👇-u指定用户;-f前台;-g前台运行并把所有日志信息以错误发出,会前台显示日志信息(非守护进程,可前台显示错误信息进行排错);-d貌似是dbug级别3`
56 后台执行方式:
57 named -u named 即可
58 杀也可用:
59 killall named 即可,多方便
60 当然在观察错误日志信息可用:
61 tail /var/log/message
62 而再次启用则继续使用named -u named 即可.
63 UDP和TCP端口为53; ss -ntul `检查一下端口和服务是否启动`
64 💛named命令
65 vim /etc/man_db.conf `补充man手册帮助的路径,立即生效`
66 MANDATORY_MANPATH /app/bind9/share/man
67
68 iptables -F `关闭防火墙`
69
70 在其它机器上指定的dns,检查一下编译安装的DNS配置是否已经配置正确:
71 dig www.test.com @192.168.0.1 `测试`
72
73 cd /app/bing9/sbin `rndc的命令位置,可添加一下PATH`
74
75 rndc-confgen -r /dev/urandom > /etc/bind9/rndc.conf `生成rndc.conf密钥`
76 vim /etc/bind9/rndc.conf
77 key "rndc-key" {
78 algorithm hmac-md5;
79 secret "iHElNDSifhhNvszew4x2li==" `服务器端密钥信息`
80 };
81
82 # Use with the following in named.conf, adjustiong the allow list as needed:
83 # key "rndc-key" {
84 # algorithm hmac-md5;
85 # secret "iHElNDSifhhNvszew4x2li==" `服务器端密钥信息`
86 # };
87 #
88 # controls {
89 # inet 127.0.0.1 port 953
90 # allow { 127.0.0.1; } keys { "rndc-key"; };
91 # };
92 # End of named.conf
93 将注释那段部分内容复制到named.conf里,作为客户端配置()只要key "rndc-key" {}; 和 controls {} 段即可
94 👇👇👇
95 vim /etc/bind9/named.conf
96 :r!tail -n 12 /etc/bind9/rndc.conf `vim的读操作...`
97 并去掉注释信息.. `共享密钥对操作完成`仅由服务端的127.0.0.1本机访问,走的953端口
98
99 到此,将[11]👆的前台操作ctrl+c杀掉,再启一遍即可完成配置操作..
100 named -u named -f -g -d 3
101 rndc status `顺便观察一下rndc是否真启动了`
102 而query logging is OFF 是OFF状态,启动👇
103
104 rndc querylog `将query logging is OFF状态改为ON状态操作,详情看rndc命令使用`
105
106 💙压力测试,给DNS服务器测一下并发能力等:
107 💛queryperf命令
108 cd /root/bind-9.11.2/contrib/queryperf/ `该路径下的程序可用做压力测试`
109 .configure
110 可用.configure --help 查看更详细的使用帮助
111 make
112 cp queryperf /usr/local/bind9/bin `将二进制程序复制过去用即可,无需继续install安装`
113 ./queryperf --help `使用帮助`
114 -d /app/test.txt `-d指定输入资源记录的文件`
115 格式:
116 www.abc.com A
117 abc.com NS
118 abc.com MX
119 pop3.abc.com A
120 web.abc.com A
121 建议使用一条一条域名进行测试()
122 可用vim的复制粘贴:
123 :1,$y `从第一行复制到最后一行的重复操作,累积到1万行即可Σ( ° △ °|||)︴`
124 关闭日志开测...避免频繁高读写导致查询超时.()
125 rndc querylog `on状态重复执行一次就变为off状态,开测👇`
126 ./queryperf -d test.txt -s 127.0.0.1 `-s指定你想测的DNS服务地址;-p可指定端口`
127 结果成功后显示:
128 Statistics:
129
130 Parse input file: once
131 Endeddue to: reaching end of file
132
133 Queries sent: 10000 Queries `发送了几条`
134 Queries completed: 10000 Queries `完成了几条`
135 Queries lost: 0 Queries `丢失了几条`
136 Queries delayed(?): 0 Queries `延时了几条`
137
138 RTT max: 0.012312 sec
139 RTT min: 0.003122 sec
140 RTT average: 0.003852 sec
141 RTT std deviation: 0.012392 sec
142 RTT out of range: 0 sec
143 ...
144 Queries per second: 5432.123456 qps `每秒能处理多少条处理能力`
145
146 测试完成后,可以多测试几次取平均值()
147
148 💙利用dig命令查看的系统状态排错.
149 #dig A example.com
150 ; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> A example.com
151 ;; global options: +cmd
152 ;; Got answer:
153 ;; -> >HEADER< <- opcode: QUERY, status: NOERROR, id: 30523
154 ...
155 SERVFAIL:Thenameserverencountered a problem while processing the query.
156 可使用dig +trace排错,可能是网络和防火墙导致
157 NXDOMAIN:The queried name does not exist in the zone.
158 可能是CNAME对应的A记录不存在导致
159 REFUSED:The nameserverrefused the client’s DNS request due to policy restrictions.
160 可能是DNS策略导致
161
162 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀