目录
1、BIND (Berkeley Internet Name Daemon)
一、DNS系统作用
• 正向解析:根据域名查找对应的IP地址
• 反向解析:根据IP地址查找对应的域名
• DNS系统的分布式数据结构
二、DNS域名结构
1、根域
位于树状结构最顶层,用“.”表示。
2、顶级域
一般代表一种类型的组织机构或国家地区: 如.net(网络供应商)、.com(工商企业)、or
(团体组织)、edu(教育结构)、gov(政府部门)、.cn (中国国家域名)。
3、二级域
用来标明顶级域内的一个特定的组织,国家顶级域下面的二级域名由国家部门统一管理。
4、子域
二级域下所创建的各级域统称为子域,各个组织或用户可以自由申请注册自己的域名。
5、主机
主机位于域名空间最下层,就是一台具体的计算机。
PS:
• 域名与IP地址之间是多对一的关系,一个IP地址不一定只对应一个域名,且一个域名只可以对应一个IP地址。
• CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的
地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓
存服务器上,由缓存服务器直接响应用户请求。
• CDN的基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使
内容传输的更快、更稳定通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层
6、常见域名:
所有的域名必须以点(根域)结尾
www.qq.com.cnwww.baidu.com.cn.
根域名:(.)
一级域名:.cn(中国).us.tw.kr(韩国).jp(日本).hk(香港).uk(英国)
二级域名:.com.cn(中国商业组织).edu.cn(教育机构).org.cn(非盈利).net.cn(中国运
营商)。
三级域名:.sina.com.cn、.nb.com.cn、.haixi.com.cn
组织域:.com、.org、net.CC
国家域:.cn.tw(台湾).hk(香港).iq.ir.jp(日本)
反向域:114.114.114.114是国内移动电信和联通通用的DNS,手机和电脑端都可以使用。
8.8.8.8是GOOGLE公司提供的DNS,该地址全球通用,相对来说,更适合国外以及访问国外
网站的用户使用。
223.5.5.5和223.6.6.6:阿里云DNS。
PS:
DNS使用端口:DNS服务使用TCP和UDP的53端口,TCP的53端口用于连接DNS服务器,
UDP的53端口用于解析DNS。
DNS域名长度限制:每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
三、DNS解析服务数据流向
DNS解析:内网
服务端A:解析外网地址:
整体的数据流向:
1、加载缓存
2、就近原则——》加载/etc/hosts
3、找DNS客户端配置文件/etc/resolv.conf或者ifcfg-ens33网卡设备
①在以上内容中,均自上而下读取配置通常我们使用的DNS服务器,要么是内网,如果是访
问国内网站,可以使用114.114.114.114,,访问国外网站,我们就需要定向使用外网DNS8.8.8.8
或者此处,我们指向一个DNS的代理服务器。
②向外部DNS服务器的53端口,建立TCP的三次握手请求。
③客户端会从建立的TCP三次握手的长连接通道中,发送数据包(包含了请求头、请求行、
请求体,其中包含的是域名-ip之间请求方式)。
④在建立DNS连接的过程中,如果不是官方的DNS,是内网的DNS,在请求建立连接的时
候,被拒绝了,或者访问失败,
需要考虑2个问题:
1)该内网DNS是否做了拒绝的配置——》
/etc/named.conf "options xxx" allow-query {any:};
2)确定好内网DNS的网卡IP是否正确——》/etc/named.conf "options xxx"
(万一DNS有多张网卡,要确定好该DNS监听的IP是多少)
4、寻到最近的根域服务器之后,尝试建立三次握手请求,然后进行迭代、递归的过程
①送代和递归任务请求:是UDP协议
②DNS服务器,如作为缓存和索引服务器的话,会将请求转给根域服务器,或者查看本地缓
存,如本地缓存包含请求的内容结果,则直接返回给客户端,此时,客户端得到的解析结果,会保
存在本地缓冲中,并标记为非权威解析。
③如果本地解析不到,正常导引到最近的根域服务器。
④DNS服务器,如本是根域服务器,在解析了根域的信息之后,会根据送代和递归的方式,
逐步找寻顶级域、二级域、子域服务器、主机名服务器、来分别解析DNS请求的域名的方式
(PSOAA等等)。
⑤解析完成后,将结果传递回客户端,进行四次挥手过程,如该客户端是DNS缓存服务器,
DNS缓存服务器会先更新本地缓存,然后将结果回应给客户端(主机)。
PS:
更新本地缓存:DNS缓存服务器,缓存机制是可以配置、控制的,例如:缓存的TTL生命周
期,缓存的TTL生命周期,缓存的命中率(访问频次-高热数据)缓存数据淘汰机制。
⑥解析完成后,将结果传递回客户端,如该客户端是主机的话,进行四次挥手过程,主机就
会将结果放在缓存中,(也是有TTL的),同时,如果服务器重启了。这一部分缓存是会丢失的
PS:
这一部分缓存是会丢失:重启后不会丢失的缓存,例如:YUM缓存。
⑦然后在向请求到的域名-IP之间的IP地址发送TCP三次握手连接请求果无法建立连接,会返
回给客户端用户态/终端上。
⑧我们需要考虑:
1、是否为网络问题-ping、tracroute、Tcpdump等工具来检测网络健康状态。
2、DNS服务是否需要更换-》/etc/resolv.conf或ifcfg-ens33。
3、例外情况,我们可以在网上负责解析域名-ip网页,找寻IP地址,然后定向写在/etc/hosts中。
4、再次尝试连接。
四、DNS查询类型及原理
1、递归查询
一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后,若
DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结
果后转交给客户机此查询的源和目标保持不变,为了查询结果只需要发起一次查询。
2、选代查询
一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于选代查询如:若对方
不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发
起进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化为查询结果一般
需要发起多次查询。
3、查询原理
正向解析查询过程
①先查本机的缓存记录。
②查询hosts文件。
③查询dns域名服务器,交给dns域名服务器处理以上过程成为递归查询:要一个答案,直接
会给结果。
④这个dns服务器可能是本地域名服务器,也有个缓存,如果有直接返回结果,如果没有则进
行下一步。
⑤求助根域服务器,根域服务器返回可能会知道结果的顶级域服务器让他去找顶级域服务器。
⑥求助顶级域服务器,顶级域服务器返回可能会知道结果的二级域服务器然他去找二级域服务器。
⑦求助二级域服务器,二级域服务器查询发现是我的主机,把查询到的ip地址返回给本地域名服务器。
⑧本地域名服务器将结果记录到缓存,然后把域名和ip的对应关系返回给客户端。
4、本地主机有关DNS映射文件(hosts)
• hosts文件包含了ip地址与主机名之间的映射,还包括主机的别名。
• 默认情况下,系统首先从hosts文件查找解析记录。
• hosts文件的优先级高于DNS服务器,这是由/etc/nsswitch.conf文件规定的hosts文件只对当
前的主机有效。
• hosts文件可减少DNS查询过程,从而加快访问速度。
• Linux中有关DNS的映射文件: /etc/hosts
• windos系统中有关DNS的映射文件:Windows\System32\drivers\letc\hosts
五、DNS系统类型
1、缓存域名服务器
只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域
地址数据。构建缓存域名服务器时,必须设置根域或指定其他DNS服务器作为解析来源。
• 也称为DNS高速缓存服务器
• 通过向其他域名服务器查询获得域名->IP地址记录
• 将域名查询结果缓存到本地,提高重复查询时的速度
2、主域名服务器
管理和维护所负责解析的域内解析库的服务器。
• 特定DNS区域的权威服务器,具有唯一性
• 负责维护该区域内所有域名->IP地址的映射记录
• 需要自行建立所负责区域的地址数据文件
3、从域名服务器
从主服务器或从服务器复制”(区域传输)解析库副本。
• 也称为辅助域名服务器,是对主域名服务器的热备份
• 其维护的域名->IP地址记录来源于主域名服务器
• 需要从主域名服务器自动同步区域地址数据库
PS:
IPV4的名称服务器:全球13个负责解析根域的DNS服务器,美国10个,英国1,瑞典1,日本1
IPv6的根名称服务器:全球共25个,中国1主3从,美国1主2从
六、BIND软件安装
1、BIND (Berkeley Internet Name Daemon)
• BIND是应用最广泛的DNS服务程序
• 官方站点:https://www.isc.org/
2、相关软件包
• bind-9.9.4-37.e17.×86_64.rpm
• bind-utils-9.9.4-37.e7.×86_64.rpm
• bind-libs-9.9.4-37.e17.×86_64.rpm
• bind-chroot-9.9.4-37.el7.x86_64.rpm
七、DNS服务应用实验
1、安转BIND软件
[root@localhost ~]# rpm -qc bind //#查询bind软件配置文件所在路径
/etc/logrotate.d/named //主配置文件 控制系统全局
/etc/named.rfc1912.zones //区域配置文件 控制具体单个区域
/var/named/named.localhost //区域数据配置文件 区域信息
安装bind软件包
yum install bind -y (必须网络源或光盘挂载) 或rpm -ivh 前提挂载光盘(系统盘ISO镜像)
2、修改主要配置文件
vim /etc/named.conf
options { listen-on port 53 { 192.168.110.128; }; ●监听53端口,ip地址使用提供服务的本地IP,也可用any表示所有
#listen-on-v6 port 53 { ::1; }; #ipv6行如不使用可以注释掉或者删除
directory "/var/named"; #区域数据文件的默认存放位置
dump- file "/var/named/data/cache_dump.db"; #域名缓存数据库文件的位置
statistics-file "/var/named/data/named stats.txt"; #状态统计文件的位置
memstatistics-file "/var/named/data/named mem stats.txt"; # 内存统计文件的位置
allow-query { 192.168.80.0/24; 172.16.100.0/24; };● 允许使用本DNS解析服务的网段,也可用any代表所有
}
zone "." IN {#正向解析“."根区域
type hint;#类型为根区域
file "named.ca";#区域数据文件为named.ca,#记录了13台根域服务器的域名和IP地址等信息
};
include "/etc/named.rfc1912.zones"; #包含区域配置文件里的所有配置
3、修改区域配置文件,添加正向区域配置
vim /etc/named.rfc1912.zones
#文件里有模版,可复制粘贴后修改
zone "benet.com." IN {●正向解析"benet.com"区域
type master;#类型为主区域
file "benet.com.zone."; ●指定区域数据文件为benet.com.zone
allow-update { none; } ;
};
4、配置正向区域数据文件
cd /var/ named/
cp -p named.localhost benet.com.zone #保留源文件的权限和属主的属性复制
vim /var/named/benet.com.zone
$TTL 1D #有效解析记录的生存周期
@ in SOA benet.com. admin.benet.com. ( #“@"符号表示当前的DNS区域名
0 ; serial #更新序列号,可以是10位以内的整数
1D ; refresh #刷新时间,重新下载地址数据的间隔
1H ; retry #重试延时,下载失败后的重试间隔
1W ; expire #失效时间,超过该时间仍无法下载则放弃#
3H) ; minimum #无效解析记录的生存周期,
NS benet.com #记录当前区域的DNS服务器的名称
A 192.168.80.10. #记录主机IP地址
IN MX 10 mail.benet.com #MX为邮件交换记录,数字越大优先级越低
www IN A 192.168.80.10 #记录正向解析www.benet.com对应的IP
mail IN A 192.168.80.11 #MX为邮件交换记录,数字越大优先级低
ftp IN CNAME www #CNAME使用别名,ftp 是www的别名
-
IN A 192.168.80.100 #泛域名解析,“*"代表任意主机名
#“@”这里是一个变量,当前DNS区域名 #SOA记录中的更新序列号用于同步主、从服务器的区域数据,当从服务器判断区域更新时,若发现主服务器中的序列号与本地区域数据中的序列号相同,则不会进行下载。
"benet.com. "此为完全合格域名(FQDN) ,后面有个“."不能漏掉
#“admin.benet.com.”表示管理员邮箱,这里的“@”符号已有其他含义,所以用“.”代替
#IN 表示internet
5、启动服务,关闭防火墙
systemctl start named
systemctl stop firewalld
setenforce 0 #如果服务启动失败,可以查看日志文件来排查错误
tail -f /var/log/messages #如果服务启动卡住,可以执行下面命令解决
rndc-confgen -r /dev/urandom -a
#对域名语法进行检查(named.conf)
named-checkconf -z /etc/named.conf
6、在客户端的域名解析配置文件中添加DNS服务器地址
vi /etc/resolv .conf #修改完后立即生效
nameserver 192.168.80.10 或 vi /etc/sysconfig/network-scripts/ifcfg-ens33
#修改完后需要重启网卡
DNS1=192.168.80.10
systemctl restart network
7、测试DNS解析
host www.benet.com
nslookup www.benet.com
ext file lenath:11.599 lines:231
Ln:121 Co
8、反向解析
vim /etc/named.rfc1912.zones
// 192.168.10.0 反向则是 10.168.192
zone "10.168.192.in-addr.arpa" IN {
type master;
file "benet.com.zone.local;"; //指定反向解析的数据文件,也可以跟正向解析的数据文件相同
allow-update { none; };
};
cd /var/named/
cp -p benet.com.zone benet.com.zone.local
$TTL 1D #有效解析记录的生存周期,默认单位为秒
@ IN SOA benet.com. admin.benet.com. ( #SOA标记、域名和管理员邮箱,@变量表示域名
0 ; serial #更新序列号,10位以内数字,用于主从同步,主服务器这个数值要大于从服务器否则无法同步
1D ; refresh #刷新时间
1H ; retry #重试刷新时间间隔
1W ; expire #失效时间,超过该时间则放弃
3H ) ; minimum #无效解析记录的生存周期
NS benet.com.
A 192.168.10.22
100 IN PTR www.benet.com
200 IN PTR mail.benet.com
20是192.168.10.20的意思
RTP反向指针 功能:反向解析
systemctl restart named //rndc reload也可以重载配置文件
host 192.168.10.20 // 将会反向解析出域名www.benet.com
PS:
"@" 这里是一个变量,当前DNS区域名 IN 代表使用internet协议 SOA 解析类型,SOA,Start Of Authority 第一条解析,起始记录解析 "ky29c.com." 此为完全合格域名(FQDN) ,后面有个 "." 不能漏掉
A(internet Address):作用,域名解析成IP地址正向解析
AAAA(FQDN): --> IPV6 的正向解析 目前没用直接删除
PTR(PoinTeR):反向解析,ip地址 解析成 域名
NS(Name Server):,专用于标明当前区域的 DNS服务器,服务器类型为域名服务器
CNAME : Canonical Name,别名记录
MX(Mail eXchanger)邮件交换器
TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮件)记录,https验证等
SOA记录与NS记录的区别:NS记录表示域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析;SOA记录设置一些数据版本和更新以及过期时间等信息。