域名解析DNS
DNS总览
权威名称服务器
存储并提供某区域(整个DNS域或DNS域的一部分)的实际数据。
权威名称服务器的类型包括:
Master:包含原始区域数据,有时称作主要名称服务器;
Slave:备份服务器,通过区域传送从Master服务器获得区域数据的副本,有时称作次要名称服务器。
非权威/递归名称服务器
客户端通过其查找来自权威名称服务器的数据。
递归名称服务器的类型包括仅缓存名称服务器:仅用于查找,对于非重要数据之外的任何内容都不具有权威性。
什么是域名解析
域名解析是为了方便记忆,DNS服务器将容易记住的域名解析成ip,当人们访问web站点时,不需要记住ip地址,只需要输入域名就可以直接访问到。
域名解析过程
在internet上的计算机是通过ip地址来定位的,给出一个ip地址,就可以找到与之对应的主机,但是ip数串是难记的,就发明了域名来代替ip地址,但是通过域名并不能访问到主机,中间添加一个依据域名来查找ip地址的过程,这个过程就是域名解析。
高速缓存DNS
DNS服务器可以高速缓存从其他DNS服务器收到DNS记录,也可以在DNS客户服务器中使用高速缓存,将其作为DNS 客户端保存在最近的查询过程中得到的信息高速缓存的方法。
高速缓存DNS的作用
当一个主机第一次访问一个网页时,该主机的DNS服务器从远处的服务器拿到数据(address、record),并进行高速缓存,这样在主机或其他主机进行下一次访问的时候,可以直接从主机的高速缓存中直接获取,这样的方式叫做高速缓存。
配置高速缓存DNS
首先实验环境:
- 真机连接wifi,ping114.114.114.114可以ping通;
- 在虚拟机网路配置文件设置网关:
- 此时真机相当于路由器,开启其路由功能:
- 此时虚拟机也可以ping通114.114.114.114
- 设置测试端主机:
在测试端主机作解析:
vim /etc/resolv.conf
在服务端安装dns(充当dns服务器)
yum install bind -y
开启dns服务器
systemctl start named
systemctl enable named
关闭火墙
firewall-cmd --permanent --add-service=dns
firewall-cmd --reload
firewall-cmd --list-all
查看dns服务配置文件
rpm -qc bind
主配置文件 | /etc/named.conf |
子配置文件 | /etc/named.rfc1912.zones |
数据目录 | /var/named |
dns服务端口 | 53 |
3.设置dns主配置文件
vim /etc/named.conf
编辑完后一定要重启服务:
systemctl restart named
测试:
dig www.baidu.com
DNS查找
客户端的Stub解析器将查询发送至/etc/resolv.conf中的名称服务器。如果名称服务器对于请求的信息具有权威性,会将权威答案发送至客户端。否则,如果名称服务器在其缓存中有请求的信息,则会将非权威答案发送至客户端。
如果缓存没有该信息,名称服务器将搜索权威名称服务器以查找信息,从根区域开始,按照DNS层次结构向下搜索,直至对于信息具有权威性的名称服务器,以此为客户端获得答案。在此情况中名称服务器将信息传递至客户端并在自己的缓存中保留一个副本,以备以后查找。
DNS资源记录
DNS区域采用资源记录的形式存储信息。每条资源记录均具有一个类型,表明其保留的数据类型。
A | 名称至IPv4地址,地址解析记录 |
AAAA | 名称至IPv6地址 |
CNAME | 名称至规范名称(包含A/AAAA记录的另外一个名称) |
PTR | IPv4/IPv6地址至名称,反向解析记录 |
MX | 用于名称的邮件交换器(向何处发送其电子邮件) |
NS | 域名的名称服务器 |
SOA | 授权起始,DNS区域的管理信息 |
DNS排错
它显示DNS查找的详情信息,其中包括为什么查询失败。
NOERROR | 查询成功 |
NXDOMAIN | DNS服务器提示不存在这样的设备 |
SERVFAI | DNS服务器停机或DNSSEC响应验证失败 |
REFUSED | DNS服务器拒绝回答 |
DNS 权威正向解析
自己的主机维护一个域名,当客户端访问这个域名时,自己的主机开启dns缓存功能,可以解析出域名的ip地址。
作用
用于域名到ip地址的映射,当DNS客户端请求解析某个域名时,DNS服务端通过正向查找,并返回给DNS客户端对应的ip地址。
正向解析部署
注销dns请求转发到114.114.114.114这个服务区:
vim /etc/named.conf ##dns告诉缓存
维护域名为mia.org
vim /etc/named.rfc1912.zones ##dns子配置文件,设置要维护的域名
在dns的数据目录里有域名解析文件,named.localhost存放的是172.0.0.1这个dns服务器,把它的模版拷贝给自己建立的zone域名解析文件:
cd /var/named/
cp -p named.localhost mia.org.zone ##-p表示将文件的权限也复制过来
创建域名解析库文件
vim /var/named/mia.org.zone
systemctl restart named
测试:
dig www.mia.org
规范地址转换
vim /var/named/mia.org.zone
sytemctl restart named
在客户端进行测试:
访问时会看到访问域的ip顺序发生变化
dig www.mia.org
邮件解析
指向一个邮件服务器,用于电子邮件系统收邮件时,根据收信人的地址后缀来定位邮件服务器。
编辑子配置文件:
vim /var/named/mia.org.zone
systemctl restart named
给mia.org这个域里发送一个邮件:
mail root@mia.org
查看邮件列队:
mailq
> /var/log/maillog ##清空邮件日志
mail ##查看邮件是否发送
DNS反向解析
编辑子配置文件:
vim /etc/named.rfc1912.zones
进入dns的数据目录,把named.loopback的这个文件模版复制到自己建立的文件中。
cd /var/named/
cp -p named.loopback 172.25.254.ptr##-p是将文件的权限也复制过来,-p一定要加上
编辑172.25.254.ptr文件:
vim 172.25.254.ptr
重启dns服务:
systemctl restart named
测试:
dig -x 172.25.254.111 ##-x表示反向解析
DNS双向解析
双向解析就是当与目标ip处于同一网段时属于内网ip;当与目标ip不处于同一网段时属于外网ip。
实验环境:
需要两个ip,一个充当dns服务器;
vim /etc/sysconfig/network-scripts/ifcfg-eth0
sytemctl restart network
查看是否配置好ip:
查看53多口是否对于这两个ip开启:
另一个充当内网ip;
vim /etc/sysconfig/network-scripts/ifcfg-eh0 ##设置ip
vim /etc/resolv.conf ##添加dns
hostnamectl set-hostname nana.mia.org ##设置主机名称。使主机与dns主机处于同一域中
编辑主配置文件:
vim /etc/named.conf
创建内网配置文件:
cd /var/named/
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.local.zones
vim /etc/named.rfc1912.local.zones
cd /var/named/
cp -p mia.org.zone mia.org.local.zone
vim mia.org.local.zone
内网测试:
DNS集群
在一台主机更改数据时,其他主机就会同步数据,这就是DNS的集群。
当很多用户访问dns时可能网络会崩掉,就会需要一台辅助dns主机,帮助主dns分担压力。
辅助dns需要同步主dns中的所有数据。
打开另一台主机做为辅助dns:
配置好yum仓库
安装bind软件;
yum install bind -y
开启火墙
修改主配置文件:
vim /etc/named.conf
在子配置文件中指定辅助dns信息:
vim /etc/named.rfc1912.zones
systemctl restart named##重启服务之后才能看到数据同步到slaves/这个目录里
更改dns:
vim /etc/resolv.conf
主DNS:
更改子配置文件:
vim /etc/named.rfc1912.zones
测试:
dig www.mia.org
测试结果显示主DNS、辅助DNS显示的ip一样
主dns显示结果;
辅dns显示结果:
当更改文件参数时,结果显示辅dns主机随主dns主机的更改而更改:
主dns:
vim /var/named/westos.org.zone
DNS更新
基于ip的更新
vim /etc/named.rfc1912.zones
systemctl restart named
cp /var/named/mia.org.zone /mnt/ -p ##备份一份,方便还原
ls -ld /var/named
chmod g+w /var/named (770) ##添加权限
在测试端测试:
添加dns
nsupdate
> server 172.25.254.164
> update add hello.mia.org 86400 A 172.25.254.111##这个记录在客户端默认是86400s(一天)
> send
> quit
当测试端上传新域名时,dns服务端机会出现一个/var/named/mia.org.zone.jnl文件,里面专门记录着dns新数据,当dns服务没有重启时,dns服务端可以dig到新域名地址,但是在/var/named/mia.org.zone文件中没有显示出来,当dns服务器重启后,此文件中才会显示新域名信息。
删除dns
nsupdate
> server 172.25.254.164
> update delete hello.mia.org
> send
> quit
当dns服务重新启动时,记录dns数据信息也将删除,但是dns主从同步参数的数值将会改变:
基于密钥的更新
删除上述实验产生的文件:
cd /var/named/
rm -fr westos.org.zone*
cp /mnt/westos.org.zone . -p ##"."拷贝到当前目录
systemctl restart nmaed
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST rain
上行代码一些参数的解释:
-a | 加密方式 |
-b | 加密长度 |
-n | 加密用途 |
HOST | 做解析 |
rain | 生成key的名字 |
cat Krain.+157+38485.private ##拷贝钥匙密码
cp -p /etc/rndc.key /etc/rain.key ##拷贝密钥文件信息,生成自己的key文件
vim /etc/rain.key ##编辑密钥文件信息
systemctl restart named
scp Kwestos.+157+60868.* root@172.25.254.200:/mnt/ ##把密钥传递给用户
vim /etc/named.conf ##指定key,不能破坏dns的运行参数
vim /etc/named.rfc1912.zones ##指定更新文件的用户
systemctl restart named
测试:
当用户更新dns时,dns服务端就会出现/var/named/mia.org.zone.jnl文件,此文件记录者dns更新的信息。
cd /mnt/
nsupdate -k Kwestos.+157+60868.private
如果用户添加或删除dns信息时,只有当dns服务重启时,/var/named/mia.org.zone文件才会更新。
动态域名解析
当客户端是dhcp的工作方式,dns解析也会随着客户端的ip信息的改变而改变,这种方式称为动态域名解析。在web领域里被称作“花生壳”。
dns服务端:
安装dhcpd,配置文件是没有的,需要拷贝一份,并且编辑配置文件:
yum install dhcpd -y
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf
systemctl restart dhcpd
firewall-cmd --permanent --add-service=dhcp
客户端:
修改主机名称,使其域名和dns服务端的域名处在同一个域名里:
hostnamectl set-hostname nana.mia.com
更改主机为动态网络:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
systemctl restart network
查看获取到的ip地址是否在ip池的范围内:
ifconfig eth0
测试:
dig nana.mia.com