什么是DNS?
域名系统(Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。
DNS分类
权威名称服务器
存储并提供某区域 ( 整个 DNS 域或 DNS 域的一部分 ) 的实际数据。
权威名称服务器的类型包括:
Master : 包含原始区域数据。有时称作 “主要 ”名称服务器
Slave : 备份服务器 , 通过区域传送从 Master 服务器获得的区域数据
的副本。有时称作 “次要 ”名称服务器
非权威 / 递归名称服务器
客户端通过其查找来自权威名称服务器的数据。递归名称服务器的类型包括
仅缓存名称服务器 : 仅用于查找 , 对于非重要数据之外的任何内容都不具有权威性
安装部署DNS
首先,打开一台虚拟机,配置好网络
重启网络服务,查看网络路由配置
真机开启防火墙伪装
修改主机名为dns_server
hostnamectl set-hostname dns_server.even.com
ping 114.114.114.114
发现能ping通
搭建yum源,查找DNS所需要的安装包
安装bind.x86-64
查看DNS服务在系统中的安装文件路径rpm -ql bind
/etc/named.conf 主配置文件
/etc/named.rfc1912.zones 子配置文件
/etc/rndc.conf 加密文件
/var/named 数据目录,DNS服务器所使用的其他数据文件
/var/named/named.localhost DNS服务器所使用的其他数据文件,正向解析
/var/named/named.loopback DNS服务器所使用的其他数据文件,反向解析
开启服务状态
查看dns是否被火墙允许
防火墙列表中加入DNS服务
firewall-cmd --permanent --add-service=dns
firewall-cmd --reload
firewall-cmd --list-all
DNS部署成功
DNS高速缓存
客户端上的 Stub 解析器 将查询发送至 /etc/resolv.conf 中的名称服务器,如果名称服务器对于请求的信息具有权威性 , 会将权威答案发送至客户端,否则 , 如果名称服务器在其缓存中有请求的信息 , 则会将非权威答案发送至客户端,如果缓存中没有信息 , 名称服务器将搜索权威名称服务器以查找信息 , 从根区域开始 , 按照DNS 层次结构向下搜索, 直至对于信息有具有权威性的名称服务器 , 以此为客户端获得答案。在此情况中,名称服务器将信息传递至客户端并在自己的缓存中保留一个副本 , 以备以后查找。
修改DNS服务器的主配置文件vim /etc/named.conf
,并重启服务systemctl restart named
13 listen-on port 53 { any; }; 将53端口的ip设置为本机ip
19 allow-query { any; }; 允许哪台主机询问
20 forwarders{114.114.114.114;}; 添加这行的目的是,不问根域名.,直接询问
34 dnssec-validation no; 不进行安全检测
修改dns高速缓存的配置文件/etc/resolv.conf
在另外一台真机和虚拟机上测试,在配置文件/etc/resolv.conf中添加nameserver我们DNS服务器的ip
注意:这个文件即改即生效
测试的真机和虚拟机同时dig www.baidu.com
第一台(虚拟机)
第二台(真机)
可以看到第二台真机的查询时间明显缩短
DNS 排错
DNS的正向解析
正向解析就是将域名解析为ip地址的过程。
在DNS服务器的子配置文件/etc/named.rfc1912.zones中,复制第19-23行的内容到24行,并修改这几行为
zone "westos.com" IN { ##你要维护的域
type master; ##类型是权威(主)DNS
file "westos.com.zone"; ##在这个文件中查询
allow-update { none; };
在数据目录/var/named
下,复制文件named.localhost的内容到你要查询的文件中,我这里是westos.com.zone,注意一定要用-p复制,因为要复制权限
在even.com.zone文件中修改以下内容
重启服务,在客户端测试
dig输出的部分内容
• 标题指出关于查询和答案的信息 , 其中包括响应状态和设置的任何特殊标记 ( aa 表示权威答案 , 等等 )
– QUESTION : 提出实际的 DNS 查询
– ANSWER : 响应 ( 如果有 )
– AUTHORITY : 负责域 / 区域的名称服务器
– ADDITIONAL : 提供的其他信息 , 通常是关于名称服务器
– 底部的注释指出发送查询的递归名称服务器以及获得响应所花费的时间
DNS的轮询
DNS的轮询是指一个域名针对多个ip的A记录的解析,DNS服务器将解析请求按照A记录的顺序,逐一分配到不同的ip上,这样就实现了简单的负载均衡
我们在DNS服务器的even.com.zone中加入以下内容,并重启服务:
在客户端测试,可以看到我们dig同一个域名,但是对应ip的前后顺序发生了改变
DNS的邮件服务
SMTP
简单邮件传输协议 (Simple Mail Transfer Protocol,SMTP):是一个基于文本的协议。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本会被传输。SMTP使用TCP端口25。要为一个给定的域名决定一个SMTP服务器,需要使用MX (Mail eXchange) DNS。
POP3
POP3,全名为“Post Office Protocol - Version 3”,即“邮局协议版本3”。主要用于支持使用客户端远程管理在服务器上的电子邮件,POP3协议默认端口是110。
mx记录
邮件交换记录 (MX record)是域名系统(DNS)中的一种资源记录类型,用于指定负责处理发往收件人域名的邮件服务器。MX记录允许设置一个优先级,当多个邮件服务器可用时,会根据该值决定投递邮件的服务器。简单邮件传输协议(SMTP)会根据MX记录的值来决定邮件的路由过程。
我们在DNS服务器的even.com.zone文件中加入以下内容,并重启服务
在客户端发送邮件测试:
在DNS服务器端:
证实了邮件发送不成功是接口的问题
DNS的反向解析
PTR记录
PTR记录(Pointer Record),是电子邮件系统中的邮件交换记录的一种,常被用于反向地址解析,也就是将ip地址解析为域名的过程。
在DNS服务器的子配置文件/etc/named.rfc1912.zones
复制第36-40行的内容到41行,并修改为:
在数据目录/var/named
下,复制named.loopback文件到172.25.254.ptr文件,也就是要读的文件中,注意一定要加-p:
编辑172.25.254.ptr文件,并重启服务
客户端测试
dig -x 172.25.254.111
dig -x 172.25.254.222
DNS的双向解析
双向解析的目的是让不同的客户端解析到不同的ip,即内网和外网解析到不同的ip。
我们这里的内网指的是本机,外网指的是其他主机,即让本机和其他主机解析到不同的ip。
首先,我们在数据目录/var/named
下建立一个外网的域名文件,修改外网域名文件的ip为1.1.1.主机号
cp -p even.com.zone even.com.inter.zone 注意,一定要-p复制
:%s/172.25.254/1.1.1/
然后,再建立一个外网的子配置文件,修改内容,让他读外网的域名文件:
然后,我们修改主配置文件,首先注释掉单向解析的行,通过man 5 named.conf
,可以查看具体的帮助信息:
格式如下
我们按照格式修改主配置文件为以下这样,并重启服务
分别在本台主机和其他主机进行测试
本台主机:
其他主机:
辅助DNS
辅助dns是针对外网。
集群:主的通知辅助的 ,目的是数据同步,让多台主机为一台主机工作。
DNS主配置文件中注释掉即全部打开。
首先,我们在另一台虚拟机中搭建DNS服务,所有操作同上,修改主机名为dns_slave,并修改配置文件/etc/resolv.conf中的nameserver为他自己的ip 172.25.254.224。
在子配置文件中修改以下:
然后,我们先注释掉双向解析在dns服务器主配置文件中添加的内容,恢复原来的内容
在子配置文件中修改以下内容
我们通过man 5 named.conf 查找also-notify
在域名文件even.westos.zone文件中修改域名对应的ip,并修改serial的值,重启服务
测试:在客户端dig www.westos.com
注意:每次更改域名文件后必须更改serial的数值,这个数值最大10位
DNS的远程更新
首先,在enforcing的状态下将named_write_master_zone的bool值设为1:
基于ip
在要更新的DNS服务器,我们首先将数据目录/var/named
下的域名文件复制到一个空目录下,保留备份
然后,我们修改子配置文件,并重启服务
测试:
修改数据目录的权限
其他主机可以解析这个域名
但此时该域名和他对应的ip并没有写到我们的域名文件中,当我们重启服务systemctl restart named
后,他就添加到域名文件中了。
另外,若想删除这个域名,命令如下:
测试删除是否成功
此时在数据目录/var/named下生成了一个.jnl文件,我们可以查看他的文件类型
说明它是数据类型
基于key
首先在进行这个实验之前,我们先清除之前在数据目录/var/named
下的.jnl文件,或者直接删除与域名有关的文件,再将在/opt下备份的域名文件拷回来,这样做的原因是ip更新和key更新会有冲突
复制加密文件/etc/rndc.key到/etc目录下,文件命名为westos.key
在一个目录下生成公钥和私钥
查看私钥文件
修改/etc/westos.key中的secret为私钥中的key
将加密文件/etc/even.key指定到主配置文件中,目的是让主配置文件识别钥匙
将子配置文件中的更新方式修改,使他为key加密更新,并重启服务
测试:
更新成功,同样的,删除命令如下:
删除成功:
注意:同样的,添加和删除成功后重启服务才会更新到域名文件中。基于key更新的方式同样生成了.jnl文件
DDNS(花生壳)
DDNS(Dynamic Domain Name Server)是动态域名服务的缩写。是指域名系统中一种自动更新名称服务器(name server)内容的技术。DDNS是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现动态域名解析。
DDNS=DHCP+DNS 动态域名解析,是指dhcp主动更新dns。
此实验的前提是key更新首先做好。
先删除DNS服务器端域名文件中多余的ip行,只留dns行,防止对我们的实验产生干扰
我这里的DNS和DHCP服务器在同一台虚拟机,我们在这台虚拟机下载dhcp服务,并修改配置文件/etc/dhcp/dhcpd.conf
,删掉27,28以及36行以后的内容,重启dhcp服务。
我们可以man 5 dhcpd.conf
搜与dhcp_update有关的配置信息
在客户端,修改主机名称为news.even.com
,并修改网络为动态网络,重启网络,查看分配到的ip在不在我们设定的范围内,并dig news.even.com