一、扫盲阶段
名词解释
/etc/hosts的说明:在私有网络里面,最好将所有的私有IP与主机名对应都写入这个文件中!
内容形式:IP 主机名 主机别名1 主机别名2
DNS:域名系统(Domain Name System ),是通信协议;作用 :知道主机的名称就知道主机的IP,就能轻松连上主机了!
BIND:Berkeley Internet Name Domain,bind软件的由来!
FQDN:主机名和域名的组合(Fully Qualified Domain Name),域名的记录各个主机名(核心:小数点)!
ISP(Internet Service Provider),互联网服务提供商,一般帮我们维护主机名和IP的映射关系!
生活实例:(1)以区域来区分同名同姓的差异(2)以区域号码来区分形同的电话号码
引申出:DNS是以树形目录分阶层的方式来管理主机名!
理解DNS的管理结构
核心:知道什么是主机名,什么是域名,什么时候主机名也是域名(不同层级代表的含义不一样)!
常见的域的含义
TLDs(Top Level Domains 顶级域名);gTLD( Generic TLDs 一般顶级域名);ccTLD(Country Code TLDs 区域顶级域名)
理解一点:每个上一层的DNS服务器所记录的信息,其实只有下一层的主机名对应的IP而已!
理解:DNS系统查询主机名的解析流程(与/etc/resolv.conf这个文件有关)!
查看DNS的搜寻过程:dig +trace www.baidu.com
区域查询权:被授权之后,授权成为区域域名和IP的管理者,那么这个区域所有的主机名的信息都以自己为准,与上层无关,只负责给出答案,正确不正确就不一定了(恶搞)
标志位 NS:NameServer(DNS服务器);A:Address(IP)
核心:DNS服务器类型
(1)主DNS服务器:负责解析至少一个域。
(2)辅助(从)DNS服务器:负责解析至少一个,是主DNS服务器的辅助。
(3)高速缓存DNS服务器:不负责解析域,只是缓存域名解析结果
二、高速缓存DNS
问题引入:区域内有多台主机,当同时 ping www.baidu.com 相同的请求,都通过一根线与外界进行通信,所以很耗带宽,并且每次请求等待的时间都很长,影响性能问题!
解决思路:我们知道每台主机获取到当前域名的IP时,都会在缓存中保存一段时间,默认是600s。当区域内的A主机获取到IP的时候,如果区域内的其它主机也有想同的需求,让其先询问此A主机,如果A主机的缓存中有,则直接获取到,由于并不向外界发出请求,也不占用带宽!
解决:区域内有一台主机作为高速缓存的DNS,其余的主机每次想查询域名的IP的时候,会请求这个DNS服务器!
高速缓存DNS特点:这个DNS服务器具有权威性,具有最终解释权,只提供信息,不会校验是否正确!
2.1)环境配置
#1)DNS安装
yum -y install bind.x86_64 #说明如果有多个源,最好写全称,并且要检查来源!
#版本:bind.x86_64 32:9.9.4-37.el7
systemctl start named #开启服务
#提示:重启服务,如果加密字符不够会卡顿,随便输入几个字符就OK!
systemctl enable named #开机自启
systemctl status named #查看服务状态
#说明1:防火墙最好关闭,或者防火墙允许服务通过,并且最好selinux也关闭!
#说明2:真机可以上网,DNS服务器可以通过网桥或者NAT的方式来上网!
#补充: rpm -qa |grep bind可以查询安装的相关组件!
named相关文件的说明
/etc/named.conf # bind主配置文件
/etc/named.rfc1912.zones # 定义zone的文件
/etc/rndc.conf # rndc配置文件
/usr/sbin/named-checkconf # 检测/etc/named.conf文件语法
/usr/sbin/named-checkzone # 检测zone和对应zone文件的语法
/usr/sbin/rndc # 远程dns管理工具
/usr/sbin/rndc-confgen # 生成rndc密钥
###########named的数据库#############
/var/named/named.ca # 根解析库
/var/named/named.localhost# 本地主机解析库(模版)
/var/named/slaves # 从DNS服务器文件夹
2.2)dig 测试的问题
2.2.1)客户端测试问题1
connection timed out; no servers could be reached
原因:netstat -antlupe |grep named 显示
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN
说明:默认回环地址的53端口来监听外部请求的,用来内部测试的,显然不合理,修改配置文件绑定DNS服务器的IP!
2.2.2) 客户端测试问题2
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 23719
原因:DNS服务器默认是不允许其它客户端来请求访问的!
解决策略:修改named配置文件
2.2.3)客户端测试问题3
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 10047
原因:DNS服务接受客户端的请求,但是DNS没有解决策略,你问的问题我不知道!
解决策略:此台DNS服务器转交上层的DNS服务器;我解决不了我想方设法的帮你解决!
2.2.4)客户端测试问题4
内容通上
原因:默认会校验DNS的合法性(是否是授权的,说白一点就是付费没有),服务器端设置成no
2.3)达到的效果
效果:当客户端A去dig www.baidu.com的时候,第一次时间比较长,后续这个域的其它客户端访问的时候直接从DNS服务器的缓存中查看,所以特别快!
;; Query time: 1 msec #图略
特别说明:这种方式即使有.的根DNS服务器,也不会去请求!
2.4)补充说明
cach-only DNS并不存在数据库,但是可以指定一个上层的DNS作为通过forwarding目标,将原本自己要往.查询的任务,丢给上层DNS服务器处理即可,这台DNS服务器就变成了客户端,递归查询(默认)!
三、主DNS服务器正向解析
理解:配置文件的读取过程!
3.1)DNS的解析方式
(1)正向解析:即将FQDN转化为IP
(2)反向解析:即将IP转化为FQDN
3.2)DNS主配置文件的说明
zone "." IN {
// 定义zone文件,这里是定义的根域的文件位置
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones"; // 把named.rfc1912.zones文件包含进来(正反解析的内容)
include "/etc/named.root.key"; // 把/etc/named.root.key文件包含进来
#include理解成vim中的require
3.3)DNS的正向解析步骤
- 1. 编辑主配置文件 /etc/named.conf
- 2. 编辑子配置文件(区域配置文件) /etc/named.rfc1912.zones
- 3. 编辑正向解析配置文件 /var/named/wzj.com.zone(自建)
- 4. 编辑反向解析配置文件 /var/named/192.168.10.arpa(自建)
- 5. 重启named服务
#实例模版:tree /usr/share/doc/bind-9.9.4/sample
3.4)以一个示例,讲述正向解析的详细过程
3.4.1)named配置文件中不做任何修改
说明:理论上也可以将配置写进此配置文件中,但有了/etc/named.rfc1912.zones此配置文件,不乱,排错好排错!
3.4.2)/etc/named.rfc1912.zones中来进行定义正向解析
zone "wzj.com" IN { #domain(注意当前没有.)
type master; #主DNS
file "wzj.com.zone"; #定义区域解析库文件(默认从/var/named/目录找),习惯的命名方式"zone的名字+.zone"!
};
#######补充说明########
type:
master 指的是主dns解析
slave 指的是从dns解析
hint 指的是根域名解析(根提示域)
forward 指的是转发,转发不使用file
3.4.3)/var/named/wzj.com.zone配置文件的设置
(3)cd /var/named/
cp -p named.localhost wzj.com.zone #说明:与子配置文件中声明的zone的文件名相同
注意:一定要保证属性(-p或者-a)都可以
3.4.3)编辑该数据库文件
重点:理解相关字段的含义
$TTL 1D
@ IN SOA server.wzj.com. user.mail.wzj.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS server.wzj.com. #最好带上.(否则会自动加上@变量的内容)
server A 172.25.254.105 #DNS服务器的IP
wzj A 172.25.254.12 #管理这个域中IP与主机名的映射
java A 172.25.254.22
mail CNAME http.wzj.com. #注意加上.
http A 172.25.254.32
wzj.com. MX 1 172.25.254.32 #给这个域发邮件,接受邮件的地址(最好与上面的相同)!
#@变量代表".ZONE_FILE"
#user.mail.wzj.com.表示user@mail.wzj.com.
正解文件资源记录(Resources Record)RR格式
ttl: time to live DNS缓存中保存多久
A : IPV4的标志
NS:nameserver,管理这个域名的服务器的主机的名字
SOA:管理这个域名的七个重要参数
MX :接受这个区域邮件的服务器主机的名字(一定要跟上数字!!!,表示优先级,多个邮件服务器,越小优先级越高)
CNAME:主机的别名,主要是一些主机命名不规范,对内看,和对外看的不一样!
SOA:多台DNS管理同一个域名,声明被管理的zone file是如何进行文件传输的(Start Of Authority)
核心参数:MaterDNS服务器的主机名(最终解释权) 管理员的email 序号(slave更新查看标识) 更新频率
CNAME:用处-->这个IP对应多个主机名,IP更改的时候-->
设置主要主机名设置为A,其他标志使用CNAME,当IP更改的时候,只需要修订一个A标志,其它的CNAME就跟着变动!
MX:Mail Exchange(邮件交换),表示寄给这个区域的E-mail都要送给Email Server的主机名上
@:在正解里面表示"域名."(wzj.com.)!
别名的理解
别名记录,这种记录允许您将多个名字映射到另外一个域名。
例如:通常用于同时提供WWW和MAIL服务的计算机。
例如,有一台计算机名为“host.wzj.com”(A记录)。它同时提供WWW和MAIL服务,为了便于用户访问服务。
可以为该计算机设置两个别名(CNAME):WWW和MAIL
这两个别名的全称就 http://www.wzj.com/和“mail.wzj.com”。实际上他们都指向"master.wzj.com"。
说明:两种用途!
说明:关于RX的测试
说明: No route to host 是邮件服务器的问题,不是DNS的问题!
mialq :查看邮件队列!
dig命令
dig -t [a|nx|mx] wzj.com #type
邮件地址解析
电子邮件地址有统一的标准格式:用户名@服务器域名.
1)用户名表示邮件信箱、注册名或信件接收者的用户标识,
2)@符号后是你使用的邮件服务器的域名.@可以读成“at”,也就是“在”的意思.
整个电子邮件地址可理解为网络中某台服务器上的某个用户的地址!
四、主DNS的反向解析
核心步骤
- 1. 编辑子配置文件(区域配置文件) /etc/named.rfc1912.zones (注意这个形式)
- 2. 编辑反向解析配置文件 /var/named/172.25.254.ptr(自建)
- 3. 重启named服务
#说明:这几个配置文件读取和引用!
/etc/named.rfc1912.zones配置文件增加内容
zone "2.25.172.in-addr.arpa" IN { #注意书写形式,以及后缀!
type master;
file "172.25.2.ptr"; #习惯的命名方式
allow-update { none; };
};
/var/named/172.25.254.ptr的内容
$TTL 1D
@ IN SOA master.wzj.com. user.mail.wzj.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master.wzj.com.
master A 172.25.2.105
25 PTR www.wzj.com.
55 PTR dns.wzj.com.
#注意小数点的问题!
测试
说明:在局域网中,最好正向和反向解析设置正确的数据!
五、双向解析
概念:不同的人解析的是不一样[内网172.25.254.0和外网192.168.172.0]
核心步骤
制作:两套体系-->/etc/named.conf
需求: 1.1.1.0/24 172.25.254.0/24
(1)cp -p westos.com.zone wzj.com.inter
:%s/172.25.254/1.1.1
#说明:创建内网的数据库,并且要创建/etc/named.rfc1912.inter
(2)cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.inter (内网的文件)
(3)vim /etc/named.rfc1912.inter
只修改了: zone "wzj.com" 中的 file "wzj.com.inter" ==>引用(内网)数据库文件
(4)vim /etc/named.conf
4.1)原来的通过/**/来注释
4.2)man 5 named.comf告知的
view localnet {
match-clients { localhost; }; #说明:可以写多个(指定网段的IP)
zone "." {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";#客户端A看的是局域网的
};
view internet {
match-clients { any; }; #说明:除了本机以外的其他主机(可以设置成网段)!
zone "." {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.inter"; #客户端B看的是公网的
};
include "/etc/named.root.key";
(5)测试
自己主机:dig www.wzj.com
其他主机:dig www.wzj.com
六、排错的说明
可以通过/var/log/messages、systemctl status named、journel -xe 这三种方式来查看日志的问题
常出现的问题
1)语法设置错误以及拼写问题 -->/var/log/messages 详细的信息!
2)逻辑设置错误,就需要通过反复测试来排查问题!
常见的就是.的问题!
dig输出的说明
ANSWER
AUTHORITY
DHCP的租约到期了
/etc/reslov.conf -->多个DNS(放置某个DNS宕机,连不上网) 自己的IP一定要放到上面()
需求:日志在/var/log/messages -->想办法自定义位置
理解:高度的含义
3、DNS服务器查询的类型:
(1)递归:客户端仅发出一次请求,让DNS服务器去查询返回结果;
(2)迭代:要发出多次请求去分别查询不同的DNS服务器;
4、DNS名称解析方式:
(1)正向解析:即将FQDN转化为IP。
(2)反向解析:即将IP转化为FQDN。
5、DNS服务器类型:
(1)主DNS服务器:负责解析至少一个域。
(2)辅助(从)DNS服务器:负责解析至少一个,是主DNS服务器的辅助。
(3)缓存DNS服务器:不负责解析域,只是缓存域名解析结果。
6、DNS返回的结果类型:
(1)肯定答案:查询的域存在,会被缓存下来。
(2)否定答案:不存在查询的域名,因此不存在与其查询的域名对应的IP;会被缓存下来。
(3)权威答案:所查询的域名的结果是由负责解析这个域的DNS服务器所返回的答案。
(4)非权威答案:在缓存中查询的结果。
7、DNS的监听端口:tcp的53号端口,udp的53号端口。
引出下文