Linux进阶_DNS服务和BIND之详解篇

成功不易,加倍努力!

      • 1 名字解析介绍和DNS
        • 1.1 DNS服务工作原理
        • 1.2 DNS查询类型
        • 1.3 名称服务器
        • 1.4 解析类型
        • 1.5 完整的查询请求经过的流程
      • 2 DNS 服务相关概念和技术
        • 2.1 DNS服务器的类型
        • 2.2 区域传输
        • 2.3 解析形式
        • 2.4 负责本地域名的正向和反向解析库
        • 2.5 解析答案
        • 2.6 各种资源记录
        • 2.7 子域授权
        • 2.8 互联网域名
      • 3 DNS软件bind
        • 3.1 BIND相关程序包
        • 3.2 BIND包相关文件
        • 3.3 主配置文件
      • 4 实现主DNS服务器
        • 4.1 主DNS服务器配置
        • 4.2 主配置文件语法检查
        • 4.3 解析库文件语法检查
        • 4.4 配置生效
        • 4.5 测试和管理工具
        • 4.6 允许动态更新
      • 5 实现反向解析区域
      • 6 实现从服务器
        • 6.1 DNS从服务器
        • 6.2 定义从区域
      • 7 实现子域
        • 7.1 子域委派授权
        • 7.2 范例:实现DNS父域和子域服务
      • 8 实现DNS转发(缓存)服务器
        • 8.1 DNS转发
        • 8.2 转发方式
      • 9 实现智能DNS
        • 9.1 GSLB
        • 9.2 CDN (Content Delivery Network)内容分发网络
        • 9.3 智能DNS相关技术
      • 10 DNS排错

1 名字解析介绍和DNS

当前TCP/IP网络中的设备之间进行通信,是利用和依赖于IP地址实现的。但数字形式的IP地址是很难记忆的。当网络设备众多,想要记住每个设备的IP地址,可以说是“不可能完成的任务”。那么如何解决这一难题呢?我们可以给每个网络设备起一个友好的名称,如:www.magedu.org,这种由文字组成的名称,显而易见要更容易记忆。但是计算机不会理解这种名称的,我们可以利用一种名字解析服务将名称转化成(解析)成IP地址。从而我们就可以利用名称来直接访问网络中设备了。除此之外还有一个重要功能,利用名称解析服务可以实现主机和IP的解耦,即:当主机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软件实现DNS域名结构
Linux进阶_DNS服务和BIND之详解篇_第1张图片

  • 根域
  • 一级域名: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.1 DNS服务工作原理

Linux进阶_DNS服务和BIND之详解篇_第2张图片

1.2 DNS查询类型

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

1.3 名称服务器

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

IPv4的根名称服务器:全球共13个负责解析根域的DNS服务器,美国10个,荷兰1,瑞典1,日本1

IPv6的根名称服务器:全球共25个,中国1主3从,美国1主2从

1.4 解析类型

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

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

Client -->hosts文件 --> Client DNS Service Local Cache --> DNS Server (recursion
递归) --> DNS Server Cache -->DNS iteration(迭代) --> 根--> 顶级域名DNS-->二级域名
DNS…

2 DNS 服务相关概念和技术

2.1 DNS服务器的类型

主DNS服务器
从DNS服务器
缓存DNS服务器(转发器)

2.1.1 主DNS服务器

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

2.1.2 从DNS服务器

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

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

2.2 区域传输

完全传输:传送整个解析库
增量传输:传递解析库变化的那部分内容

2.3 解析形式

正向:FQDN( Fully Qualified Domain Name) --> IP
反向: IP --> FQDN

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验证等,如下示例:
_dnsauth TXT 2012011200000051qgs69bwoh4h6nht4n1h0lr038x

2.6.1 资源记录定义的格式

name 	[TTL] 	IN 		rr_type 	value

注意

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

面试题:

1. 我的网站域名需要更改,如何使其更快的生效?
2. 更改TTL值为多少比较合适呢?是如何生效的?

2.6.2 SOA记录

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

注意

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

范例:

magedu.org.   86400   IN  SOA    	ns.magedu.org.   nsadmin.magedu.org.   (
		2015042201  ;序列号
		2H 			;刷新时间
		10M 		;重试时间
		1W 			;过期时间
		1D 			;否定答案的TTL值
		)

2.6.3 NS记录

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

注意

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

范例:

magedu.org. IN NS ns1.magedu.org.
magedu.org. IN NS ns2.magedu.org.

2.6.4 MX记录

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

注意

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

范例:

magedu.org. IN 		MX  10  mx1.magedu.org.
			IN 		MX  20  mx2.magedu.org.

2.6.5 A记录

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

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

范例:

www.magedu.org. 		IN 		A 	1.1.1.1
www.magedu.org. 		IN 		A 	2.2.2.2
mx1.magedu.org. 		IN 		A 	3.3.3.3
mx2.magedu.org. 		IN 		A 	4.4.4.4
$GENERATE 1-254 HOST$ 	IN 		A 	1.2.3.$
*.magedu.org. 			IN 		A 	5.5.5.5
magedu.org. 			IN 		A 	6.6.6.6

范例:华为云
Linux进阶_DNS服务和BIND之详解篇_第3张图片

2.6 6 AAAA记录

name: FQDN
value: IPv6

2.6.7 PTR记录

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

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

例如:

4.3.2.1.in-addr.arpa. IN PTR www.magedu.org.
#如1.2.3为网络地址,可简写成:
4   IN   PTR   www.magedu.org.

2.6.8 CNAME别名记录

name: 别名的FQDN
value: 真正名字的FQDN

例如:

www.magedu.org. IN CNAME websrv.magedu.org.

2.7 子域授权

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

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

范例:

.com. 		IN 		NS 		ns1.com.
.com. 		IN 		NS 		ns2.com.
ns1.com. 	IN 		A 		2.2.2.1
ns2.com. 	IN 		A 		2.2.2.2
#magedu.org. 在.com的名称服务器上,解析库中添加资源记录
magedu.org. 		IN 	NS 	ns1.magedu.org.
magedu.org. 		IN 	NS 	ns2.magedu.org.
magedu.org. 		IN 	NS 	ns3.magedu.org.
ns1.magedu.org. 	IN 	A 	3.3.3.1
ns2.magedu.org. 	IN 	A 	3.3.3.2
ns3.magedu.org. 	IN 	A 	3.3.3.3

2.8 互联网域名

  1. 域名注册
    代理商:万网, 新网, godaddy
  2. 注册完成以后,想自己用专用服务来解析

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

范例:阿里云DNS管理后台界面

3 DNS软件bind

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

3.1 BIND相关程序包

yum list all bind*

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

范例:安装bind软件

[root@centos8 ~]#dnf -y install bind bind-utils

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. 在主配置文件中定义区域
vim /etc/named.conf
#注释掉下面两行
// 	listen-on port 53 { 127.0.0.1; };
// 	allow-query 		{ localhost; };

zone "ZONE_NAME" IN {
	type {master|slave|hint|forward};
	file "ZONE_NAME.zone";
};
  1. 定义区域解析库文件
    出现的内容
    宏定义
    资源记录

范例:区域数据库

$TTL 86400
$ORIGIN magedu.org.
@ 	IN 	SOA ns1.magedu.org. admin.magedu.org (
		2015042201
		1H
		5M
		7D
		1D )
	IN  NS ns1
	IN  NS ns2
	IN  MX 10 mx1
	IN  MX 20 mx2
ns1 IN  A 172.16.100.11
ns2 IN  A 172.16.100.12
mx1 IN  A 172.16.100.13
mx2 IN  A 172.16.100.14
websrv  IN A 172.16.100.11
websrv  IN A 172.16.100.12
www IN  CNAME websrv

范例:

[root@centos8 ~]#tcpdump -i eth0 udp port 53 -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
11:37:38.458363 IP 10.0.0.7.42201 > 10.0.0.8.53: 44928+ A? www.baidu.com. (31)
11:37:38.458896 IP 10.0.0.7.54285 > 10.0.0.8.53: 44928+ A? www.baidu.com. (31)
11:37:38.460038 IP 10.0.0.7.42053 > 10.0.0.8.53: 30536+ A?
www.baidu.com.wangxiaochun.com. (48)
11:37:38.460884 IP 10.0.0.7.37739 > 10.0.0.8.53: 30536+ A?
www.baidu.com.wangxiaochun.com. (48)


[root@centos7 ~]#telnet 10.0.0.8 53
Trying 10.0.0.8...
telnet: connect to address 10.0.0.8: Connection refused

4.2 主配置文件语法检查

named-checkconf

4.3 解析库文件语法检查

named-checkzone "magedu.org" /var/named/magedu.org.zone

4.4 配置生效

rndc reload
systemctl reload named
service named reload

4.5 测试和管理工具

4.5.1 dig 命令

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

命令格式:

dig [-t type] name [@SERVER] [query options]
query options:
	+[no]trace:跟踪解析过程 : dig +trace magedu.org
	+[no]recurse:进行递归解析

范例:

#测试反向解析
dig -x IP = dig –t ptr reverseip.in-addr.arpa
#模拟区域传送
dig -t axfr ZONE_NAME @SERVER
dig -t axfr magedu.org @10.10.10.11
dig –t axfr 100.1.10.in-addr.arpa @172.16.1.1
dig -t NS . @114.114.114.114
dig -t NS . @a.root-servers.net

4.5.2 host命令

命令格式:

host [-t type] name [SERVER]

范例

host -t NS magedu.org 172.16.0.1
host -t soa magedu.org
host -t mx magedu.org
host -t axfr magedu.org
host 1.2.3.4

4.5.3 nslookup命令

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

全令格式:

nslookup [-option] [name | -] [server]

交互式模式:

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

4.5.4 rndc 命令

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

rndc 监听端口: 953/tcp

命令格式:

rndc COMMAND
COMMAND:
	status: 查看状态
	reload: 重载主配置文件和区域解析库文件
	reload zonename: 重载区域解析库文件
	retransfer zonename: 手动启动区域传送,而不管序列号是否增加
	notify zonename: 重新对区域传送发通知
	reconfig: 重载主配置文件
	querylog: 开启或关闭查询日志文件/var/log/message
	trace: 递增debug一个级别
	trace LEVEL: 指定使用的级别
	notrace:将调试级别设置为 0
	flush:清空DNS服务器的所有缓存记录

4.6 允许动态更新

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

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

Allow-update {any;};

范例:

chmod 770 /var/named
setsebool -P named_write_master_zones on
nsupdate
>server 127.0.0.1
>zone magedu.org
>update add ftp.magedu.org 88888 IN A 8.8.8.8
>send
>update delete www.magedu.org A
>send
#测试
dig ftp.magedu.org @127.0.0.1
ls -l /var/named/magedu.org.zone.jnl
cat /var/named/magedu.org.zone

5 实现反向解析区域

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

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

示例:

172.16.100. --> 100.16.172.in-addr.arpa.

(1) 定义区域

zone "ZONE_NAME" IN {
	type {master|slave|forward}file "网络地址.zone"
};

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

范例:

$TTL 86400
$ORIGIN 8.168.192.in-addr.arpa.
@ IN SOA ns1.magedu.org. admin.magedu.org. (
				2015042201
				1H
				5M
				7D
				1D )
   IN NS ns1.magedu.org.
11 IN PTR ns1.magedu.org.
11 IN PTR www.magedu.org.
12 IN PTR mx1.magedu.org.
12 IN PTR www.magedu.org.
13 IN PTR mx2.magedu.org.

6 实现从服务器

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

6.1 DNS从服务器

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

6.2 定义从区域

格式:

zone "ZONE_NAME" IN {
	type slave;
	masters { MASTER_IP; };
	file "slaves/ZONE_NAME.zone";
};

7 实现子域

7.1 子域委派授权

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

正向解析区域子域方法

范例:定义两个子域区域

shanghai.magedu.org. 		IN NS ns1.ops.magedu.org.
shanghai.magedu.org. 		IN NS ns2.ops.magedu.org.
shenzhen.magedu.org. 		IN NS ns1.shenzhen.magedu.org.
shenzhen.magedu.org. 		IN NS ns2.shenzhen.magedu.org.
ns1.shanghai.magedu.org. 	IN A 1.1.1.1
ns2.shanghai.magedu.org. 	IN A 1.1.1.2
ns1.shenzhen.magedu.org. 	IN A 1.1.1.3
ns2.shenzhen.magedu.org. 	IN A 1.1.1.4

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

7.2.1 实验目的
Linux进阶_DNS服务和BIND之详解篇_第4张图片

搭建DNS父域和子域服务器

7.2.2 环境要求

需要五台主机
DNS父域服务器:192.168.8.8
DNS子域服务器:192.168.8.18
父域的web服务器:192.168.8.7,www.magedu.org
子域的web服务器:192.168.8.17,www.shanghai.magedu.org
DNS客户端:192.168.8.6

7.2.3 前提准备

关闭SElinux
关闭防火墙
时间同步

7.2.3 实现步骤

yum install bind -y

vim /etc/named.conf
#注释掉下面两行
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };

#只允许从服务器进行区域传输
allow-transfer { 从服务器IP;};
dnssec-enable no;
dnssec-validation no;
vim /etc/named.rfc1912.zones

#加上这段
zone "magedu.org" {
	type master;
	file "magedu.org.zone";
};

cp -p /var/named/named.localhost /var/named/magedu.org.zone
#如果没有-p,需要改权限。chgrp named magedu.org.zone

vim /var/named/magedu.org.zone
$TTL 1D
@ IN SOA master admin.magedu.org. (
				1 ; serial
				1D ; refresh
				1H ; retry
				1W ; expire
				3H ) ; minimum
			NS master
shanghai 	NS shanghains
master 		A 192.168.8.8
shanghains  A 192.168.8.18

websrv 		A 192.168.8.7
www 		CNAME websrv

systemctl start named #第一次启动服务
rndc reload 		  #不是第一次启动服务

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

yum install bind -y

vim /etc/named.conf
#注释掉下面两行
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
allow-transfer { none;};

vim /etc/named.rfc1912.zones

zone "shanghai.magedu.org" {
	type master;
	file "shanghai.magedu.org.zone";
};

cp -p /var/named/named.localhost /var/named/shanghai.magedu.org.zone
#如果没有-p,需要改权限。chgrp named magedu.org.zone

vim /var/named/shanghai.magedu.org.zone

$TTL 1D
@ IN SOA master admin.magedu.org. (
				2019042214 ; serial
				1D ; refresh
				1H ; retry
				1W ; expire
				3H ) ; minimum
			NS master
master 		A  192.168.8.18
websrv 		A  192.168.8.7
www 		CNAME websrv

systemctl start named 	#第一次启动服务
rndc reload	 			#不是第一次启动服务

7.2.3.2 实现子域的DNS服务器

#父域的web服务器利用上面案例(略)
#在子域的web服务器上安装http服务
yum install httpd
#配置主页面
echo www.shanghai.magedu.org > /var/www/html/index.html
#启动服务
systemctl start httpd

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

dig www.shanghai.magedu.org
www.shanghai.magedu.org

7.2.3.4 客户端测试

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

8.1 DNS转发

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

注意

  1. 被转发的服务器需要能够为请求者做递归,否则转发请求不予进行
  2. 在全局配置块中,关闭dnssec功能
dnssec-enable no;
dnssec-validation no;

8.2 转发方式

8.2.1 全局转发:

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

Options {
		forward first|only;
		forwarders { ip;};
};

8.2.2 特定区域转发

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

zone "ZONE_NAME" IN {
	type forward;
	forward first|only;
	forwarders { ip;};
};

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

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

9 实现智能DNS

Linux进阶_DNS服务和BIND之详解篇_第5张图片

9.1 GSLB

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

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

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

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

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

[root@centos6 ~]#dig www.vip.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.vip.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44153
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 5, ADDITIONAL: 0

;; QUESTION SECTION:
;www.vip.com. IN A

;; ANSWER SECTION:
www.vip.com. 180 IN CNAME www.vip.com.wscdns.com.#wscdn 网宿服务商
www.vip.com.wscdns.com. 60 IN A 111.206.176.92

;; AUTHORITY SECTION:
wscdns.com. 172800 IN NS dns2.wscdns.info.
wscdns.com. 172800 IN NS dns3.wscdns.org.
wscdns.com. 172800 IN NS dns4.wscdns.info.
wscdns.com. 172800 IN NS dns5.cdn30.org.
wscdns.com. 172800 IN NS dns1.wscdns.org.

;; Query time: 1290 msec
;; SERVER: 10.0.0.18#53(10.0.0.18)
;; WHEN: Wed Feb 12 18:05:17 2020
;; MSG SIZE rcvd: 200

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

Linux进阶_DNS服务和BIND之详解篇_第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的前面

格式:

acl acl_name {
	ip;
	net/prelen;
	……
};

范例:

acl beijingnet {
	172.16.0.0/16;
	10.10.10.10;
};

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 格式

view VIEW_NAME {
		match-clients { beijingnet; };
		zone “magedu.org” {
			type master;
			file “magedu.org.zone.bj”;
		};
		include “/etc/named.rfc1912.zones”;
};

view VIEW_NAME {
		match-clients { shanghainet; };
		zone “magedu.org” {
			type master;
			file “magedu.org.zone.sh”;
		};
		include “/etc/named.rfc1912.zones”;
};

10 DNS排错

范例:

dig A example.com

; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> A example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30523
...

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 A example.com
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> A example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30523
...
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策略导致

你可能感兴趣的:(#,Linix进阶)