DNS主从服务器配置详解

最近学习到了linux下的DNS服务配置,分享一下配置DNS主从服务器的步骤和一些经验。保险起见,我们在修改配置文件之前,应该备份一下,避免因为修改错误影响系统。

做这个实验前我们要先了解下,什么是DNS?

DNS(Domain Name
System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC
2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明。

这里简单说下DNS的作用和使用端口号,详细的可以自行百度查看。

实验环境:CentOS 7.3
DNS主机:192.168.1.44
DNS从机:192.168.1.54
测 试 机:192.168.1.64
(如果是新建虚拟机,记得安装系统时,把时区改为Asia/Shanghai,确保三台主机的时间同步。如果忘了改也没关系,我们按照下面步骤手动改:
[root@localhost ~]# timedatectl set-timezone Asia/Shanghai #设置时区为亚洲/上海
[root@localhost ~]# timedatectl set-ntp yes #启动时间同步)

主DNS服务器配置

1. 关闭SELinux
查看SELinux状态

[root@localhost ~]# getenforce
Enforcing

如图显示Enforcing 代表SELinux是开启状态。
我们用下面的命令,更改SELinux配置文件,关闭SELinux。

[root@localhost ~]# sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config

执行完命令后重启主机

[root@localhost ~]# reboot

重启后检查SELinux状态,下图为关闭状态。

[root@localhost ~]# getenforce
Disabled

2. 安装bind

[root@localhost ~]# yum -y install bind*

bind(伯克利因特网名称域)服务是全球范围内使用最广泛、最安全可靠且高效的域名解析服务程序。
程序名 named
主程序 /usr/sbin/named
主配置文件 /etc/named.conf
区域配置文件 /etc/named.rfc1912.zones

安装完成后开启named服务并设置为开机启动。

[root@localhost ~]# systemctl start named				#开启服务
[root@localhost ~]# systemctl enable named			#设置开机启动

查看服务状态

[root@localhost ~]# systemctl status named			#查看服务状态

3. 开启53端口

[root@localhost ~]# firewall-cmd --zone=public --add-port=53/tcp --permanent
[root@localhost ~]# firewall-cmd --zone=public --add-port=53/udp --permanent
[root@localhost ~]# firewall-cmd --reload					#更新配置

查看端口是否开启

[root@localhost ~]# iptables -L -n |grep 53
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:53 ctstate NEW
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:53 ctstate NEW

4. 修改主配置文件

[root@localhost ~]# vi /etc/named.conf

修改文件中的13和21行中{}内为any

13         listen-on port 53 { any; };				#服务器上的所有IP地址均可提供DNS域名解析服务
21         allow-query     { any; };				#允许所有人对本服务器发送DNS查询请求

5. 修改区域配置文件

[root@localhost ~]# vi /etc/named.rfc1912.zones 
zone "linuxprobe.com" IN {
        type master;								#表示该服务为域内主DNS服务器
        file "linuxprobe.com.zone";					#该域的配置文件的名字,放在/var/named/
        allow-update { 192.168.1.54; };				#括号内为从服务器地址
};

"/etc/named.rfc1912.zones" 5L, 113C

6. 修改数据配置文件
我们从/var/named/下面复制一份正向解析的模板文件,然后把域名和IP地址对应数据填写进去。(named-checkconf、named-checkzone 这两个命令可以帮助我们检查语法或参数中的错误。)
cp -a 可以保留原始文件的所有者、所属组、权限属性等信息,以便让bind服务程序顺利读取文件内容。

[root@localhost ~]# cd /var/named/
[root@localhost named]# ls -al named.localhost 
-rw-r-----. 1 root named 152 Jun 21  2007 named.localhost
[root@localhost named]# cp -a named.localhost linuxprobe.com.zone 

[root@localhost named]# vi linuxprobe.com.zone 
$TTL 1D
@       IN SOA  linuxprobe.com. root.linuxprobe.com. (
                                        200     ; serial                 #更新序列号,这里主>从即刻。
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns.linuxprobe.com.										#域名服务器记录
ns      IN A    192.168.10.10												#地址记录
        IN MX 10 mail.linuxprobe.com.										#邮箱交换记录
mail    IN A    192.168.10.10												#地址记录
www     IN A    192.168.10.10												#地址记录
bbs     IN A    192.168.0.20 												#地址记录
                                                                     	                                                                                                                                                                                                                                                                       
"linuxprobe.com.zone" 13L, 293C

修改完这两个配置文件后,重启服务。

[root@localhost named]# systemctl restart named

7.测试DNS解析

这里有两种测试方法:
1.使用DNS主机测试

[root@localhost named]# nslookup
> www.linuxprobe.com
Server:         192.168.1.44
Address:        192.168.1.44#53

Name:   www.linuxprobe.com
Address: 192.168.10.10
> 

2.使用测试机测试
修改etc/resolv.conf文件,添加主DNS地址,ping测试域名。

[root@localhost ~]# vi /etc/resolv.conf 
nameserver 192.168.1.44
                                                                                                                            
"/etc/resolv.conf" 2L, 48C

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

因为试验中设置的IP地址不是正确的IP地址,所以ping不通,但是在括号内已经解析出域名所对应的IP地址。
到这里主DNS服务器已经配置完成。

配置从DNS服务器

1. 调整时间
2. 关闭SELinux
3. 安装bind
4. 开启53端口
5. 修改主配置文件
6. 修改区域配置文件

由于1-5步骤与主DNS服务器配置完全相同,所以这里不再写出,只写出不同之处。

[root@localhost ~]# vi /etc/named.rfc1912.zones 
zone "linuxprobe.com" IN {
        type slave;								#表示该服务为域内从DNS服务器
        file "slaves/linuxprobe.com.zone";			#该域的配置文件的名字
        masters { 192.168.1.44; };					#括号内为主DNS服务器的地址
};                                                                                                                                                                 
"/etc/named.rfc1912.zones" 5L, 121C

7.重启服务,更新配置文件
主从服务器都重启一下named服务,当从服务器重新启动named服务后,一般就会自动从主服务器上同步数据配置文件了。

[root@localhost ~]# systemctl restart named

这时我们进入slaves文件夹下,就能看见数据配置文件了。

[root@localhost ~]# cd /var/named/slaves/
[root@localhost slaves]# ls
linuxprobe.com.zone

此时DNS从服务器也配置完成了,接下来开始测试。

测试

打开我们的测试机,修改etc/resolv.conf文件,添加主、从DNS地址,使用nslookup 解析域名。
修改配置文件

[root@localhost ~]# vi /etc/resolv.conf 
eserver 192.168.1.44
nameserver 192.168.1.54
                                                                                                                                                           
"/etc/resolv.conf" 2L, 48C

1.开启主、从DNS服务器
测试结果:

[root@localhost ~]# nslookup
> www.linuxprobe.com
Server:         192.168.1.44
Address:        192.168.1.44#53

Name:   www.linuxprobe.com
Address: 192.168.10.10
> 

2.关闭主DNS服务器、打开从DNS服务器

[root@localhost named]# systemctl stop named

测试结果:

> www.linuxprobe.com
Server:         192.168.1.54
Address:        192.168.1.54#53

Name:   www.linuxprobe.com
Address: 192.168.10.10
> 

从实验结果看,我们的主从DNS服务器已经配置完成了。

你可能感兴趣的:(linux系统)