yum install -y bind*
- 主配置文件:
/etc/named.conf
定义bind服务程序运行相关的参数- 区域配置文件:
/etc/named.rfc1912.zones
用于定义域名和IP地址对应关系的所在路径- 数据配置文件目录:
/var/named/
用于定义域名和IP地址真实对应关系的数据配置文件
vim /etc/named.conf
更改内容如下:
options {
listen-on port 53 { any; }; ## any表示服务器上所有iP均可提供DNS域名解析
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; }; ## any表示允许所有人对本服务器发送dns查询请求
allow-transfer { key master-slave; };
named-checkconf
测试配置文件是否正确正向解析是指根据域名(主机名)查找到对应的IP地址。也就是说,当用户输入了一个域名后,bind服务程序会自动进行查找,并将匹配到的IP地址返给用户——这也是最常见的DNS工作模式。
vim /etc/named.rfc1912.zones
更改内容如下:
zone "zyj.com" IN { ##双引号内自定义域名
type master;
file "zyj.com.zone"; ##定义域名与IP解析规则文件位置
allow-update { none; };
};
cd /var/named
cp -a named.localhost zyj.com.zone
vim zyj.com.zone
编辑内容如下:
$TTL 1D
@ IN SOA zyj.com. root.zyj.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.zyj.com.
ns IN A 192.168.229.135
IN MX 10 mail.zyj.com.
mail IN A 192.168.229.135
www IN A 192.168.229.135
bbs IN A 192.168.229.135
参数含义见下表:
systemctl restart named
vim /etc/resolv.conf
## 此处为临时修改DNS,也可以编辑网卡配置文件永久修改
nameserver 192.168.229.135
nslookup
命令测试DNS服务是否生效[root@zyj-01 named]# nslookup www.zyj.com
Server: 192.168.229.135
Address: 192.168.229.135#53
Name: www.zyj.com
Address: 192.168.229.135
[root@zyj-01 named]# nslookup mail.zyj.com
Server: 192.168.229.135
Address: 192.168.229.135#53
Name: mail.zyj.com
Address: 192.168.229.135
反向解析的作用是将用户提交的IP地址解析为对应的域名信息,它也可以针对某个IP地址进行反向解析,大致判断出有多少个网站运行在上面。当购买主机时,可以使用这一功能验证虚拟主机提供商是否有严重的超售问题。
编辑区域配置文件
反向解析是把IP地址解析成域名格式,因此在定义zone时应该要把IP地址反写,如192.168.157.228,反写后应该就是157.168.192,只需写出IP地址的网络位即可。
vim /etc/named.rfc1912.zones
##在原配置下添加内容,如下:
zone "229.168.192.in-addr.arpa" IN {
type master;
file "192.168.229.arpa";
};
cd /var/named
cp -a named.loopback 192.168.229.arpa
vim 192.168.229.arpa
内容如下
$TTL 1D
@ IN SOA zyj.com. root.zyj.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.zyj.com.
ns A 192.168.229.135
135 PTR ns.zyj.com. #135为IP地址中的主机位
135 PTR mail.zyj.com. #PTR为指针记录,仅用于反向解析
135 PTR www.zyj.com.
135 PTR bbs.zyj.com.
systemctl restart named
nslookup
测试 [root@zyj-01 named]# nslookup 192.168.229.135
Server: 192.168.229.135
Address: 192.168.229.135#53
135.229.168.192.in-addr.arpa name = mail.zyj.com.
135.229.168.192.in-addr.arpa name = ns.zyj.com.
135.229.168.192.in-addr.arpa name = bbs.zyj.com.
135.229.168.192.in-addr.arpa name = www.zyj.com.
作为互联网的基础设施,保障DNS域名解析服务的正常运转至关重要,只有这样才能稳定、快速且不间断的提供查询服务。从服务器可以从主服务器上获取指定的区域数据文件,从而起到备份解析记录与负载均衡的作用,因此通过部署从服务器可以减轻主服务器的压力,还可以提升用户的查询速率。
主机名称 | 系统 | IP地址 |
---|---|---|
主服务器 | CentOS7 | 192.168.229.135 |
从服务器 | CentOS7 | 192.168.229.136 |
vim /etc/named.rfc1912.zones
内容如下:
zone "zyj.com" IN {
type master;
file "zyj.com.zone";
allow-update { 192.168.229.136; }; ##指定从服务器的IP
};
zone "229.168.192.in-addr.arpa" IN {
type master;
file "192.168.229.arpa";
allow-update { 192.168.229.136; }; ##指定从服务器的IP
};
```
```
systemctl restart named
```
2. 在从服务器上,填写主服务器IP,并重启named
```bash
vim /etc/named.rfc1912.zones
内容如下:
zone "zyj.com" IN {
type slave; ##服务器类型为slave
file "slaves/zyj.com.zone";
masters { 192.168.229.135; };
};
zone "229.168.192.in-addr.arpa" IN {
type slave; ##服务器类型为slave
file "slaves/192.168.229.arpa";
masters { 192.168.229.135; };
};
systemctl restart named
[root@zyj-02 /]# cd /var/named/slaves/
[root@zyj-02 slaves]# ll
总用量 8
-rw-r--r--. 1 named named 340 3月 22 23:28 192.168.229.arpa
-rw-r--r--. 1 named named 347 3月 22 23:28 zyj.com.zone
nslookup
测试[root@zyj-02 slaves]# nslookup 192.168.229.135
Server: 192.168.229.136
Address: 192.168.229.136#53
135.229.168.192.in-addr.arpa name = www.zyj.com.
135.229.168.192.in-addr.arpa name = bbs.zyj.com.
135.229.168.192.in-addr.arpa name = ns.zyj.com.
135.229.168.192.in-addr.arpa name = mail.zyj.com.
[root@zyj-02 slaves]# nslookup www.zyj.com
Server: 192.168.229.136
Address: 192.168.229.136#53
Name: www.zyj.com
Address: 192.168.229.135
bind服务程序为了提供安全的解析服务,已经对TSIG ( RFC 2845 ) 加密机制提供了支持,即 TSIG加密机制保证了DNS服务器之间传输域名区域信息的安全性。
依旧使用前面配置的两台服务器做实验
dnssec-keygen
生成DNS服务密钥,执行该命令后,会在当前目录中生成公钥和私钥文件。参数 | 作用 |
---|---|
-a | 指定加密算法,包括RSAMD5(RSA)、RSASHA1、DSA、NSEC3RSASHA1、NSEC3DSA等 |
-b | 密钥长度(HMAC-MD5的密钥长度在1~512位之间) |
-n | 密钥的类型(host表示与主机相关) |
[root@zyj-01 named]# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST master-slave
Kmaster-slave.+157+58925
##测试服务器配置较低时,生成时间会比较久
[root@zyj-01 named]# cat Kmaster-slave.+157+58925.private
Private-key-format: v1.3
Algorithm: 157 (HMAC_MD5)
Key: 5UQTkEJPLXCHG21HkRXygw== ##记住该行参数
Bits: AAA=
Created: 20190322154318
Publish: 20190322154318
Activate: 20190322154318
cd /var/named/chroot/etc/
vim transfer.key
添加内容如下:
key "master-slave" {
algorithm hmac-md5;
secret "5UQTkEJPLXCHG21HkRXygw=="; ##此处""内为前面私钥中key的值
};
chown root:named transfer.key
chmod 640 transfer.key
ln transfer.key /etc/transfer.key
vim /etc/named.conf
修改内容如下:
include "/etc/transfer.key"; ##此处为新增配置,指定密钥验证文件
options {
listen-on port 53 { any; };
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
allow-transfer { key master-slave;}; ##此处为新增配置,只允许带有master-slave密钥认证的DNS服务器同步数据
systemctl restart named
[root@zyj-02 slaves]#
[root@zyj-02 slaves]# rm -rf /var/named/slaves/*
[root@zyj-02 slaves]# systemctl restart named
[root@zyj-02 slaves]# ll
总用量 0
[root@zyj-02 slaves]# cd /var/named/chroot/etc/
[root@zyj-02 etc]# vim transfer.key
key "master-slave" {
algorithm hmac-md5;
secret "5UQTkEJPLXCHG21HkRXygw=="; ##此处""内为前面私钥中key的值
};
[root@zyj-02 etc]# chmod 640 !$
chmod 640 transfer.key
[root@zyj-02 etc]# chown root:named !$
chown root:named transfer.key
[root@zyj-02 etc]# ln !$ /etc/!$
ln transfer.key /etc/transfer.key
注意:密钥名称等参数不要太靠前,大约在43行之后比较合适,否则bind服务程序会因为没有加载完预设参数而报错
vim /etc/named.conf
增加内容如下:
9 // See the BIND Administrator's Reference Manual (ARM) for details about the
10 // configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html
11 include "/etc/transfer.key"; ##增加的配置内容
12 options {
13 listen-on port 53 { any; };
14 listen-on-v6 port 53 { ::1; };
15 directory "/var/named";
16 dump-file "/var/named/data/cache_dump.db";
17 statistics-file "/var/named/data/named_stats.txt";
18 memstatistics-file "/var/named/data/named_mem_stats.txt";
19 recursing-file "/var/named/data/named.recursing";
20 secroots-file "/var/named/data/named.secroots";
21 allow-query { any; };
...............
41 managed-keys-directory "/var/named/dynamic";
42
43 pid-file "/run/named/named.pid";
44 session-keyfile "/run/named/session.key";
45 };
46 server 192.168.229.135 ##增加的配置内容
47 {
48 keys { master-slave; };
49 };
[root@zyj-02 slaves]# systemctl restart named
[root@zyj-02 slaves]# ll
总用量 8
-rw-r--r--. 1 named named 340 3月 23 00:21 192.168.229.arpa
-rw-r--r--. 1 named named 347 3月 23 00:21 zyj.com.zone
DNS缓存服务器是一种不负责域名数据维护的DNS服务器。
简单来说缓存服务器,就是把用户长用到的域名与IP地址的解析记录保存在主机本地,从而提升下次的解析效率。
DNS缓存服务器一般用于经常访问某些固定站点而且对这些网站的访问速度有较高要求的企业内网中,但实际应用并不广泛。而且,缓存服务器是否可以解析成功,与指定的上级DNS的允许策略有关。
在bind服务器,主配置文件中添加缓存转发参数,即可开启缓存服务器
vim /etc/named.conf
内容如下:
forwarders { 119.29.29.29;}; ##括号中填写上级DNS服务器,即获取数据配置文件的服务器。此处填写的时腾讯提供的DNS服务器