DNS服务搭建(超详细)
目录
一、什么是DNS?
DNS是域名系统(Domain Name System)的缩写,它是一个用于将域名解析为IP地址的系统。在互联网上,每个设备都需要一个唯一的IP地址来进行通信,但人类更容易记住的是域名而非IP地址。DNS的作用就是将人类可读的域名解析为对应的IP地址,从而使设备能够相互通信和访问互联网上的各种服务和资源。
二、DNS工作原理及解析过程
我们以www.baidu.com
这个域名为例,来看一看当你访问 www.baidu.com 时,会发生哪些事
1.先查找本地 DNS 缓存(自己的电脑上),有则返回,没有则进入下一步
2.查看本地 hosts 文件有没有相应的映射记录,有则返回,没有则进入下一步
3.向本地 DNS 服务器(一般都是你的网络接入服务器商提供,比如中国电信,中国移动)发 送请求进行查询,本地DNS服务器收到请求后,会先查下自己的缓存记录,如果查到了直接返回就结束了,如果没有查到,本地DNS服务器就会向DNS的根域名服务器发起查询请求:请问老大, www.baidu.com 的ip地址是啥?
4.根域名服务器收到请求后,看到这是个 .com 的域名,就回信说:这个域名是由 .com 小老弟管理的,你去问他好了,这是.com老弟的联系方式(ip1)。
5.本地 DNS 服务器接收到回信后,照着老大给的联系方式(ip1),马上给 .com 这个顶级域名服务器发起请求:请问 .com 老大哥,www.baidu.com 的ip地址是啥?
6. .com 顶级域名服务器接收到请求后,看到这是 baidu.com 的域名,就回信说:这个域名是 .163.com 小老弟管理的,你就去问他就行了,这是他的联系方式(ip2)
7.本地 DNS 服务器接收到回信后,按照顶级域名老大哥的指引(ip2),又向 .163.com 这个权威域名服务器发起请求:请问 baidu.com 老大哥,请问 www.baidu.com 的ip地址是啥?
8. baidu.com 权威域名服务器接收到请求后,确认了是自己管理的域名,马上查了下自己的小本本,把 www.baidu.com 的ip告诉了 本地DNS服务器。
9.本地DNS服务器接收到回信后,非常地开心,这下总算拿到了www.baidu.com的ip了,马上把这个消息告诉了要求查询的客户(就是你的电脑)。由于这个过程比较漫长,本地DNS服务器为了节省时间,也为了尽量不去打扰各位老大哥,就把这个查询结果偷偷地记在了自己的小本本上,方便下次有人来查询时,可以快速回应。
三、各种资源记录
1、区域解析库详解:
SOA:
Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须 位于解析库的第一条记录SOA,是起始授权机构记录,说明了在众多 NS 记录里哪一 台才是主要的服务器。在任何DNS记录文件中,都是以SOA ( Startof Authority )记录 开始。SOA资源记录表明此DNS名称服务器是该DNS域中数据信息的最佳来源。
A(internet Address):
作用,域名解析成IP地址,正向解析
AAAA(FQDN):
--> IPV6
PTR(PoinTeR):
反向解析,ip地址解析成域名
NS(Name Server):
专用于标明当前区域的DNS服务器,服务器类型为域名服务器
CNAME :
Canonical Name,别名记录
MX(Mail eXchanger)
邮件交换器
TXT:
对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮件)记录,https验证等
SOA记录与NS记录的区别:
NS记录表示域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析;SOA记录设置一些数据版本和更新以及过期时间等信息。
2、主配置文件详解
[root@localhost ~]# vim /etc/named.conf
options {
listen-on port 53 { any; }; 'ipv4 监听地址和端口 {一般更改为any}'
listen-on-v6 port 53 { ::1; };
directory "/var/named"; '区域数据文件的默认存放位置'
...省略内容
allow-query { any; }; '允许使用本DNS服务的网段:{一般更改为any}'
}
四、试验环境
本次实验需要三台Linux主机,一台作为主DNS服务器,一台作为从属DNS服务器,还要一台作为DNS客户端。并且三个Linux主机必须处于同一网段,可以互相ping通。主DNS服务器的IP地址为192.168.12.11,从属DNS服务器的IP地址为192.168.12.12,客户机的DNS服务器的IP地址为192.168.12.13。三个必须都是静态的。
五、搭建主DNS服务器
1、配置ip地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=staticIPADDR=192.168.12.11
NETMASK=255.255.255.0
按照上述的方法可以把从DNS192.168.12.12和客户端192.168.12.13ip配置完成
然后分别重启三台机器网卡
systemctl restart network
测试三台主机是否能ping通
[root@control sbin]# ping 192.168.12.12
PING 192.168.12.12 (192.168.12.12) 56(84) bytes of data.
64 bytes from 192.168.12.12: icmp_seq=1 ttl=64 time=0.192 ms
64 bytes from 192.168.12.12: icmp_seq=2 ttl=64 time=0.234 ms
^C
--- 192.168.12.12 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.192/0.213/0.234/0.021 ms
[root@control sbin]# ^C
[root@control sbin]# ping 192.168.12.13
PING 192.168.12.13 (192.168.12.13) 56(84) bytes of data.
64 bytes from 192.168.12.13: icmp_seq=1 ttl=64 time=0.383 ms
64 bytes from 192.168.12.13: icmp_seq=2 ttl=64 time=0.368 ms
64 bytes from 192.168.12.13: icmp_seq=3 ttl=64 time=0.214 ms
^C
--- 192.168.12.13 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.214/0.321/0.383/0.079 ms
[root@control sbin]#
2、安装bind
yum -y install bind
3、修改主配置文件
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
allow-query { any; };
recursion yes; //递归
forwarders {192.168.12.2; }; //向上级解析
};
zone "wang.com" IN {
type master;
file "wang.com.zone";
};
zone "12.168.192.in-addr.arpa" IN {
type master;
file "192.168.12.zone";
};
include "/etc/named.rfc1912.zones";
# include "/etc/named.root.key"; //这里要注释掉
检查配置文件语法:
[root@control etc]# named-checkconf
[root@control etc]#
如果没有报错说明我们的配置文件修改无问题
4、新建正向区域配置文件
[root@control etc]# cat /var/named/wang.com.zone
$TTL 1D
@ IN SOA wang.com. root.wang.com. (
0 ;serial #更新序列号
1D ;refresh #更新时间
1H ;retry #重试延时
1W ;expire #失效时间
3H) ;minimum #无效解析记录的缓存时间
@ IN NS ns1.wang.com.
IN MX 10 mail.wang.com.
ns1 IN A 192.168.12.11
www IN A 192.168.12.12
www IN A 192.168.12.13
www IN A 192.168.12.11
* IN A 192.168.12.12
ftp IN A 192.168.12.13
mail IN A 192.168.12.11
vod IN CNAME ftp.wang.com.
news IN CNAME www.wang.com.
检测正向区域文件是否正确
[root@control etc]# cd /var/named/
[root@control named]#
[root@control named]#
[root@control named]# named-checkzone wang.com wang.com.zone
zone wang.com/IN: loaded serial 0
OK
[root@control named]#
OK表明正向区域配置文件没有错误
5、新建反向区域配置文件
[root@control named]# cat 192.168.12.zone
$TTL 1D
@ IN SOA wang.com. root.wang.com. (
0 ;serial
1D ;refresh
1H ;retry
1W ;expire
3H) ;minimum
@ IN NS ns1.wang.com.
11 IN PTR ns1
12 IN PTR www.wang.com.
13 IN PTR www.wang.com.
11 IN PTR www.wang.com.
12 IN PTR ftp.wang.com.
13 IN PTR mail.wang.com.
11 IN PTR vod.wang.com.
12 IN PTR news.wang.com.
检测反向区域文件是否正确
[root@control named]# named-checkzone 12.168.192.in-addr.arpa 192.168.12.zone
zone 12.168.192.in-addr.arpa/IN: loaded serial 0
OK
[root@control named]#
ok表示文件没有问题
6、重启named服务使刚才的修改生效
systemctl restart named
7、修改网卡加入dns
[root@control named]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
#加入下面的两个ip
DNS1=192.168.12.11
DNS2=192.168.12.12
重启网卡
systemctl restart network
查看本机的dns的IP地址
[root@control named]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.12.11
nameserver 192.168.12.12
nameserver 192.168.12.2
[root@control named]#
8、在客户机(192.168.12.13)上进行域名解析
[root@node3 etc]# nslookup www.wang.com
Server: 192.168.12.11
Address: 192.168.12.11#53Name: www.wang.com
Address: 192.168.12.11
Name: www.wang.com
Address: 192.168.12.13
Name: www.wang.com
Address: 192.168.12.12[root@node3 etc]# hosname -I
-bash: hosname: 未找到命令
[root@node3 etc]# hostname -I
192.168.12.13
[root@node3 etc]#
如果提示没有这个命令:
先安装工具包然后在进行测试
yum install bind-utils -y
8、遇到的问题
安装工具包后 域名解析还是有问题
1、去查看客户机的dns文件发现文件未生效
[root@node3 etc]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.12.2
[root@node3 etc]#
去查看网卡cat /etc/sysconfig/network-scripts/ifcfg-ens33 发现里面是配置了dns的
然后我又重启了一下网卡,发现还是没有
最后进行cat /etc/resolv.conf 文件对比 发现客户机文件权限多了一个点
这个点表示selinux权限 当我们打开resolv.conf这个文件时会显示只读,这样就把这个问题给排查出来了,因为客户机resolv.conf这个文件是只读的没有权限写入,所以重启网卡resolv.conf这个文件未生效
解决办法:
1、把当前resolv.conf文件备份一份,
cp resolv.con resolv.conf20231012
2、再把resolv.conf文件删除
删除的时候可能会删除不掉
用命令lsattr查看
[root@control named]# lsattr /etc/resolv.conf
--------i------- /etc/resolv.conf
[root@control named]#默认文件是没有i属性的有的话无法删除 那咱们就直接去掉i属性
chattr -i /etc/resolv.conf
然后在进行是删除就可以删除了
删除了之后把备份的resolv.conf20231012文件改名为resolv.conf这个文件
在重启网卡即可生效
六、从服务器搭建
1、安装bind
# yum install bind -y
2、修改主配置文件
options {
listen-on port 53 { 127.0.0.1;192.168.12.12; };
directory "/var/named";
allow-query { 0.0.0.0/0; };
recursion yes; //递归
forwarders {192.168.191.2; }; //向上级解析
};
#上面是全局配置部分,53为默认端口,192.168.12.12为从属DNS域名服务器,allow-query { 0.0.0.0/0; };表明允许所有的IP查询
zone "wang.com" IN {
type slave;
file "slaves/wang.com.zone";
masters { 192.168.12.11; };
};
#上面是正向区域配置部分,wang.com 为域名后缀,type slave表明这是从属服务器,file指定文件存储目录,masters{ 192.168.12.11} 指明了主DNS服务器的IP地址。( file “slaves/demo.com.zone”;)
zone "12.168.192.in-addr.arpa" IN {
type slave;
file "slaves/192.168.12.zone";
masters { 192.168.12.11; };
};
#上面是反向区域配置部分,其含义与正向区域配置部分含义相同。(12.168.192.in-addr.arpa; file “slaves/192.168.12.zone”
检查配置文件是否正确
[root@node2 ~]# named-checkconf
[root@node2 ~]#
[root@node2 ~]#
这里表示配置文件没有问题
3、查看主域名服务器同步过来的文件
[root@node2 ~]# cd /var/named/slaves/
[root@node2 slaves]# ls
[root@node2 slaves]#
[root@node2 slaves]#
大家就会有疑问了?为啥主域名服务器没有把配置文件同步过来,其实这里是因为我们刚刚修改了从服务器的配置文件但是还没有重启从dns服务器,所以没有同步过来
重启从dns服务器
systemctl restart named
再次查看发现从dns服务器上已经有主dns服务器同步过来的正向和反向解析文件了
[root@node2 slaves]# ls
192.168.12.zone wang.com.zone
[root@node2 slaves]#
[root@node2 slaves]#
4、验证
正向解析
[root@node3 etc]# hostname -I
192.168.12.13
[root@node3 etc]# nslookup www.wang.com
Server: 192.168.12.11
Address: 192.168.12.11#53Name: www.wang.com
Address: 192.168.12.11
Name: www.wang.com
Address: 192.168.12.12
Name: www.wang.com
Address: 192.168.12.13[root@node3 etc]#
反向解析
[root@node3 etc]# nslookup
> 192.168.12.12
12.12.168.192.in-addr.arpa name = news.wang.com.
12.12.168.192.in-addr.arpa name = ftp.wang.com.
12.12.168.192.in-addr.arpa name = www.wang.com.
>
现在正向解析和反向解析都没有问题,到这里dns搭建就完成了!