一、DNS 简述
DNS(Domain Name System),即域名系统。因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。DNS服务器的作用就是就好比生活中的电话簿、114查号台一样,为各种网络程序找到对应目标主机的IP地址或对应的主机域名。
二、DNS功能
每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议所要完成的功能。当Ping主机名时可以映射出该主机的IP地址,反之亦然。配置并指定DNS服务器可以快速部署集群,不需要每台主机都去修改Hosts文件即可实现IP与主机名的相互解析。
1、DNS解析方式
在DNS的解析过程中我们可以发现有那么两个阶段,1、客户端将解析请求发给dns server之后只需要等待结果就OK了;2、dns server在接到客户端的请求后,全面负责去查找目标主机,查找的每个过程都是dns server去请求的。这两个过程的查找方式显然是不相同,前者我们称之为递归查询,后者称之为迭代查询。递归查询和迭代查询是DNS解析过程的两种方式,递归查询一般是客户机和服务器之间的查询,即只发送一起请求,其他的工作交于上层服务器去解决,然后最后一层一层的反馈结果到客户端;迭代查询一般是DNS服务器与DNS服务器之间的方式,即最初的DNS服务器负责发起请求,而其他涉及到的DNS服务器只负责响应即可,然后一直查找到目标DNS服务器,并将结果返回给客户端。
DNS是一个网络服务,因此必须要有与其相对应的端口号,DNS的端口号是53,通常在查询的时候是以udp这个快速的数据传输协议来查询的,但是一旦没有查询到完整的信息时就会再次以TCP协议来进行重新查询,因此DNS服务在启动的时候会同时开启tcp的53号端口和udp的53号端口,这个解析记录在DNS中称之为DNS数据库,这个数据库又分为正解和反解,正解就是从主机名到IP的过程,反解就是从IP反向解析到主机名的过程,无论是正解还是反解,每个域名所对应的解析记录我们称之为zone,如baidu.com这个zone。
2、DNS相关的配置文件
修改/etc/named.conf访问权限
修改 /etc/named.rfc1912.zones文件,加入正解和反解配置
修改 /etc/named.localhost 文件
三、DNS测试
除了系统提供的一些名称解析命令外,DNS的软件包当中提供了一些测试命令,这些命令有:dig、host、nslookup。
##dig用于测试dns系统,因此,不会查询hosts 文件进行解析;
##dig命令的语法: dig[-t type]name[@SERVER][query options]
查询选项:+[no]trace 跟踪解析过程 / +[no]recurse 进行递归解析
测试反向解析: dig -x IP@SERVER
模拟区域传送: dig -t axfr ZONE_NAME @SERVER
##host命令语法: host [-a] name [SERVER]
##nslookup [-option][name |-] [server]
交互式模式:
nslookup>
server IP:指明使用哪个DNS server 进行查询;
set q=RR_TYPE:指明查询的资源记录类型;
NAME:要查询的名称;
四、搭建DNS的实验
1、DNS模拟根实现,及主辅同步
##准备六台机器,除client客户端以外,所有机器安装bind,并都清空防火墙和关闭selinux。
##所有安装bind的主机配置name.conf,修改2个any,2个no,除caching-only缓存机以外,都把递归设置为no。
##除root“.”以外,所有机器修改named.ca
##配置root“.”机器
1、/etc/name.conf中删除name.ca的项目
2、配置 /etc/named.rfc1912.zones文件
3、编辑 /var/named/root.zone文件
4、启动named服务
##配置com机器
1、配置 /etc/named.rfc1912.zones文件
2、编辑 /var/named/com.zone文件
3、启动named服务
##配置主DNS二级域
1、配置 /etc/named.rfc1912.zones文件
2、编辑 /var/named/magedu.com.zone文件
3、编辑/etc/named.conf 文件
4、启动named服务
##配置从DNS二级域机器
1、配置 /etc/named.rfc1912.zones文件
2、启动named服务
##配置客户机client
##测试DNS是否搭建成功
1、在缓存机caching-only上清除缓存
2、在客户机client上测试
#关闭所有防火墙后测试
#开启主DNS二级域的防火墙后测试
#将主、从DNS二级域机器的防火墙全部开启后测试
至此,我们就完成了在Linux下DNS模拟根的搭建,并实现了及主辅同步。