一、DNS是什么
DNS:(Domain Name System,域名系统),是互联网上存储域名和IP映射关系的一个分布式数据库,他负责把域名转换为IP地址,或IP转换为域名,工作于OSI应用层之上,DNS运行于UDP/TCP的53端口。其中,负责提供域名解析的为UDP协议的53端口,负责DNS服务器之间的区域传送采用TCP的53端口。
二、BIND是什么
BIND(Berkeley Internet Name Domain)是DNS的开源实现,由两部分组成:
a、域名服务器(Name Server):提供域名解析服务
b、解析器(Resolver):负责发起查询和向调用他的应用返回IP地址或者别名等信息
三、DNS服务器的分类
1)权威名称服务器:存储并提供某区域的实际数据(类型包括:Master和Slave)
2)非权威/递归名称服务器:客户端通过其查找来自权威名称服务器的数据
三、DNS的安装
step1:
cd /etc/yum.repo/ ##配置yum源
step2:
vim /etc/yum.repo/
[rhel7.2]
name=rhel7.2
baseurl=file:///rhel7.2 ##/rhel7.2/为已经挂载好镜像的目录
gpgcheck=0
step3:
yum clean all ##清除yum缓存数据
step4:
yum search dns ##先查找有关dns的安装包信息
step5:
yum install bind.x86_64 -y ##开始安装
step6:
sysemctl start named ##开启服务
step7:
firewall-config ##改变防火墙策略,使dns可以访问
或
systemctl stop firewalld ##关闭火墙
五、DNS中常见的缩写
A
address,将域名解析到IPv4的地址
AAAA
将域名解析到IPv6的地址
PTR
pointer,将IP地址转换为主机的FQDN
CNAME
Canonical name,别名
NS
Name Server ,用来指定操作DNS服务器的名称,需注意的是,不可以用IP地址来表示
六、DNS解析
1)静态解析
a、正向解析:输入域名得到相应的ip
1> vim /etc/named.conf
##改变配置文件,使dns可以接受访问(listen-on port 53)和回答(allow-query)以及询问他人(forwarders)
2> vim /etc/resolve.conf ##指定dns服务器,本机即可
3>:检查服务端和客户端的防火墙是否关闭,在防火墙开着的情况下,检查防火墙策略是否加载成功
4> vim /etc/named.rfc1912.zones ##编辑域名文件
5> cp -p /var/named/named.localhost /var/named/westos.com.zone
vim /var/named/westos.com.zone ##使用模板,编辑正向解析文件
6>: systemctl restart named ##重启服务
7>: dig +域名 ##进行解析
正向解析结果:
第一次访问:
dig www.baidu.com ##首次访问所需的时间长
第二次访问:
dig www.baidu.com ##载次访问所需的时间明显减短
上面dig操作得到的www.baidu.com的IP地址是通过forwarders:172.25.254.8进行的一次查询,如果,是本地解析的话,只需要,将www.baidu.com的IP地址自定义写在相应的文件中即可完成一次查询~
下面的实验,我们就来操作操作~
step1:将/etc/named.conf下的forwarders这一行注释掉,或者直接删除
step2: cd /var/named/
cp -p named.localhost westos.com.zone ##注意此文件的权限十分特殊,所以,在复制的过程中,一定要加上参数p
step3: vim westos.com.zone ##编辑本地解析文件
本地解析1>合法操作下:
本地解析:dig www.westos.com
解析的结果为:172.25.254.222,解析成功!
本地解析2>域名不合法时:
systemctl restart named ##重启服务
CNAME:将不合法的名称(bbs.westos.com)转化为合法的名称(news.westos.com),从而进行查询,其结果为:172.25.254.111,解析成功!
本地解析3>IP轮叫机制
systemctl restart named ##重启服务
第一次解析:dig news.westos.com ##解析结果为:172.25.254.111
第二次解析:dig news.westos.com ##解析结果为:172.25.254.123
b、反向解析
1> vim /etc/named.rfc1912.zones ##编辑域名文件
2> cp -p /var/named/named.loopback /var/named/westos.com.ptr
vim /var/named/westos.com.ptr
systemctl restart named ##重启服务
dns将172.25.254.208解析为heihei.westos.com,与原文件相符,解析成功!
C、双向解析
双向解析的插话:为了缓解外网的压力,实现多台服务器公共作业,分为内网和外网,以此类推,也可以扩展为多向解析
1> vim /etc/named.conf
##编辑dns的主配置文件,实现不同的用户看到不同的文件,在这里,我们使用命令view,文件其他内容不变,在文末添加如下图所示代码,第一部分的localnet为内网,这里指定IP为172.25.254.208(即本机),通过此IP访问的用户查看的是:/etc/named.rfc1912.zones这个文件;通过其他IP访问的用户查看的是:/etc/named.rfc1913.zones
2> cp -p /etc/named.rfc1912.zones /etc/named.rfc1913.zones
vim /etc/named.rfc1913.zones ##将file中的westos.com.zone改成westos.com.inter
3> cp -p /var/named/westos.com.zone /var/named/westos.com.inter
vim /var/named/westos.com.inter ##为了实验效果更加明显,将所有的172.25.254转换为1.1.1
:%s/172.25.254/1.1.1/g
4> 在另一台主机,设定其dns为172.25.254.208,然后进行dig解析
5> 在IP为172.25.254.208的机子上进行解析:dig www.westos.com
通过实验对比可以看出:172.25.254.208看的是/var/named/westos.com.zone这个文件,而其他的外网用户则看的是/var/named/westos.com.inter这个文件
D、解析集群
1)主服务器为:Master
辅助服务器为:Slave
step1: 在辅助服务器端将DNS改为自己的主机IP,安装DNS,关闭防火墙,或者在防火墙开启的状态下,写防火墙策略
step2: vim /etc/named.rfc1913.westos.zones ##编写dns的主从复合关系
step3: dig www.westos.com ##辅助服务器端
主服务器/var/named/westos.com.inter:
辅助服务器解析www.westos.com:
解析完全正确,说明辅助dns搭建成功!
更改的问题:在主服务器如果更新了数据,辅助服务器不能及时的更新数据,从而,会出现相同的问题两个答案的现象,为了避免这个问题的出现,必须在主服务器数据更新后,及时地告知辅助服务器,这样的DNS集群才称的上是合法的!下面,我们就来介绍这一套操作~
1> vim /etc/named.rfc1913.zones ##主服务器端
2> vim /var/named/westos.com.inter ##主服务器端
将news.westos.com的IP改为1.1.1.123,并且,要改变serial的值,最多为10位
3> dig news.westos.com ##辅助服务器端
4> systemctl restart named ##主服务器端
5> dig news.westos.com ##辅助服务器端
实时同步完成~
2)动态解析DDNS
在这里先给大家介绍一款收费软件:花生壳(Oray)
花生壳的工作机理其实就是DDNS(Dynamic Domain Name Server:动态域名服务),让dhcp去分配IP给开启DHCP服务的机子,然后,便可以通过DNS来找到这台机子的域名(或IP),下面,我们就来操作一下,看看如何自己动手搭建一款"花生壳"~
首先,要有两台虚拟机,其中一台为服务端,另一台为客户端:
1) 服务端需要搭建DHCP和DNS服务:
yum intall dhcp bind -y ##yum源配好的前提下,进行下载
systemctl start named ##开启dns服务
systemctl enable named ##设置开机启动
systemctl start dhcpd ##开启dhcp服务
systemctl enable dhcpd ##设置开机启动
2)客户端只需要将获取IP的方式设置为DHCP即可:
vim /etc/sysconfig/network-script/ifcfg-westos
NAME=westos
BOOTPROTO=dhcp
ONBOOT=yes
DEVICE=eth0
:wq
systemctl stop NetworkManager.service
systemctl restart network
3)关闭两台虚拟机的防火墙
systemctl stop firewalld
step1:
在服务端修改以下内容:
vim /etc/named.conf
vim /etc/named.rfc1912.zones
cd /var/named
ls
cp -p named.localhost westos.com.zone
vim westos.com.zone
dig dns.westos.com ##先检测本机dns解析是否正确
本机解析成功后,再建立加密实现dns解析:
chmod g+w /var/named
setsebool -P named_write_master_zones on
cd /mnt/
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST westos
cp -p /etc/rndc.key /etc/westos.key
cat /etc/westos.key
vim /etc/westos.key
vim /etc/named.conf
step2:
nsupdate:测试key是否更新成功
nsupdate -k Kwestos.+157+57326.private
>server 172.25.254.108
>update add haha.westos.com 86400 A 172.25.254.111
>send
>quit
dns加密解析成功后,再继续设置dhcp服务,到这里,才有可能真正意义上实现"花生壳"的作用~
编辑dhcp的配置文件:
step3:
dhcp自动分配查看是否成功:
客户端成功获取到了来自dhcp的IP:172.25.254.201
在服务端dig客户端的域名可以正确解析到他的IP