DNS:domain name system
作用:name resolving 名称解析
解析类型:
FQDN----->IP 正向解析
IP----->FQDN 反向解析
FQDN:full qualified domain name 完全合格(限定)域名
DNS服务器类型:
主服务器:数据修改
从服务器:请求数据同步
缓存DNS服务器(转发器)
DNS服务器的实现
DNS的实现大致可分为 安装包——开启服务——配置文件——加载——实现
准备:用一台比较干净的虚拟机作为DNS服务器 IP:192.168.30.71
安装包:
1、安装包 yum install bind -y
如果出现以上安装错误可清理缓存 yum clean all
然后再次安装
开启服务
安装之后这时服务是没有开启的 ss -ntl
配置文件
vim /etc/named.rfc1912.zones
注:格式可以仿照原有的格式只需增加内容即可
区域类型:
主区域:master
从区域:slave
提示区域:hint
由于文件没有写绝对路径,系统默认会在/var/named/目录下去找相应的文件,所以最好把文件写在此目录下,格式可以仿照此目录下的named.localhost文件
cp /var/named/named.localhost /var/named/zhongguo.zone
在配置此文件之前先了解此文件的格式 cat zhongguo.zone模板如下:
模板中的每一个条目称为资源记录
资源记录格式:
NAME TTL IN RRT VALUE
name:域名 可用@代替
TTL:生命周期 即缓存时长 开在开头定义,以下之间引用即可
IN :Internet
RRT: resource record type
VALUE:值
文件第一行必须是SOA(start of authority)起始授权记录格式如下:
ZONE NAME TTL IN SOA FQDN(
serial序列号最长为10位
refresh刷新时间
retry重试时间
expire过期时间
minimum否定答案的TTL值
时间单位:M:分钟 H:小时 D:天 W:周
A(address):FQDN---->IPV4
AAAA:FQDN---->IPV6
PTR(pointer):IP---->FQDN
CANME(canonical name):FQDN---->FQDN
了解模板的格式及内容后配置文件
vim /var/named/zhongguo.zone
加载
加载的方式有两种:
systemctl reload named
rndc reload
此时还可以通过两个工具对配置文件进行检查,确定是否存在错误
主配置文件检查:named-checkconf
解析库文件语法检查: named-chechkzone "domain name" path
两项检测都没有错误
实现
当配置文件格式和语法都没有出现错误,此时可以在另外一台主机上进行测试,
测试之前需要了解的三个测试工具
dig [-t type] name [@server] [query options]
host [-t type] name [server]
nslookup [-option] [name|-] [options]
错误1:连接超时如下
方案一:我们可以测试一下网络是否畅通ping 192.168.30.71
网络畅通,再去本机测试 出现同样的错误
查看属性 明显属组不同
更改属组 chgrp named zhongguo.zone
再次启动服务,状态正常
再次测试仍然失败,检查防火墙 关闭SELinux
再次在本机测试
显然在本机测试已经成功,但实现结果是在任何主机都能实现,在其他主机测试仍然失败
查看端口发现53的端口被绑定了,也就是说只能给绑定的IP解析,其他的主机不行
解决方案,只需在主配置文件中修改 vim /etc/named.conf
设置后重新加载 rndc reload
再次在其他主机测试
用host测试
用dig测试
一个简单的DNS服务就搭建好了