linux网络中DNS的解析与服务

258 阅读9分钟

1.DNS的概念

DNS:Domain Name System 域名系统,应用层协议,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网

基于C/S架构,服务器端:53/udp, 53/tcp实际上,每一台 DNS 服务器都只负责管理一个有限范围(一个或几个域)内的主机域 名和 IP 地址的对应关系

这些特定的 DNS 域或 IP 地址段称为 zone(区域)。

根据地址解 析的方向不同

DNS 区域相应地分为正向区域(包含域名到 IP 地址的解析记录)和反向区 域(包含 IP 地址到域名的解析记录)

2.DNS的架构

从上到下:

根域:一般用.表示,可省略不写

一级(顶级)DNS服务器:专门负责一级域名的解析(一般代表一种类型的组织机构或国家地区)

二级DNS服务器:专门负责二级域名的解析

子域名(三级域名)DNS服务器:专门负责子域名的解析

主机名 位于DNS域命名空间的最低层,主要指计算机的主机名

1.png

根域: 全球根服务器节点只有13个,10个在美国,1个荷兰,1个瑞典,1个日本

  • 一级域名:Top Level Domain: tld
  • 三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域
  • com, edu, mil, gov, net, org, int,arpa
  • 二级域名:magedu.com
  • 三级域名:study.magedu.com
  • 最多可达到127级域名

ICANN(The Internet Corporation for Assigned Names and Numbers)互联网名称与数字地址分配机构,负责在全球范围内对互联网通用顶级域名(gTLD)以及国家和地区顶级域名(ccTLD)系统的管理、以及根服务器系统的管理

根域名服务器一旦有任何异常对整个互联网影响都非常大。目前全球有了许多的根域名服务器镜像服务器,这点增加了容错率

2.1 域名的架构

域名采用层次结构表示,从右向左依次表示更高的级别。

以  www.example.com  为例
.com        是一级域名
example     是二级域名
www         是主机名
#主机名用于标识特定的设备或计算机,而子域名用于对主域名下的特定部分进行分类或组织

2.2 域名解析的类型

  • A记录:将域名解析为IPv4地址。
  • AAAA记录:将域名解析为IPv6地址。
  • CNAME记录:将域名解析为另一个域名,可用于创建别名。
  • MX记录:指定接收某域名邮件的邮件服务器地址。
  • NS记录:指定管理域名解析的权威域名服务器。
  • PTR记录:用于反向解析,将IP地址解析为域名

3.为什么要是用DNS

当前TCP/IP网络中的设备之间进行通信,是利用和依赖于IP地址实现的。但数字形式的IP地址是很难记忆的。

当网络设备众多,想要记住每个设备的IP地址,可以说是"不可能完成的任务"。

为了解决这一问题,我们启用了DNS服务

通过每个网络设备起一个好记的名称,如:www.baidu.com,这种由文字组成的名称(域名),显而易见要更容易记忆。

虽然计算机不理解这种名称的,但我们可以利用一种名字解析服务(DNS)将名称转化成(解析)成IP地址。从而我们就可以利用名称来直接访问网络中设备了。

另外,使用DNS解析这种方式访问一个网络中的设备,由于不需要记IP地址,即使当用户要访问的主机IP变化时,只需要主机方面修改名称服务即可,用户仍可以通过原有的名称进行访问而不受影响

4.DNS服务器的类型

缓存域名服务器

只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,

但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定

其他 DNS 服务器作为解析来源。

主域名服务器

管理和维护所负责解析的域内解析库的服务器

从域名服务器

从主服务器或从服务器"复制"(区域传输)解析库副本

5.查询方式

迭代查询

当客户机输入域名时,会访问根域,而根域无法解析会向下级域名服务器询问是否可以解析,知道找到能够解析这个域名的权威服务器

递归查询

当找到权威服务器时,会在服务器中递归查找权威结果并反馈

6.查询原理

正向解析过程:

1.当用户访问一个域名时,先查看本地的host文件,如果有相关记录,直接访问,如果没有,去访问DNS缓存服务器

2.如果DNS缓存服务器中有,直接访问,如果没有,访问根域服务器

3.根域服务器管理主机域,接着去找下级域名的服务器,根据线索找到相应的服务器,以此类推,直到找到和域名相符合的结果,然后反馈给客户机ip地址(权威服务器反馈的权威结果)

7.实现DNS的方式

7.1 本地host文件

host:本地名称解析配置文件,位于etc/host

使用方式:

直接vim /etc/hosts,进入配置文件,添加IP地址和域名的对应关系(例如:192.168.1.13 www.baidu.com将百度的域名与192.168.1.13关联,在本机访问时输入www.baidu.com,访问的是192.168.1.13这个IP地址)

PS:以本地host文件的方式做dns解析,一定要记得修改dns的优先级

即:去vim /etc/nsswitch.conf配置文件中将第39行

39  hosts:      dns files myhostname 
修改为
39  hosts:      files dns myhostname
修改两者先后,优先级就会发生改变,这样系统会优先以本地host做解析,然后才会尝试使用DNS服务器进行主机名解析

作用:

本地hosts文件用于在域名解析时将特定的域名与对应的IP地址进行映射。

在域名解析过程中,操作系统会首先检查本地hosts文件中是否存在与查询域名匹配的条目,如果有,则直接返回hosts文件中指定的IP地址,跳过后续的DNS查询过程。

缺陷:

过于分散,且需要手动更新文件

7.2 安装软件服务 bind

bind是dns服务应用最广泛的程序

DNS服务器软件:bind,powerdns,dnsmasq,unbound,coredns

  • bind:服务器
  • bind-libs:相关库
  • bind-utils: 客户端
  • bind-chroot: 安全包,将dns相关文件放至 /var/named/chroot/

BIND服务:

主配置文件位于: /etc/named.conf

区域配置文件位于:/etc/named.rfc1912.zones

主要执行程序/usr/sbin/named

默认监听端口:53 保存DNS解析记录的数据文件位于/var/named/目录下具体文件名由管理员定义。一般格式为/var/named/域名.zone

7.2.1 使用bind服务正向解析中的各种资源记录

  • A记录:将域名解析为IPv4地址。
  • AAAA记录:将域名解析为IPv6地址。
  • CNAME记录:将域名解析为另一个域名,可用于创建别名。
  • MX记录:指定接收某域名邮件的邮件服务器地址。
  • NS记录:指定管理域名解析的权威域名服务器。
  • PTR记录:用于反向解析,将IP地址解析为域名

SOA记录与NS记录的区别:NS记录表示域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析;SOA记录设置一些数据版本和更新以及过期时间等信息。

SOA记录:

name: 当前区域的名字

value: 有多部分组成

注意:

  1. 当前区域的主DNS服务器的正向解析,也可以使用当前区域的名字
  2. 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换
  3. 主从服务区域传输相关定义以及否定的答案的统一的TTL
name              [TTL]            IN          rr_type             value
域名               缓存             Internet协议 资源类型              值
​
​
​
1.TTL可从全局继承缓存时间
2.使用@符号可以引用当前区域域名
3.同一个名字可以通过多条记录定义多个不同的值,此时DNS服务器会以轮询方式响应
4.同一个值也可能有多个定义名字,通过不同的名字指向同一个值进行定义,仅代表通过多个不同的名字找到同一个主机
​
​
$TTL 1D(统一的ttl定义1天,不写D 是秒)
@       IN SOA  master.            admin. (
                 当前服务器的名称     邮箱地址
                                        0       ; serial   #是否有更新  版本号 更新文件 手动把 0 加1
                                        1D      ; refresh  #刷新时间 拉取时间
                                        1H      ; retry    #失败一个小时后再试一次
                                        1W      ; expire   #过期时间,老是拉取不了,1周以后过期
                                        3H )    ; minimum  #老是去查错误的解析地址,3小时内的缓存下,用户再查直接返回找不到

NS记录:

name: 当前区域的名字

value: 当前区域的某DNS服务器的名字

注意:

  1. 相邻的两个资源记录的name相同时,后续的可省略
  2. 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录
  3. 一个区域可以有多个NS记录
master IN NS name.com.
​
master IN NS name.com.
​
​
         NS  master

MX记录:

name: 当前区域的名字

value: 当前区域的某邮件服务器(smtp服务器)的主机名

注意:

  1. 一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高
  2. 对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
mail  IN MX 10 mx1.name.org.
      IN MX 20 mx2.name.org.
mx1 A   192.168.1.10
mx2 A   192.168.1.10

A记录:

name: 某主机的域名解析,例如:www.ylc.com

value:主机名对应主机的IP地址

避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址

www.ylc.com. IN A 1.1.1.1
www.ylc.com. IN A 2.2.2.2
www.ylc.com. IN   A 3.3.3.3
www.ylc.com. IN   A 4.4.4.4
* IN A 5.5.5.5
#代表泛域名
@   IN   A 6.6.6.6
#代表不需要名字

PTR记录

name: IP,有特定格式,把IP地址反过来写,1.2.3.4,要写作4.3.2.1;而有特定后缀:inaddr.arpa.,所以完整写法为:4.3.2.1.in-addr.arpa.
value: FQDN

CNAME别名记录

name: 别名
value: 真正名字
​
name1  IN CNAME name2
输入name2就等于输入name1
​

7.3 举例一些使用bind实现DNS解析

7.3.1正向解析

正向1.png

正向2.png

正向3.png

正向4.png

正向5.png

正向6.png

正向7.png

正向8.png

正向9.png

正向10.png

7.3.2 主从复制示例

环境:

两台服务器:

master:IP地址为192.168.1.10

slave:IP地址为192.168.1.100

主从1.png

主从2.png

主从3.png

主从4.png

主从5.png

主从6.png

主从7.png

主从8.png

主从9.png

主从10.png

主从11.png

主从12.png

主从13.png

主从14.png

主从15.png

主从16.png

主从17.png

主从18.png

主从复制19.png

主从复制20.png