首页 DNS教程DNS服务配置与管理

运维派隶属马哥教育旗下专业运维社区,是国内成立最早的IT运维技术社区,欢迎关注公众号:yunweipai
领取学习更多免费Linux云计算、Python、Docker、K8s教程关注公众号:马哥linux运维

域名系统 DNS

本章内容

-名字解析介绍

-DNS服务工作原理

-实现主服务器

-实现反向解析区域

-实现从服务器

-实现子域

-实现转发

-实现智能DNS

-DNS排错

-实现Internet 的DNS构架

1 名字解析介绍和DNS

当前TCP/IP网络中的设备之间进行通信,是利用和依赖于IP地址实现的。但数字形式的IP地址是很难记忆的。当网络设备众多,想要记住每个设备的IP地址,可以说是“不可能完成的任务”。那么如何解决这一难题呢?我们可以给每个网络设备起一个友好的名称,如:www.magedu.org,这种由文字组成的名称,显而易见要更容易记忆。但是计算机不会理解这种名称的,我们可以利用一种名字解析服务将名称转化成(解析)成IP地址。从而我们就可以利用名称来直接访问网络中设备了。而实现此服务的方法是多样的。如下面所述:

本地名称解析配置文件:hosts
Linux: /etc/hosts
windows: %WINDIR%/system32/drivers/etc/hosts
122.10.117.2 www.magedu.org
93.46.8.89 www.google.com

DNS:Domain Name System 域名系统,应用层协议,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网
基于C/S架构,服务器端:53/udp, 53/tcp
BIND:Bekerley Internet Name Domain,由 ISC (www.isc.org)提供的DNS软件实现

1.1 DNS域名结构

DNS服务配置与管理插图

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

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

1.2 DNS服务工作原理

DNS服务配置与管理插图(1)

1.3 DNS查询类型

  • 递归查询:最终结果,负责到底

  • 迭代查询:最好结果,不负责到底

1.4 名称服务器

Name Server,域内负责解析本域内的名称的DNS服务器

根名称服务器:13组负责解析根域的DNS服务器

1.5 解析类型

  • FQDN --> IP 正向解析

  • IP --> FQDN 反向解析

    注意:正反向解析是两个不同的名称空间,是两棵不同的解析树

1.6 完整的查询请求经过的流程

2 DNS 服务相关概念和技术

2.1 DNS服务器的类型

主DNS服务器

从DNS服务器

缓存DNS服务器(转发器)

2.1.1 主DNS服务器

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

2.1.2 从DNS服务器

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

  • 序列号:解析库版本号,主服务器解析库变化时,其序列递增
  • 刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
  • 重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
  • 过期时长:从服务器联系不到主服务器时,多久后停止服务
  • 通知机制:主服务器解析库发生变化时,会主动通知从服务器

2.2 区域传输

2.3 解析形式

2.4 负责本地域名的正向和反向解析库

​ 正向区域
​ 反向区域

2.5 解析答案

​ 肯定答案:存在对应的查询结果

​ 否定答案:请求的条目不存在等原因导致无法返回结果

​ 权威答案:直接由存有此查询结果的DNS服务器(权威服务器)返回的答案

​ 非权威答案:由其它非权威服务器返回的查询答案

2.6 各种资源记录

区域解析库:由众多RR组成:
资源记录:Resource Record, RR
记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX

  • SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录

  • A:internet Address,作用,FQDN --> IP

  • AAAA:FQDN --> IPv6

  • PTR:PoinTeR,IP --> FQDN

  • NS:Name Server,专用于标明当前区域的DNS服务器

  • CNAME : Canonical Name,别名记录

  • MX:Mail eXchanger,邮件交换器

  • TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮件)记录,https验证等,如下示例:

2.6.1 资源记录定义的格式

注意:

  1. TTL可从全局继承
  2. 使用 “@” 符号可用于引用当前区域的名字
  3. 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应
  4. 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机
2.6.2 SOA记录

name: 当前区域的名字,例如“magedu.org.”
value: 有多部分组成

注意:

  1. 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字
  2. 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换
    例如:admin.magedu.org
  3. 主从服务区域传输相关定义以及否定的答案的统一的TTL

范例:

2.6.3 NS记录

name: 当前区域的名字
value: 当前区域的某DNS服务器的名字,例如ns.magedu.org.

注意:

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

范例:

2.6.4 MX记录

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

注意:

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

范例:

2.6.5 A记录

name: 某主机的FQDN,例如:www.magedu.org.
value: 主机名对应主机的IP地址

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

范例:

范例:阿里云

DNS服务配置与管理插图(2)

2.6 6 AAAA记录

​ name: FQDN
​ value: IPv6

2.6.7 PTR记录

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

注意:网络地址及后缀可省略;主机地址依然需要反着写

例如:

2.6.8 CNAME别名记录

​ name: 别名的FQDN
​ value: 真正名字的FQDN
例如:

2.7 子域授权

每个域的名称服务器,都是通过其上级名称服务器在解析库进行授权,类似根域授权tld

glue record:粘合记录,父域授权子域的记录

范例:

2.8 互联网域名

  1. 域名注册

    代理商:万网, 新网, godaddy

  2. 注册完成以后,想自己用专用服务来解析

管理后台:把NS记录指向的服务器名称,和A记录指向的服务器地址

DNS服务配置与管理插图(3)

3 DNS软件bind

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

3.1 BIND相关程序包

​ yum list all bind*

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

范例:安装bind软件

3.2 BIND包相关文件

  • BIND主程序:/usr/sbin/named

  • 服务脚本和Unit名称:/etc/rc.d/init.d/named,/usr/lib/systemd/system/named.service

  • 主配置文件:/etc/named.conf, /etc/named.rfc1912.zones, /etc/rndc.key

  • 管理工具:/usr/sbin/rndc:remote name domain controller,默认与bind安装在同一主机,且只能通过127.0.0.1连接named进程,提供辅助性的管理功能;953/tcp

  • 解析库文件:/var/named/ZONE_NAME.ZONE

    注意:
    (1) 一台物理服务器可同时为多个区域提供解析
    (2) 必须要有根区域文件;named.ca
    (3) 应该有两个(如果包括ipv6的,应该更多)实现localhost和本地回环地址的解析库

3.3 主配置文件

  • 全局配置:options {};
  • 日志子系统配置:logging {};
  • 区域定义:本机能够为哪些zone进行解析,就要定义哪些zone
    zone "ZONE_NAME" IN {};

注意:

  • 任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的IP地址上
  • 缓存名称服务器的配置:监听外部地址即可
  • dnssec: 建议关闭dnssec,设为no

4 实现主DNS服务器

4.1 主DNS服务器配置

  1. 在主配置文件中定义区域

  2. 定义区域解析库文件
    ​ 出现的内容
    ​ 宏定义
    ​ 资源记录

    范例:区域数据库

4.2 主配置文件语法检查

4.3 解析库文件语法检查

4.4 配置生效

4.5 测试和管理工具

4.5.1 dig 命令

dig只用于测试dns系统,不会查询hosts文件进行解析

命令格式:

​ 范例:

4.5.2 host命令

命令格式:

范例

4.5.3 nslookup命令

nslookup 可以支持交互和非交互式两种方式执行

全令格式:

交互式模式:
nslookup>
server IP: 指明使用哪个DNS server进行查询
set q=RR_TYPE: 指明查询的资源记录类型
NAME: 要查询的名称

4.5.4 rndc 命令

利用rndc工具可以实现管理DNS功能

rndc 监听端口: 953/tcp

命令格式:

4.6 实战案例:实现DNS正向主服务器

4.6.1 实验目的

4.6.2 环境要求

4.6.3 前提准备

4.6.4 实现步骤
4.6.4.1 在DNS服务端安装bind

4.6.4.2 修改bind 配置文件

4.6.4.3 DNS区域数据库文件

4.6.4.4 检查配置文件和数据库文件格式,并启动服务

4.6.4.5 实现WEB服务

4.6.4.6 在客户端实现测试

4.7 允许动态更新

动态更新:可以通过远程更新区域数据库的资源记录

实现动态更新,需要在指定的zone语句块中:

范例:

5 实现反向解析区域

反向区域:即将IP反向解析为FQDN

区域名称:网络地址反写.in-addr.arpa.

示例:

(1) 定义区域

(2) 定义区域解析库文件
注意:不需要MX,以PTR记录为主

范例:

6 实现从服务器

只有一台主DNS服务器,存在单点失败的问题,可以建立主DNS服务器的备份服务器,即从服务器来实现DNS服务的容错机制。从服务器可以自动和主服务器进行单向的数据同步,从而和主DNS服务器一样,也可以对外提供查询服务,但从服务器不提供数据更新服务。

6.1 DNS从服务器

  1. 应该为一台独立的名称服务器
  2. 主服务器的区域解析库文件中必须有一条NS记录指向从服务器
  3. 从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中
  4. 主服务器得允许从服务器作区域传送
  5. 主从服务器时间应该同步,可通过ntp进行
  6. bind程序的版本应该保持一致;否则,应该从高,主低

6.2 定义从区域

格式:

6.3 实战案例:实现DNS从服务器

6.3.1 实验目的

6.3.2 环境要求

6.3.3 前提准备

6.3.4 实现步骤
6.3.4.1 主DNS服务端配置(参看前面案例)

6.3.4.2 从DNS服务器配置

6.3.4.3 客户端测试主从DNS服务架构

7 实现子域

7.1 子域委派授权

将子域委派给其它主机管理,实现分布式DNS数据库

正向解析区域子域方法

范例:定义两个子域区域

7.2 范例:实现DNS父域和子域服务

7.2.1 实验目的

DNS服务配置与管理插图(4)

7.2.2 环境要求

7.2.3 前提准备

7.2.3 实现步骤
7.2.3.1 在父域DNS服务器上实现主magedu.org域的主DNS服务

7.2.3.2 实现子域的DNS服务器

7.2.3.4 在父域和子域的web服务器上安装httpd服务

7.2.3.4 客户端测试

8 实现DNS转发(缓存)服务器

8.1 DNS转发

利用DNS转发,可以将用户的DNS请求,转发至指定的DNS服务,而非默认的根DNS服务器,并将指定服务器查询的返回结果进行缓存,提高效率。

注意:

  1. 被转发的服务器需要能够为请求者做递归,否则转发请求不予进行

  2. 在全局配置块中,关闭dnssec功能

8.2 转发方式

8.2.1 全局转发:

对非本机所负责解析区域的请求,全转发给指定的服务器
在全局配置块中实现:

8.2.2 特定区域转发

仅转发对特定的区域的请求,比全局转发优先级高

first:先转发至指定DNS服务器,如果无法解析查询请求,则本服务器再去根服务器查询

only: 先转发至指定DNS服务器,如果无法解析查询请求,则本服务器将不再去根服务器查询

8.3 实战案例:实现DNS forward(缓存)服务器

8.3.1 实验目的

8.3.2 环境要求

8.3.3 前提准备

8.3.4 实现步骤
8.3.4.1 实现转发(只缓存)DNS服务器

8.3.4.2 实现主DNS服务器

8.3.4.3 web服务器配置(参看前面案例,略)
8.3.4.4 在客户端测试

9 实现智能DNS

DNS服务配置与管理插图(5)

9.1 GSLB

GSLB:Global Server Load Balance全局负载均衡

GSLB是对服务器和链路进行综合判断来决定由哪个地点的服务器来提供服务,实现异地服务器群服务质量的保证

GSLB主要的目的是在整个网络范围内将用户的请求定向到最近的节点(或者区域)

GSLB分为基于DNS实现、基于重定向实现、基于路由协议实现,其中最通用的是基于DNS解析方式

范例:查询VIP使用网宿的CDN服务

9.2 CDN (Content Delivery Network)内容分发网络

DNS服务配置与管理插图(6)

9.2.1 CDN工作原理
  1. 用户向浏览器输入www.a.com这个域名,浏览器第一次发现本地没有dns缓存,则向网站的DNS服务器请求
  2. 网站的DNS域名解析器设置了CNAME,指向了www.a.tbcdn.com,请求指向了CDN网络中的智能DNS负载均衡系统
  3. 智能DNS负载均衡系统解析域名,把对用户响应速度最快的IP节点返回给用户;
  4. 用户向该IP节点(CDN服务器)发出请求
  5. 由于是第一次访问,CDN服务器会通过Cache内部专用DNS解析得到此域名的原web站点IP,向原站点服务器发起请求,并在CDN服务器上缓存内容
  6. 请求结果发给用户
9.2.2 CDN服务商
  • 服务商:阿里,腾讯,蓝汛,网宿,帝联等
  • 智能DNS: dnspod dns.la

9.3 智能DNS相关技术

9.3.1 bind中ACL

acl: 把一个或多个地址归并为一个集合,并通过一个统一的名称调用

注意:只能先定义后使用;因此一般定义在配置文件中,处于options的前面

格式:

范例:

9.3.2 bind有四个内置的acl
  • none 没有一个主机
  • any 任意主机
  • localhost 本机
  • localnet 本机的IP同掩码运算后得到的网络地址
9.3.3 访问控制的指令:
  • allow-query {}: 允许查询的主机;白名单
  • allow-transfer {}:允许区域传送的主机;白名单
  • allow-recursion {}: 允许递归的主机,建议全局使用
  • allow-update {}: 允许更新区域数据库中的内容
9.3.4 view 视图
9.3.4.1 View:视图,将ACL和区域数据库实现对应关系,以实现智能DNS
  • 一个bind服务器可定义多个view,每个view中可定义一个或多个zone
  • 每个view用来匹配一组客户端
  • 多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件

注意:

  • 一旦启用了view,所有的zone都只能定义在view中
  • 仅在允许递归请求的客户端所在view中定义根区域
  • 客户端请求到达时,是自上而下检查每个view所服务的客户端列表
9.3.4.2 view 格式

9.4 实战案例:利用view实现智能DNS

9.4.1 实验目的

9.4.2 环境要求

9.4.3 前提准备

9.4.4 实现步骤
9.4.4.1 DNS 服务器的网卡配置

9.4.4.2 主DNS服务端配置文件实现view

9.4.4.3 实现区域配置文件

9.4.4.4 创建区域数据库文件

9.4.4.5 实现位于不同区域的三个WEB服务器

9.4.4.6 客户端测试

10 DNS排错

范例:

SERVFAIL:The nameserver encountered a problem while processing the query.
可使用dig +trace排错,可能是网络和防火墙导致
NXDOMAIN:The queried name does not exist in the zone.
可能是CNAME对应的A记录不存在导致
REFUSED:The nameserver refused the client's DNS request due to policy restrictions.
可能是DNS策略导致

范例:

可使用dig +trace排错,可能是网络和防火墙导致
NXDOMAIN:The queried name does not exist in the zone.
可能是CNAME对应的A记录不存在导致
REFUSED:The nameserver refused the client's DNS request due to policy restrictions.
可能是DNS策略导致

11 实战案例:综合案例,实现Internet 的DNS 服务架构

11.1 实验目的

DNS服务配置与管理插图(7)

11.2 环境要求

11.3 前提准备

11.4 实现步骤

11.4.1 各种主机的网络配置(参看上面的环境要求)

11.4.2 实现WEB服务

11.4.3 实现magedu.org域的主DNS服务器

11.4.4 实现magedu.org域的从DNS服务器配置

11.4.5 实现org域的主DNS服务器

11.4.6 实现根域的主DNS服务器

11.4.6 实现转发目标的DNS服务器

11.4.7 实现本地只缓存DNS服务器

11.4.8 客户端测试

本文链接:http://www.yunweipai.com/33973.html

网友评论comments

发表评论

电子邮件地址不会被公开。

暂无评论

Copyright © 2012-2020 YUNWEIPAI.COM - 运维派
扫二维码
扫二维码
返回顶部