最近学习到了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
#启动时间同步)
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服务器已经配置完成。
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服务器已经配置完成了。