如何搭建本地DNS服务器(正解:即将域名解析为IP地址)

第一步:安装服务端软件

yum -y install bind  #bind(Berkeley Internet Name Domain)

第二步:修改全局配置文件

vim /etc/named.conf #进入配置文件

# 正常需要修改三处默认配置
listen-on port 53 {
      any; };   #开放53号端口对于任意地址的监听
allow-query {
      any;}           #允许所有主机对我们进行访问
recursion yes                 #拒绝递归查询方式,使用迭代查询方式,增加资源利用率

第三步:定义正解区域

#我们一般在/etc/named.rfc1912.zones这个文件中对正解(反解)区域进行定义。
#第二步所提及的全局配置文件/etc/named.conf关联了/etc/named.rfc1912.zones。所以在/etc/named.conf中也可以定义正解(反解)区域。但为了更加简洁,我们一般都在/etc/named.rfc1912.zones这个文件中对正解(反解)区域进行定义
vim /etc/named.rfc1912.zones  #打开文件

#在原内容下方添加下列内容
zone "yu.com" IN {
     			#一级域名为.com、二级域名为.yu
         type master;			#类型为主DNS服务器
         file "named.yu.com";		#指向正解文件为/var/named/named.yu.com
};

第四步:创建正解文件

vim /var/named/named.yu.com   

#文件内容如下
$TTL 1D								#定义下列所有记录缓存在客户端的时间
@       IN SOA dns.yu.com. root.localhost (			
                                         0       ; serial	#序列号,用于主从dns中判断是否为最新版本
                                         1D      ; refresh	#一天更新一次
                                         1H      ; retry	#若连接不上,等待1小时后重新尝试连接
                                         1W      ; expire	#超过一周仍无法下载便放弃下载
                                         3H )    ; minimum	#客户端找服务端做dns解析时,否定答案的缓存时间为3小时
@       IN      NS      dns.yu.com.				#NS记录表明了dns服务器的SDQN为dns.yu.com.
dns.yu.com.     IN      A       192.168.14.7			#下面三条A记录表明了域内主机的IP地址
www.yu.com.     IN      A       192.168.14.12
ftp             IN      A       192.168.14.32

第五步:重启服务,检查SELinux并开启防火墙的dns服务

systemctl restart named		#重启服务
setenforce 0			#关闭SELinux
firewall-cmd --add-service=dns	#开启防火墙的dns服务

第六步:测试

#打开另外一台虚拟机,修改/etc/resolv.conf的公共dns服务器,内容如下
# Generated by NetworkManager
nameserver 192.168.14.7

#尝试ping一下www.yu.com这个域名,得到以下信息
[root@client ftp]# ping www.yu.com
ping: www.yu.com: Name or service not known	#测试失败

第七步:排错

tailf /var/named/date/named.run		#打开日志查看,我发现没有读取到正解文件,检查权限,发现named.yu.com这个文件对于其他人来说没有读权限,而在我们在重启named服务时默认使用系统用户named来读取文件。
[root@server ~]# ll /var/named/
total 32
drwxrwx---. 2 named named 4096 Jan 16 16:24 data
drwxrwx---. 2 named named 4096 Jan 16 16:42 dynamic
-rw-r-----. 1 root  named 2253 Apr  5  2018 named.ca
-rw-r-----. 1 root  named  152 Dec 15  2009 named.empty
-rw-r-----. 1 root  named  152 Jun 21  2007 named.localhost
-rw-r-----. 1 root  named  168 Dec 15  2009 named.loopback
-rw-r-----. 1 root  root   238 Jan 16 16:31 named.yu.com
drwxrwx---. 2 named named 4096 Aug  8 20:16 slaves
# 此时有两种解决方案,给其他人加上读权限,但这样子做并不安全。所以我们采用另外一种方案,把文件的所属组改为named
[root@server ~]# chown .named /var/named/named.yu.com 
#重启服务
systemctl restart named

第八步:测试完成

#在第六步测试使用的虚拟机进行ping域名操作,成功。
[root@client ftp]# ping www.yu.com
PING www.yu.com (192.168.14.12) 56(84) bytes of data.
64 bytes from 192.168.14.12 (192.168.14.12): icmp_seq=1 ttl=64 time=1.24 ms
64 bytes from 192.168.14.12 (192.168.14.12): icmp_seq=2 ttl=64 time=0.251 ms

注:上述测试方法由于需要改动/etc/resolv.conf文件,会对正常上网造成影响,改来改去优点麻烦,下一篇文章会对dns客户端工具做介绍,而可于测试。

你可能感兴趣的:(linux,运维,centos)