DNS(Domain Name System,域名系统)用于解析域名与IP地址的映射关系。根据主机名(域名)解析对应的IP地址称之为正向解析,根据IP地址解析对应的主机名(域名)称为之反向解析。
DNS服务器又分为主服务器、从服务器和缓存服务器。主服务器在特定区域内具有唯一性、负责维护该区域内的域名与IP地址映射关系。从服务器拷贝主服务器中域名与IP地址的映射关系,以防止主服务器宕机等情况。缓存服务器通过向其他域名解析服务器查询获得域名与IP地址映射关系,从而提高重复查询时的效率。
BIND(Berkeley Internet Name Domain,伯克利因特网名称域)服务是全球范围内使用最广泛、最安全可靠且高效的域名解析服务程序。在生产环境中安装部署bind服务程序时加上chroot(俗称牢笼机制)扩展包,可以有效地限制bind服务程序仅能对自身的配置文件进行操作,以确保整个服务器的安全。
一、安装bind及其相关软件
使用bind部署DNS服务器,通常会安装bind、bind-chroot、bind-utils和bind-libs四个软件。bind提供了域名服务的主要程序及相关软件,bind-utils提供了对DNS服务器的测试工具程序(比如:nslookup),bind-libs提供了bind、bind-utils需要使用的库函数,bind-chroot为Bind服务提供一个伪装的根目录(将var/named/chroot文件夹作为Bind的根目录),以提高安全性。
1、查看系统中已安装的bind及其相关软件。
rpm -aq | grep bind
2、安装bind及其相关软件,根据步骤1,系统默认已安装utils和libs,因此只需要安装bind、bind-chroot。
yum -y install bind bind-chroot
二、bind配置文件简述
配置DNS服务,需要编辑bind相关的配置文件。相关的配置文件有三类(4个)配置文件,分别是DNS主配置文件(/etc/named.conf)、区域配置文件(/etc/named.rfc1912.zones)和数据文件。数据文件分为正向解析数据文件和反向数据解析模版,正向解析数据文件可以通过正向解析数据模版文件(/var/named/named.localhost)来创建,反向数据解析数据文件可以通过反向解析数据模版文件(/var/named/named.loopback)来创建。
1、编辑DNS主配置文件。
把第13行127.0.0.1修改为any,表示服务器上的所有IP地址均可提供DNS域名解析服务。
把第19行的localhost修改为any,表示本服务器接受所有DNS查询请求。
vim /etc/named.conf
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 allow-query { any; };
三、DNS正向解析
1、编辑区域配置文件中正向解析部分。
删除已有的所有内容,并添加下面5行。
vim /etc/named.rfc1912.zones
1 zone "lw.com.cn" IN { #维护的正向区域(lw.com.cn);
2 type master; #设置服务器类型为主服务器;
3 file "lw.com.cn.zone"; #设置正向解析数据文件的名称;
4 allow-update { none; }; #不允许动态更新解析信息;
5 };
2、复制正向解析数据文件模板,作为服务器的正向解析数据文件。
cp -a /var/named/named.localhost /var/named/lw.com.cn.zone
说明:
文件名必须和区域配置文件中定义的file的名称相同。
3、编辑正向解析数据文件。
注意域名后面的“.”,不要漏了。
vim /var/named/lw.com.cn.zone
1 $TTL 1D
2 @ IN SOA lw.com.cn. root.lw.com.cn. ( #域名=lw.com.cn. root的邮箱=root.lw.com.cn.
3 0 ; serial
4 1D ; refresh
5 1H ; retry
6 1W ; expire
7 3H ) ; minimum
8 NS ns.lw.com.cn. #域名服务器记录
9 ns IN A 192.168.10.10 #地址记录
10 www IN A 192.168.10.10 #地址记录
11 mail IN A 192.168.10.10 #地址记录
4、重启named服务并将其设置为开机启动。
systemctl restart named
systemctl enable named
如果出现错误提示:Job for named.service failed because the control process exited with error code. See "systemctl status named.service" and "journalctl -xe" for details.请认真检查前面的配置,直到使用命令systemctl restart named重启named服务不出现错误提示为止。
5、在服务器上进行测试,使用命令ping和nslookup进行测试。
[root@localhost ~]# ping www.lw.com.cn
PING www.lw.com.cn (192.168.10.10) 56(84) bytes of data.
64 bytes from localhost.localdomain (192.168.10.10): icmp_seq=1 ttl=64 time=0.015 ms
[root@localhost ~]# nslookup
> www.lw.com.cn #在这里输入需要解析的域名
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: www.lw.com.cn
Address: 192.168.10.10
> exit
6、若要使用DNS客端使用命令ping或命令nslookup进行测试,需要在DNS服务器上设置或关闭防火墙,还需要在客户端设置首选DNS的IP(192.168.10.10)地址,设置DNS的IP地址比较简单这里省略该设置。
firewall-cmd --permanent --add-service=dns #默认区域添加dns服务
firewall-cmd --reload #重新加载防火墙
或
systemctl stop firewalld #关闭防火墙
systemctl disable firewalld #禁用防火墙
四、DNS反向解析
1、编辑区域配置文件中反向解析部分。
正向解析部分配置了5行,反向解析部分从第6行开始,也配置5行。
vim /etc/named.rfc1912.zones
6 zone "10.168.192.in-addr.arpa" IN { #设置维护的反向区域;
7 type master; #设置服务器类型为主服务器;
8 file "192.168.10.arpa"; #设置反向解析数据文件的名称;
9 allow-update { none; }; #不允许动态更新解析信息;
10 };
2、复制反向解析数据文件模板,作为服务器的反向解析数据文件。
cp -a /var/named/named.loopback /var/named/192.168.10.arpa
说明:
文件名必须和区域配置文件中定义的file的名称相同。
3、编辑反向解析数据文件。
注意域名后面的“.”,不要漏了。
vim /var/named/192.168.10.arpa
1 $TTL 1D
2 @ IN SOA lw.com.cn. root.lw.com.cn. ( #域名=lw.com.cn.root的邮箱=root.lw.com.cn.
3 0 ; serial
4 1D ; refresh
5 1H ; retry
6 1W ; expire
7 3H ) ; minimum
8 NS ns.lw.com.cn. #域名服务器记录
9 ns IN A 192.168.10.10 #地址记录
10 10 PTR www.lw.com.cn. # PTR为指针记录,仅用于反向解析;
11 10 PTR mail.lw.com.cn. # PTR为指针记录,仅用于反向解析;
4、重启named服务。
systemctl restart named
如果出现错误提示:Job for named.service failed because the control process exited with error code. See "systemctl status named.service" and "journalctl -xe" for details.请认真检查前面的配置,直到使用命令systemctl restart named重启named服务不出现错误提示为止。
5、在服务器或客户端使用命令nslookup进行测试。
[root@localhost ~]# nslookup
> 192.168.10.10 #在这里输入需要解析的IP地址。
Server: 127.0.0.1
Address: 127.0.0.1#53
10.10.168.192.in-addr.arpa name = mail.lw.com.cn.
10.10.168.192.in-addr.arpa name = www.lw.com.cn.