一.DNS介绍
DNS应用层协议
Domain Name System 域名系统
作用:实现域名解析,解析主机名所对应的IP地址,
在网络环境中设备与设备之间要想相互通信只能依赖IP地址,DNS服务器的作用是实现域名解析。
如上图所示,DNS存在的目的,就是机器给DNS服务器发送请求,然后获取京东网址的IP地址,然后机器进行数据封装,随后给京东机器通信。
自己构建一台DNS服务器的作用:正向解析(根据主机名,返回主机名机器的IP)反向解析(根据IP地址解析对应的主机名)。(做垃圾邮件过滤需要反向解析。)
DNS服务内部要有域名信息存在,才可以实现主机名解析成IP地址的功能,每一条信息称之为一条记录,面对海量的互联网主机名对应的IP信息肯定不能每一条信息都记录,就算机器能存下所有的信息也会影响搜索效率。
如果只让一台DNS服务器来解析主机名,会大幅度地拖慢机器的搜索效率。
解决方案主要采用分层的思想,
不同级别的DNS服务器干不同的事情,
如上图所示,是DNS服务器的域名结构,比如www.baidu.com中的com是一级域名,baidu是二级域名,www是百度自己在baidu.com这个域名中的一个名称而已,完成的主机名结构应该是www.baidu.com.只不过最后的一个点从来不写,
不同的机器干不同事情其作用就是用来缓解DNS服务器的压力。
二.DNS核心概念
1.区域 zone
创建区域,一般这个区域就是二级域名,
linux.com创建好之后就意为着我们告诉这台DNS服务器你要去负责解析linux.com结尾的所有主机名,如果又创建了一个域名,a.rog也就是告诉机器将来你要去解析a.org结尾的所有主机名,
正向区域:本质上就是一个二级域名,比如linux.com就相当于是告诉服务器来说你要去负责解析linux.com的所有域名,(即解析主机名所对应的IP地址是什么。)
反向区域:不是必须的,只有希望DNS服务器实现反向解析功能的时候,才需要创建反向区域,并且反向区域的名称格式就是x.x.x.in-addr.arpa
前面这三个数字就是IP地址的前三位数字位置倒过来写的,
比如1.168.192.in-addr.arpa这个反向区域的作用就是将来DNS服务器要负责解析IP地址是192.168.1开头的所有IP地址,将这个些IP地址对应的主机名返回。
2.记录 record
即将来的DNS服务器能够解析那些主机名就需要我们事先将主机名所对应的IP地址写进DNS服务器中,这样的一行信息称之为是一条记录。
常见的记录类型
1.A记录
主要是用来记录主机名,IP地址的对应关系的,
www.baidu.com A 1.1.1.1
即记录某一个主机名所对应的IP地址的。
2.PTR记录
反向指针记录,
用来记录IP地址,主机名的对应关系
1.1.1.1 PTR www.baidu.com
当DNS服务器需要所反向解析的时候,才需要PTR记录。
3.NS记录
用来标识某一个主机名所对应的服务器是DNS服务器,
NS test1.linux.com.
NS的作用是用来标识在网络中有一台DNS服务器,这台DNS服务器的主机名叫做test1.linux.com
NS记录不能单独存在,NS记录必须要跟A记录一起使用。
即NS test1.linux.com.
test1.linux.com. A 2.2.2.2
4.MX记录
用来标识邮件服务器的,MX 5 mail01.linux.com.
后面的mail01.linux.com.主机名代表的是一台邮件服务器,
在公司内部安全需求高的是不允许使用其他的邮件软件来发送邮件,都是使用公司内部的邮件服务器,此时收发邮件都是通过公司内部的邮件服务器来收发。
这个MX记录用的时候,也需要搭配A记录一起使用。
即先写MX 5 mail01.linux.com
mail01.linux.com. A 4.4.4.4
如果公司内部没有邮件服务器那么这个MX记录就用不到。
其中数字5标识这个邮件服务器的优先级,数字越小,优先级越高,优先级越高,其他客户端越会首先使用数字小的邮件服务器来收发邮件。
MX 10 mail02.linux.com
mail02.linux.com. A 5.5.5.5
数字越小优先级越高,
5.CNAME记录
中文叫做别名记录
给主机名起别名的,
也就是说,给主机名起一个别名,
如上图所示,比如www.baidu.com是www.a.shifen.com的别名,这样是为了好记。
给一个主机名起别名的时候可以起多个别名,但是没有必要啊。
书写形式如上。
3.DNS的查询类型
1.递归查询
指的是客户端只需要发送一次查询请求就可以获取结果。
2.迭代查询(实现迭代查询的前提是这台DNS服务器可以正常上网。)
指的是客户端需要发送多次查询请求才可以获取结果。
三.DNS的部署即DNS在Linux上的实现
软件:bind,bind-chroot
严格意思上说bind-chroot可以不安装,但是建议安装,为了增强DNS服务的安全性,
bind的配置文件都在/etc/保存着。
bind-chroot会给DNS进程生成一个伪根目录,即/var/named/chroot将来所有的配置都在这个为根目录下的配置文件书写。
也就是说把DNS服务的权限被限制在了伪根目录下,将来有一天这个DNS服务器被攻破了哪怕攻击者获取到了DNS服务器的运行权限也只能在这个伪根目录下进行操作,真正的重要的信息根本无法获取。
DNS经常被人攻破,要注意保护信息。
配置文件:伪根目录来说,
主配置文件:/var/named/chroot/etc/named.conf主要作用是用来定义区域,即正向区域还是反向区域,以及这个区域名称是什么。
记录文件:/var/named/chroot/var/named/*主要作用是用来写记录信息的。
搭建DNS服务器就是两件事创建区域,编写记录。
存放记录信息的文件名称可以随意。
但是
named.conf主配置文件:
定义区域:linux.com
记录文件:linux.com.zone
记录文件:/var/named/chroot/var/named/linux.com.zone
服务:named,named-chroot
端口:53/udp
四.配置DNS实现正向解析
需求实现:员工可以根据公司内部的DNS服务器实现主机名向IP地址转化的正向解析,
web.linux.com 192.168.1.1
ftp.linux.com 192.168.1.2
mail.linux.com 192.168.1.3
ns01.linux.com 192.168.183.10
如上图所示,创建区域,并且这个区域名称是linux.com
负责解析linux.com结尾的所有主机名,
1.关闭防火墙,SELinux,确保机器的时间一致
2.安装DNS相关软件
如上图所示,安装DNS所需要的软件,
3.编辑named.conf主配置文件,创建区域
如上图所示,在伪根目录下去创建这个主配置文件,
如上图所示,第一个文件路径表示的是记录文件的存放位置,
这个目录实际标识的是/var/named/chroot/var/named
如上图所示,第二个文件路径表示的是创建区域的名称,这个区域都是二级区域,
type master;表示的是这个区域是主区域,也就是说这个区域中记录信息可以根据自己的需要,随意添加修改记录信息。
也可以把区域类型修改为从区域,并且这个区域中的记录信息,都是不能直接操作的。需要从主区域来修改从区域中的内容。
文件名指定的就是区域的记录文件名称。
4.复制记录文件模板named.local host
如上图所示,就是记录文件模板,
5.添加记录信息
写管理员邮箱地址的时候把@改成点.
如上图所示,就是DNS服务器的记录文件。
6.记录named服务
如上图所示,启动DNS服务,并且配置DNS服务开机自启动。
如上图所示,通过查看进程以及查看DNS产生的UDP协议的端口号来验证DNS服务器是否启动成功。
7.检测DNS是否能够正向解析,即能否将主机名转化成IP地址
(测试DNS服务是否能够正常工作。)可以通过工具nslookup
如上图所示,指定需要哪个DNS服务器来解析主机名,
如上图所示,这时主机名解析正常。
随后exit退出即可。
DNS服务器的作用就只是解析这个主机名所对应的IP地址,但是这个机器能不能跟这个IP地址通信,跟这个DNS服务器没有关系。
五.配置DNS实现反向解析(如果要配置DNS服务器实现反向解析,必须要保证DNS的正向解析是正常的,需要在正向解析的基础上去进行反向解析。)
如上图所示,这个切换机器DNS服务器地址的行为只是临时的指定当退出这个nslookup软件的时候,DNS服务器指定的功能就失效了。
那么如何让其他机器使用你构建的DNS服务器的主机名呢?
如上图所示,可以把网卡的DNS服务器的地址修改为搭建的DNS服务器的IP地址,此时DNS在其他机器上能够成功生效。
如上图所示,就算是自己搭建的DNS服务器也可以去解析一些记录文件中没有的主机名,这里DNS服务器主要使用的是迭代查询。
这里的非权威应答是说的使用的是迭代查询。
当然DNS服务器能够使用迭代查询的条件是能上网。
如上图所示,此时要求DNS服务器进行反向解析是失败的。
如果想要DNS能够做反向解析的话,就要求有反向区域,并且有对应的记录
1.编辑named.conf主配置文件,添加反向区域
创建反向区域解析IP地址所对应的主机名
如上图所示,因为这三个机器的IP地址前三位一样所以只要创建一个反向区域就可以了。
如上图所示,就是在DNS的主配置文件中所创建的反向区域。以及反向区域的记录文件名称。
2.添加反向区域对应的记录文件
如上图所示,首先复制记录文件的模板。
随后去修改这个复制的记录文件中的内容。
如上图所示,就是这个反向区域的记录文件中的内容。
3.重启DNS服务,测试
如上图所示,此时将机器的DNS指定为创建的DNS服务器地址,就可以实现反向解析了。
六.hosts文件的使用
一个客户端想获知一个主机名所对应的IP,除了有对应的DNS服务器之外还有另外的方式。
客户端系统内部有一个文件hosts,这个文件是用来记录某IP地址和主机名之间的关系的,先找的是hosts文件,找不到的话然后再找的是DNS服务器,
这就是在windows系统上用来保存IP地址和主机名对应关系的文件。
如上图所示,如果想修改这个文件的内容需要把这个文件拖到桌面上,然后以记事本形式打开,随后前面是IP地址,后面是这个IP地址所对应的主机名。
随后保存,随后将原来的hosts文件替换即可。