域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们记忆的含有特定含义的主机名(www.baidu.com)转换为便于机器处理的IP地址。相对于IP地址,人们更喜欢使用具有特定含义的字符串来标识因特网上的计算机。值的注意的是,DNS系统采用客户/服务器模型,其协议运行在UDP之上,使用53号端口。
(假定某客户机想获知域名为y.abc.com主机的IP地址)
个人理解:
在本地查询DNS时,若存在,则本地的DNS会对其域名进行解析成相应的ip;若本地DNS不存在该域名的IP时,则在对应的顶级DNS查询(如:114.114.114.114)查询后,然后缓存在本地上,那么172.25.254.0/24该网段的所有ip都可以来我的主机来查询DNS;
为了提高DNS查询效率,并减轻根域名服务器的负荷和减少互联网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存(有时也称为高速缓存域名服务器)。高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
假定本地域名服务器的缓存中并没有y.abc.comd的IP地址,而是存放着顶级域名服务器dns.com的IP地址,那么本地域名服务器也可以不向根域名服务器进行查询,而是直接向com顶级域名服务器发送查询请求报文。这样不仅可以减轻根域名服务器的负荷,而且能够使互联网上的DNS查询请求和回答报文的数量大为减少。
到中午吃饭的时间了,是不是大家都得放下手上的工作去吃饭,然后再进行工作。(这个阶段类似很多机器去都要进行域名解析,都会要去访问主服务器;)
如何提高效率呢?
现在一个人去买大家的饭,其他人现在可以干自己的事情,等到饭买回来就可以直接享用了,大大提高了效率。(这里类比的就是高速去缓存DNS的域名对应的ip,放到本地的缓存里供其他主机来访问,方便查询);
该实验都是在红帽red-hat7.3上进行操作
DNS总揽
##权威名称服务器##
存储并提供某区域(整个DNS域或DNS域的一部分)的实际数据。
权威名称服务器的类型包括:Master、Slave
Master:包含原始区域。有时被称作【主要】名称服务器
Slave:备份服务器,通过区域传送从Master服务器获得的区域数据的副本。有时称作【次要】名称服务器
客户端通过其查找来自权威名称服务器的数据。递归名称服务器的类型包括仅缓存名称服务器:仅用于查找,对于非重要数据之外的任何内容都不具有权威性
########DNS查找
客户端的Stub解析器 将查询发送至 /etc/resolv.conf中的名称服务器,<1>如果名称服务器对于请求的信息具有权威性,会将权威答案发送至客户端;否则,<2>如果名称服务器在其缓存中有请求的信息,则会将非权威答案发送至客户端;<3>如果缓存中无信息,名称服务器将搜索权威名称服务器以查找信息,从根区域开始,按照DNS层次结构向下搜索,直至对于信息具有权威性的名称服务器,以此为客户端获得答案。在此情况中,名称服务器将信息传递至客户端并在自己的缓存中保留一个副本,以备以后查找。
【在本地查询DNS时,若存在,则本地的DNS会对其域名进行解析成相应的ip;若本地DNS不存在该域名的IP时,则在对应的顶级DNS查询(如:114.114.114.114)查询后,然后缓存在本地上,那么172.25.254.0/24该网段的所有ip都可以来我的主机来查询DNS;
】
##DNS资源记录##
DNS区域采用资源记录的形式存储信息。每条资源记录均具有一个类型,表明其保留的数据类型。
【A】:名称至IPV4地址}1
【AAAA】:名称至IPV6地址}2 『DNS的正向解析』
【CNAME】:名称至“规范名称”(包含A/AAAA记录的另一个名称)----->是将对外域名改为对内域名
www.baidu.com. 1165 IN CNAME www.a.shifen.com.
^ ^
这是百度对外的域名 这是百度内部的域名(也是真正的域名)
www.a.shifen.com. 272 IN A 220.181.38.150}1 百度内部所有
www.a.shifen.com. 272 IN A 220.181.38.149}2 IP进行轮寻
百度的IP不止只有一个IP地址,它是存在许多IP进行轮寻的。
【PTR】:IPV4/IPV6地址至名称 『DNS反向解析』
【MX】:用于名称的邮件服务器(向何处发送其电子邮件)
【NS】:域名的名称服务器
【SOA】:“授权起始”,DNS区域的信息(管理信息)dns.westos.com.(最后一个点符号代表结束,若没有点符号,否则会出错,错误的标志就是在dns.westos.com后面添加".westos.com")
设置要维护的域的文件设置
$TTL 1D(保存时间1天)
@(===westos.com这里不要填写) IN SOA(授权起始)@(dns.westos.com.) rname.invalid.(root.westos.com. 谁来维护设置的域,出错找该域去维护) (
0 ; serial
1D ; refresh(刷新时间1天)
1H ; retry (失败后1小时)
1W ; expire (1周后过期)
3H ) ; minimum (缓存最少保存3小时)
NS @(dns.westos.com)授权起始,与上述相对应;
(dns域名) A 127.0.0.1(IPv4地址)<----->dns.westos.com相对应的ip;
AAAA ::1
##DNS排错##
它显示来自DNS查找的详细信息,其中包括为什么查询失败:
NOERROR:查询成功;
NXDOMAIN:DNS服务器提示不存在这样的名称;
SERVFAIL:DNS服务器停机或DNSSEC响应验证失败;
REFUSED:DNS服务器拒绝回答(也许是出于访问控制原因);
##dig输出的部分内容##
标题指出关于查询和答案的信息,其中包括响应状态和设置的任何特殊标记(aa表示权威答案,等等)
QUESTION:提出实际的DNS查询;
ANSWER:响应(如果有);
AUTHORITY:负责域/区域的名称服务器;
ADDITIONAL:提供的其他信息,通常是关于名称服务器;
底部的注释指出发送查询的递归名称服务器以及获得响应所花费的时间;
##缓存DNS服务器##
BIND是DNS服务器,约占所有DNS服务器的九成,也是最广泛使用的开源名称服务器,在rhel中,通过bind软件包提供防火墙开启端口53/TCP和53/UDP。
BIND的主配置文件:/etc/named.conf
子配置文件(区域配置文件):/etc/named.rfc1912.zones
/var/named目录包含名称服务器所使用的其他数据文件。
/etc/named.conf 的语法
• // 或 # 至行末尾是注释 ; /* 与 */ 之间的文本也是注释 ( 可以跨越多行 )
• 指令以分号结束 (?
• 许多指令认为地址匹配列表放在大括号中、以CIDR 表示法表示的 IP 地址或子网列表中 , 或者命名的 ACL 中 ( 例如 any; [ 所有主机 ] 和none; [ 无主机 ] )。
• 文件以 options 块开始 , 其中包含控制 named如何运作的指令。
• zone 块控制 named 如何查对于其具有权威性的根名称服务器和区域。
一些重要的 options 指令
isten-on 控制 named 侦听的 IPv4 地址
listen-on-v6 控制 named 侦听的 IPv6 地址
allow-query 控制哪些客户端可以向 DNS 服务器询问信息
forwarders 包含 DNS 查询将转发至的名称服务器的列表
( 而不是直接联系外部名称服务器 ; 在设有防火 墙的情况中
很有用 )
• 所有这些指令会将打括号中以分号分隔的元素视为地址匹配
列表 . 如
– listen-on { any; };
– allow-query { 127.0.0.1; 10.0.0.0/8 };
主配置文件:/etc/named.conf
子配置文件(区域配置文件):/etc/named.rfc1912.zones
秘钥文件:/etc/rndc.key(当开启dns服务时,才会生成秘钥文件)
查看日志:vim /var/log/message
首先在主机上安装yum源,安装DNS相应的服务,再进行DNS的配置。
在安装一种服务时,如果不知道,可以search一下,再在结果里面找。
yum search dns
进行安装DNS
yum install bind.x86_64
现在进行配置DNS
systemctl stop firewalld.service ##关闭防火墙
ll /etc/rndc.key ##查看是否生成秘钥文件(一般未开启DNS服务,无秘钥文件)
systemctl start named ##开启DNS服务
cat /etc/rndc.key ##查看秘钥
netstat -antlpe |grep named ##查看是否有本地解析(未重启服务,则不存在)
systemctl restart named ##重启动服务
netstat -antlpe |grep named
正向解析的意思是将域名解析成IP地址
制作一个域名对应解析,进行实验。
1、在/etc/named.rfc1912.zones进行添加要制作的网址。
[root@localhost named]# vim /etc/named.conf # 这是DNS全局配置文件,因为这个文件里
的信息都比较重要,我们想要实现正向解析的话,防止文件出错,可以通过修改区域配置文件
来实现
[root@localhost ~]# vim /etc/named.rfc1912.zones # 修改区域配置文件 ,添加如下内容
42 zone “westos.com” IN {
43 type master; # 主dns解析
44 file “westos.com.zone”; # 指定查询文件
45 allow-update { none; }; # 不允许被更新
46 };
2、在/var/named/中制作westos.com.zone文件。
3、在westos.com.zone进行编写信息。
[root@localhost ~]# cd /var/named/[
root@localhost named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@localhost named]# cp -p named.localhost westos.com.zone #复制模板文件内容,把named.localhost这个模板文件里的拷贝到westos.com.zone中,-p表示带权限拷贝
[root@localhost named]# vim westos.com.zone
1 $TTL 1D
2 @ IN SOA dns.westos.com. root.westos.com. (
3 2018111802 ; serial
4 1D ; refresh
5 1H ; retry
6 1W ; expire
7 3H ) ; minimum
8 NS dns.westos.com.
9 dns A 172.25.254.142
10 music A 172.25.254.101
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190816070542165.png
4、进行测试
[root@foundation78 ~]# vim /etc/resolv.conf
nameserver 172.25.254.142
[root@foundation78 ~]# dig music.westos.com
反向解析的意思:将IP地址进行解析成相应的网址域名。
在DNS上
制作一个域名对应解析,进行实验。
1、在/etc/named.rfc1912.zones进行添加反向解析的数据。
[root@dns-server named]# vim /etc/named.rfc1912.zones
47 zone “254.25.172.in-addr.arpa” IN {
48 type master;
49 file “172.25.254.ptr”;
50 allow-update { none; };
51 };
2、在/var/named/中制作westos.com.ptr文件
3、编写westos.com.prt
[root@dns-server named]# cp -p named.loopback 172.25.254.ptr # 拷贝模版文件,-p 表示带权限拷贝
[root@dns-server named]# vim 172.25.254.ptr
1 $TTL 1D
2 @ IN SOA dns.westos.com. root.westos.com. (
3 0 ; serial
4 1D ; refresh
5 1H ; retry
6 1W ; expire
7 3H ) ; minimum
8 NS dns.westos.com.
9 dns A 172.25.254.142
10 11 PTR www.westos.com
11 22 PTR bbs.westos.com
[root@dns-server named]# systemctl restart named
5、在客户端测试;
[root@foundation78 ~]# dig -x 172.25.254.11 # -x 表示反向
DNS的key更新,为了使指定用户更新的唯一性和安全性;
需要进行用秘钥进行加密;
1、systemctl restart named
2、rm -fr westos.com.znoe*
3、cp -p /mnt/westos.com.zone /var/named
4、systemctl restart named
5、dnssec-keygen -a HMAC-MD5 -b 128 -n HOST westos
6、cp -p /etc/rndc.key /etc/westos.key
7、vim /etc/westos.key
当域名的ip发生变化时,域名也要随IP之变化;
将Server客户端的主机名称改为test:hostnamectl set-hostname test.westos.com;
[root@dns-server ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
1 DEVICE=eth0
2 ONBOOT=yes
3 BOOTPROTO=none
4 IPADDR0=172.25.254.142 # 外网网段
5 NETMASK0=255.255.255.0
6 IPADDR1=192.168.0.142 # 内网网段
7 NETMASK1=255.255.255.0
8 GATEWAY=172.25.254.78
9 DAS1=114.114.114.114
[root@dns-server ~]# systemctl restart network
[root@dns-server ~]# ip addr show eth0
[root@dns-server ~]# vim /etc/resolv.conf
nameserver 172.25.254.142
配置内网网段客户端
[root@station Desktop]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
1 BOOTPROTO=none
2 NAME=eth0
3 DEVICE=eth0
4 ONBOOT=yes
5 IPADDR=192.168.0.242
6 PREFIX=24
[root@station Desktop]# systemctl restart network
[root@station Desktop]# vim /etc/resolv.conf # 写入DNS服务端的内网IP
3 nameserver 192.168.0.142
[root@station Desktop]# dig music.westos.com # 在内网网段主机上解析
在外网网段主机上解析
[root@foundation78 ~]# dig music.westos.com
配置DNS服务端
[root@dns-server named]# pwd
/var/named
[root@dns-server named]# cp -p westos.com.zone westos.com.inter
[root@dns-server named]# vim westos.com.inter
1 $TTL 1D
2 @ IN SOA dns.westos.com. root.westos.com. (
3 2018111802 ; serial
4 1D ; refresh
5 1H ; retry
6 1W ; expire
7 3H ) ; minimum
8 NS dns.westos.com.
9 dns A 192.168.0.142
11 music CNAME music.a
12 music.a A 192.168.0.11
13 music.a A 192.168.0.22
[root@dns-server named]# systemctl restart named
[root@dns-server named]# cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.inter
[root@dns-server named]# vim /etc/named.rfc1912.inter
42 zone “westos.com” IN {
43 type master;
44 file “westos.com.inter”;
45 allow-update { none; };
46 };
[root@dns-server named]# vim /etc/named.conf
48 /*
49 zone "." IN {
50 type hint;
51 file "named.ca";
52 };
53 */
54 view internet {
55 match-clients{ 192.168.0.0/24; };
56 zone "." IN {
57 type hint;
58 file "named.ca";
59 };
60 include "/etc/named.rfc1912.inter";
61 };
62 view zonesnet {
63 match-clients{ any; };
64 zone "." IN {
65 type hint;
66 file "named.ca";
67 };
68 include "/etc/named.rfc1912.zones";
69 };