DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。
1.DNS高速缓存
如果在同一个网络中的主机都要查询同一个域名时,就需要都去互联网上询问,这样效率比较低。如果在一个网络中添加一个dns服务器,让其它主机的dns指向该dns服务器,由该dns服务器去互联网上查询,并在本地进行缓存,当有主机查询时由于本地有数据,就不用再去互联网上查询。大大减少数据流量,和访问速度。这就是dns高速缓存。
dns服务器:
ip 172.25.254.180
DNS 114.114.114,114
测试主机:
DNS 172.25.254.180
将dns服务器的DNS指向114.114.114.114,所以要求dns服务器必须能够上网。
DNS服务器配置
[root@dns-cache ~]# yum install bind #安装dns服务软件
[root@dns-cache ~]# vim /etc/named.conf #编辑主配置文件
第11行是让53端口监测在所有的ip上;
第17行是允许所有主机访问;
第18行配置文件中并没有,需要自己添加,表示在本机没有对应的域名时去114.114.114.114上寻找;
第32行表示不需要自检。
重启dns服务,并关掉火墙:
[root@dns-cache ~]# systemctl start named
[root@dns-cache ~]# systemctl stop firewalld.service
[root@dns-cache ~]# systemctl disable firewalld.service
测试端配置:
将DNS指向dns服务器:
[root@test ~]# vim /etc/resolv.conf
nameserver 172.25.254.180
在测试端测试:
第一次解析qq.com的地址需要32ms
[root@test ~]# dig qq.com
由于dns服务器已经将qq.com的信息缓存了下来,所以第二次查询时只需要0msec:
2.权威DNS
权威DNS就是在本地设置一个域,当有用户查询时可以在本机查找到。
修改dns服务器配置文件,由于不用再去互联网上查询,所以将之前添加的forwarders删除:
[root@dns ~]# vim /etc/named.conf
如果将所有维护的域都写在主配置文件/etc/named.conf,则该文件会特别的长,不利于维护,所以将需要维护的域写入子配置文件/etc/named.rfc1912.zones中。
[root@dns ~]# vim /etc/named.rfc1912.zones
25行"westos.com"为所要维护的域;
27行为westos.com域所对应的数据文件。
切换到dns的数据目录,以named.localhost为模板创建westos.com.zone文件:
[root@dns named]# cp -p named.localhost westos.com.zone #-p为复制权限
[root@dns named]# vim westos.com.zone
westos.com.zone 文件内容如下:
第1行:表示数据在客户端缓存1天;
第2行:第一个dns.westos.com.表示权限的起始,第二个dns.westos.com.表示在出现问题时发邮件给dns.westos.com;
第10行:表示www.westos.com域名对应的ip为172.25.80.1;
该文件中的@表示所要维护的域,所有不以“.“结尾的都会自动补全@所代表的值。
重启dns服务:
[root@dns named]# systemctl restart named
测试端查询www.westos.com域名对应的ip地址为172.25.80.1:
3.域名转化
[root@dns named]# vim westos.com.zone
上图红框中表示www.westos.com所代表的为域名为redhat.a.westos.com域,该域名有对应两个IP。
重启dns进行测试:
[root@dns named]# systemctl restart named
4.邮件域名解析
[root@dns named]# vim westos.com.zone
westos.com邮箱对应的IP为172.25.25.80主机,重启服务测试:
[root@dns named]# systemctl restart named
[root@test ~]# mail westos@westos.com
[root@test ~]# mailq
发邮件给westos.com域,mailq查看邮件阵列,可以发现dns服务器将westos.com解析为了172.25.25.80。
5.反向解析
[root@dns named]# vim /etc/named.rfc1912.zones
48行为所维护的网段
50行为该域对应的数据文件
以named.loopback为模板创建172.25.254.ptr文件。
[root@dns named]# cp -p /var/named/named.loopback /var/named/172.25.254.ptr
[root@dns named]# vim /var/named/172.25.254.ptr
表示将172.25.254.111解析为haha.westos.com域名,测试如下:
[root@dns named]# systemctl restart named
[root@test ~]# dig -x 172.25.254.111
6.双向解析
让1.1.1网段访问www.westos.com的结果为1.1.1网段,其它网段解析的为172.25.254网段。
dns服务器必须有两个不同网段:
如图编辑主配置文件,表示当客户端为1.1.1.0网段时去查找named.rfc1912.inter文件,其它网段的查找named.rfc1912.zones文件。
[root@dns ~]# vim /etc/named.conf
[root@dns ~]# cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.inter
[root@dns ~]# vim /etc/named.rfc1912.inter
[root@dns ~]# cd /var/named/
[root@dns named]# cp -p westos.com.zone westos.com.inter
[root@dns named]# vim westos.com.inter
测试如下,80主机IP为172.25.254.80不是1.1.1.0网段,所以解析的地址为172.25.254网段。
inter主机IP为1.1.1.80,所以其解析的地址为1.1.1.0网段。
7.dns数据同步
为了减缓主DNS服务器的压力,所以需要一台与主DNS具有相同数据的dns-slave。要实现两台主机的数据同步,需要另一台dns-slave去同步主DNS服务器的数据。
dns-slave服务器安装dns软件bind,并修改配置文件。
[root@dns-slave ~]# yum install bind -y
[root@dns-slave ~]# vim /etc/named.conf
[root@dns-slave ~]# vim /etc/named.rfc1912.zones
主DNS配置:
[root@dns named]# vim /etc/named.conf
[root@dns named]# vim /etc/named.rfc1912.zones
dns-slave开启DNS服务之后/var/named/slaves/下出现westos.com.zone文件:
dns-slave的dns指向自己:
[root@dns-slave slaves]# vim /etc/resolv.conf
测试:
dns-slave的DNS指向自己,可以查询到westos.com域,所以dns-slave同步了主DNS的数据。
[root@dns-slave slaves]# dig www.westos.com
将主dns的数据修改:
[root@dns named]# systemctl restart named
dns-slave的数据没有修改:
如果修改了主DNS服务器的数据,但是dns-slave的数据并没有更新,要让dns-slave可以更新数据,需要添加一些参数:
[root@dns named]# vim /etc/named.rfc1912.zones
第29行表示允许172.25.254.181(dns-slave)主机同步主DNS的数据。
第30行表示在主DNS数据修改之后让dns-slave也更新数据。
dns-slave会对比两台主机的serial,如果serial值没有改变表示主DNS的数据没有改变,如果serial值不同,表示主DNS的值发生了改变。所以每次主dns的数据修改之后必须修改serial的值,最大10位。
[root@dns named]# vim westos.com.zone
[root@dns-slave slaves]# systemctl stop firewalld.service
[root@dns named]# systemctl restart named
8.远程更新
远程更新就是dns服务器允许另一台主机通过网络更新自己的数据。
[root@dns named]# chmod 770 /var/named/ #修改 /var/named/权限,保证该文件可以被更改
[root@dns named]# vim /etc/named.rfc1912.zones
/var/named/表示允许172.25.254.181主机更新数据。如果selinux没有关闭,则将dns的setsebool打开:
172.25.254.181主机更新172.25.254.180的DNS,添加了一个test.westos.com主机。
172.25.254.180主机测试:
9.密码更新
生成密码,由下图可知,该加密方式为对称加密:
[root@dns mnt]# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST westoskey
[root@dns mnt]# cp -p /etc/rndc.key /etc/westos.key
[root@dns mnt]# vim /etc/westos.key
[root@dns mnt]# vim /etc/named.conf
修改更新方式为key更新:
[root@dns mnt]# vim /etc/named.rfc1912.zones
[root@dns mnt]# systemctl restart named
[root@dns mnt]# scp Kwestos.key.+157+15806.* root@172.25.254.181:/mnt/
[root@updata mnt]# nsupdate -k Kwestoskey.+157+52710.private #用密码更新
删除如下:
测试,NXDOMAIN表示没有该域名:
远程更新或者密码更新都会在数据更新后会生成如下文件:
在重启服务后数据文件westos.com.zone文件才会被修改:
10.动态域名解析-dds-花生壳
动态域名解析就是在DNS服务器上添加一个dhcp服务,当有主机通过dhcp服务获得IP地址时,dhcp服务会告诉DNS服务自己将什么IP分配给了哪台主机。这样DNS就直到了域名和IP的对应关系。
实验之前将更新后的文件恢复,并删掉westos.com.zone.jnl文件:
安装配置dhcp:
[root@dns named]# yum install dhcp #安装dhcp
[root@dns named]# cp -p /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
[root@dns named]# vim /etc/dhcp/dhcpd.conf
第7行表示所维护的域为westos.com;
第8行为DNS指向;
第14行表示将打开动态域名解析的功能。
将该文件中没用的内容删掉,在后面添加上图所示内容,并重启服务;
[root@dns named]# systemctl restart dhcpd.service
game.westos.com主机通过dhcp方式获得了一个IP地址。其DNS指向dns服务器。dns服务器通过dhcp知道了game.westos.com域名所对应的IP地址,所以当有人询问game.westos.com对应的IP时,DNS就可以回馈给用户。