域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。
1.权威名称服务器:存储并提供某区域(整个DNS域或DNS域的一部分)的实际数据
权威名称服务器的类型包括:
Master:包含原始区域数据,有时称作“主要”名称服务器
Slave:备份服务器,通过区域传送,从Master服务器获得的区域副本,有时称作:次要“名称服务器。
2.非权威/递归名称服务器:客户端通过其查找来自权威名称服务器的数据。递归名称服务器的类型包括仅缓存名称服务器:仅用于查找,对于非重要数据之外的任何内容都不具有权威性。
如果某台DNS服务器只负责查询数据,将曾经查到的数据往高速缓存中保存一份,并响应DNS工作站的查询请求,则此DNS服务器被称为高速缓存名字服务(Cache-Only Name Server)。
高速缓存名字服务器不负责管理任何的区域(非权威DNS),它只将曾经查询到的数据复制一份,以便下次DNS工作站查询相同数据时,能够快速地从高速缓存中访问到该数据。
如果一个企业内网里面的每一台主机要访问外网,都需要114.114.114.114这个权威dns进行域名解析。每台主机之间互不关联,这大大浪费了带宽资源,且解析地址的效率很低。
但如果把内网其中的一台服务器搭建成高速缓存DNS,其他主机不再需要问114.114.114.114,直接问高速缓存dns服务器即可。这样只需一台主机进行域名解析,就可共享给内网所有的主机。不仅节省带宽资源,且因为数据存放在高速缓存中,高速缓存DNS服务器第一次解析完成后,内网解析地址的速度也会大大提高。
1.部署环境
将一台虚拟机作为高速缓存DNS服务器,首先确保其能连接外网:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
GATEWAY=172.25.70.250 ###修改虚拟机网关为真机IP
vim /etc/resolv.conf
nameserver 114.114.114.114 ###添加虚拟机DNS
2.高速缓存DNS服务器安装bind,并开启服务
BIND是最广泛使用的开源名称服务器
在RHEL中,通过bind软件包提供
防火墙开启端口 53/TCP 和 53/UDP
BIND 的主配置文件是 /etc/named.conf
/var/named 目录包含名称服务器所使用的其他数据文件
yum install bind -y ###安装bind软件包
systemctl start named ###开启服务
firewall-cmd --permanent --add-service=dns ###火墙允许dns服务
firewall-cmd --reload ###重新加载火墙
vim /etc/resolv.conf
nameserver 172.25.70.251 ###客户主机修改DNS为服务端IP
dig www.baidu.com ###测试访问外网
在dig外网时,可能会有以下几种情况:
信息显示 | 可能的原因 |
---|---|
connection timed out; no servers could be reached | 无法访问DNS服务器主机 |
REFUSED | DNS服务器拒绝回答(也许是出于访问控制原因) |
SERVFAIL | DNS服务器停机或DNSSEC响应验证失败 |
NXDOMAIN | DNS服务器提示提示不存在这样的内容 |
NOERROR | 查询成功 |
在出现报错信息时,我们需要修改服务端named服务的主配置文件:
vim /etc/named.conf
此时客户主机即可正常访问外网了。
第一次解析速度:
第二次解析速度:
可以看到,在第一次解析过后,第二次地址解析速度大大提升。
正向解析就是将域名转化为IP地址。
我们可以尝试自己搭建的权威DNS服务器。
1.服务端修改dns解析地址
vim /etc/resolv.conf
nameserver 172.25.70.251 ###DNS为服务端本身IP地址
2.修改named服务配置文件,改为本地解析 (不去访问其他服务器)
vim /etc/named.conf
3.编辑子配置文件
vim /etc/named.rfc1912.zones
4.编辑域中主机与IP对应关系的文件
cp -p named.localhost westos.org.zone
vim westos.org.zone
dig hello.westos.org
1.修改对应关系文件
vim /var/named/westos.org.zone
dig abc.westos.org
MX记录 :邮件交换记录。用于将以该域名为结尾的电子邮件指向对应的邮件服务器以进行处理。如:用户所用的邮件是以域名mydomain.com为结尾的,则需要在管理界面中添加该域名的MX记录来处理所有以@mydomain.com结尾的邮件。
1.修改对应关系文件
vim /var/named/westos.org.zone
dig -t mx westos.org ###访问westos.org域名的MX
mail [email protected] ###向root用户发送邮件
mailq ###查看邮箱
域名反向解析即从IP地址到域名的映射。由于在域名系统中,一个IP地址可以对应多个域名,因此从IP出发去找域名,理论上应该遍历整个域名树,但这在Internet上是不现实的。
vim /etc/named.rfc1912.zones
添加
zone "70.25.172.in-addr.arpa" IN {
type master;
file "172.25.254.ptr";
allow-update {none; };
};
cd /var/named
cp -p named.loopback 172.25.254.ptr #复制模板文件生成反向解析文件
vim 172.25.254.ptr ###编辑反向解析文件
dig -x 172.25.70.111 ###反向解析IP对应的域名
DNS服务器可以根据不同网段的主机,解析域名为其所在网段的IP地址。这就是多向解析。
步骤:
1.设置虚拟机有不同网段的IP
vim /etc/sysconfig/network-scripts/ifcfg-eth0
添加:
IPADDR0=172.25.70.251
NETMASK0=255.255.255.0
IPADDR1=1.1.1.251
NETMASK1=255.255.255.0
systemctl restart network
ip addr show ###显示IP信息
cd /var/named/
cp -p westos.org.zone westos.org.local.zone ###该文件写入1.1.1网段的域名与IP的对应关系
vim westos.org.local.zone
3.编辑named服务的配置文件,规定不同网段主机寻求解析服务时查看的文件
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.local.zones
vim
vim /etc/named.rfc1912.local.zones
修改配置文件为:
zone "westos.org" IN {
type master;
file "westos.org.local.zone";###进行域名解析时查看的文件
allow-update { none; };
};
vim /etc/named.conf ###
dig www.westos.org
为了缓解DNS服务器的访问压力,我们可以在另外的主机上建立辅助DNS,帮助主DNS减轻压力。
1.设置主DNS更新时通知辅助DNS
将主DNS的主配置文件还原,防止出错。并修改子配置文件:
vim /etc/named.rfc1912.zones
添加:
also-notify { 172.25.70.252; }; ###DNS更新时通知辅助DNS
yum install bind -y
systemctl start named
firewall-cmd --permanent --add-service=dns
firewall-cmd --reload
编辑主配置文件:
vim /etc/named.conf
vim /etc/named.rfc1912.zones
添加
zone "westos.org" IN {
type slave; ###类型为辅助DNS
masters { 172.25.70.251; };###主DNS的IP
file "slaves/westos.org.zone";###存放对应关系的文件
allow-update { none; };
};
systemctl restart named
4.主DNS修改后,通知辅助DNS
此时辅助DNS就已经生效了。
辅助DNS dig外网:
dig www.westos.org
但主DNS的更新怎么及时通知到辅助DNS呢?
需要修改serial的值,当这个值变化时,会通知辅助DNS,主DNS已经发生了改变。
测试:
dig hello.westos.org
vim westos.org.zone
修改:
hello A 172.25.70.222
systemctl restart named
dig hello.westos.org ###辅助DNS测试是否生效
改变主DNS数据,再改变serial的值,此时辅助DNS测试:
vim /var/named/westos.org.zone
修改:
2019112701 ; serial ###serial最长可以10位。可以表示年月日和修改次数。
hello A 172.25.70.233
systemctl restart named
辅助DNS测试:
dig hello.westos.org
通过设置,可以远程更新DNS服务器上的内容。
远程更新DNS有两种方式:
1.基于IP更新
2.基于密钥更新
DNS服务器上编辑子配置文件:
vim /etc/named.rfc1912.zones
修改:
allow-update 172.25.70.252; ###允许该IP主机更新DNS
systemctl restart named
cp -p westos.org.zone /mnt ###备份
chmod g+w /var/named ###远程更新使用的身份是named。使其可写。
此时,就可以实现远程更新DNS了。
nsupdate
> server 172.25.70.251 ###更新的DNS服务器IP
> update add lala.westos.org 86400 A 172.25.70.99 ###编辑域名IP的对应关系
> send ###发送
dig lala.westos.org
此时,服务端的文件并没有改变,只是多了一个存放指令的文件,但已经可以解析远程更新的域名了:
在进行基于密钥更新前,需要删除上一步身成的jnl文件。两种更新方式会冲突。
rm -fr westos.org.zone*
cp -p /mnt/westos.org.zone .
1.DNS服务器生成密钥:
cd /mnt
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST westos ###生成密钥文件westos
cat Kwestos.+157+41978.key ###查看生成的密钥
2.指定密钥
cp -p /etc/rndc.key /etc/westos.key
vim /etc.westos.key
key "westos" { ###密钥名字
algorithm hmac-md5;
secret "ICYRfrNZepiyQ3JBB8USfQ=="; ###密钥信息
};
vim /etc/named.conf
编辑:
include "/etc/westos.key";
vim /etc/named.rfc1912.zones
修改:
allow-update { key westos; };
scp /mnt/Kwestos.+157+41978.* [email protected]:/mnt
拥有密钥的主机就可以通过密钥远程更新DNS了。
测试:
nsupdate -k Kwestos.+157+41978.key ###持有的密钥
> server 172.25.70.251
> update add shuashua.westos.org 86400 A 172.25.70.199
> send
dig shuashua.westos.org
动态域名解析(Dynamic DNS,简称DDNS)是把互联网域名指向可变IP地址的系统。DNS只是提供了域名和IP地址之间的静态对应关系,当IP地址发生变化时,DNS无法动态的更新域名和IP地址之间的对应关系,从而导致访问失败。但是DDNS系统是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络时,客户端程序通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,实现动态域名解析。
DDNS也叫做花生壳。
要做到动态域名解析,我们可以让分配IP的dhcp告诉DNS服务器,域名目前的IP,从而做到动态域名解析。
实验步骤:
1开启dhcp服务
yum install dhcp -y
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
man 5 dhcpd.conf ###可查看dhcpd.conf的帮助手册
vim /etc//dhcp/dhcpd.conf
客户端主机设置主机名,后缀为DNS文件中的域
修改IP获取方式为dhcp。
hostnamectl set-hostname server.westos.org
vim /etc/sysconfig/network-scripts/ifcfg-eth0
修改:
BOOTPROTO=dhcp
systemctl restart network
此时,在客户端主机上测试:
ifconfig
dig server.westos.org
此时域名的IP就是dhcp得到的IP。
改变dhcp分配ip的范围,使得客户端IP地址改变,再进行测试:
vim /etc/dhcp/dhcpd.conf
修改:
range 172.25.70.95 172.25.70.100;
systemctl restart dhcpd.service
客户端:
systemctl restart dhcpd.service
ifconfig
dig server.westos.org