DNS域名服务基础

结构

DNS域名服务基础

  • DNS系统的作用及类型

  • BIND的安装和配置文件

使用BIND构建域名服务器

  • 构建缓存域名服务器

  • 构建主、从域名服务器

DNS系统的作用

正向解析:根据域名查找对应的IP地址

反向解析:根据IP地址查找对应的域名(不常用特殊场合用,比如用于反垃圾邮件的验证)

DNS系统的分布式数据结构

根.:根域名

"全世界只有13台(这13台根域名服务器名字分别为"A"至"w"),1个为主根服务器在美国。其余12个均为辅根服务器,其中9个在美国,欧洲2个,位于英国和瑞典,亚洲1个位于日本

DNS是什么

DNS域名系统( Domain Name System缩写DNS,Domain

Name被译为域名)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。

DNS使用的协议及端口号

DNS的默认端口为53。DNS端口分为TCP和UDP。

一、TCP是用来做区域传送,多用于主从同步

在一个区中主DNS服务器从自己本机的数据文件中读取该区的DNs数据信息,而辅助DNs服务器则从区的主DNS服务器中读取该区的DNS数据信息

二、UDP是用来做DNS解析的

域名:通常由一个完全合格域名(FQDN)标识。FQDN全称 Fully Qualified Domain Name,它能准确表示出其相对于DNS域树根的位置,也就是节点到DNS

树根的完整表述方式,从节点到树根采用反向书写,并将每个节点用"."分隔,对于DNS域google来说,其完全正式域名(FQDN)为google.com。

例如,google 为 com 域的子域,其表示方法为 google.com,而i www 为 google 域中的子域,可町以使用www . google.com.表示。

注意:通常,FQDN有严格的命名限制,长度不能超过256字节,只允许使用字符a-z,0-9,A-Z和减号(-)。点号(.)只允许在域名标志之间(例如"google.com")或者FQDN的结尾使用。域名不区分大小,由最顶层到下层,可以分成:根域、顶级域、二级域、子域。

wwww .87bok.com

即全域名:同时带有主机名和域名的名称

FQDN =Hostname + DomainName

如:www . baidu.com.

注意:最前面的一定是主机、最后一个点表示根域,通常是省略不写的,但实际上www.abc.com=ww.abc.com.域名结构:

http : // www .sina. com.cn. /

http://主机名.子域.二级域.顶级域根域/

DNS系统类型

缓存域名服务器

  • 也称为DNS高速缓存服务器

  • 通过向其他域名服务器查询获得域名->IP地址记录

  • 将域名查询结果缓存到本地,提高重复查询时的速度

Windows系统查询dns缓存命令:ipconfig /displaydns

windows系统清理缓存命令:ipconfig /flushdns

linux清dns缓存dns需要安装nscd软件,启动、执行nscd -i hosts

两种查询方式

(1)递归查询 递归查询是一种 DNS 服务器的查询模式,在该模式下 DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果 DNS 服务器本地没有存储查询 DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。

总的一句话,就是客户机发送请求后自己只用等待结果即可,中间具体过程交给服务器实现。 (2)迭代查询 DNS 服务器另外一种查询方式为迭代查询,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台 DNS 服务器地址,客户机再向这台 DNS 服务器提交请求,依次循环直到返回查询的结果为止

总括:客户机的请求需要自己每个去查询才能得到结果,服务器没有结果时候只会给你提供其它服务器的地址,而不会帮你去请求查询,这与递归截然相反。

DNS系统类型

主域名服务器

  • 特定DNS区域的权威服务器,具有唯一性

  • 负责维护该区域内所有域名->IP地址的映射记录

  • 需要自行建立所负责区域的地址数据文件

从域名服务器**

  • 也称为辅助域名服务器,是对主域名服务器的热备份

  • 其维护的域名->IP地址记录来源于主域名服务器

  • 需要从主域名服务器自动同步区域地址数据库

缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但没有域名数据库。它从某个远程服务器取得每次域名服务器查询的结果,并将它放在高速缓存中,以后查询相同的信息时用它予以响应。缓存域名服务器不是权威性服务器,因为提供的所有信息都是间接信息。构建缓存域名服务器时,必须设置根或或指定其他DNS服务器作为解析来源。

转发域名服务器:负责所有非本地域名的本地查询。转发域名服务器接到查询请求后,在其缓存中查找,如找不到就将请求依次转发到指定的域名服务器,直到查找到结果为止,否则返回无法映射的结果。

BIND软件安装

BIND (Berkeley Internet Name Daemon)

●BIND是应用最广泛的DNS服务程序

●官方站点: https://www.isc.orgl

相关软件包

  • bind-9.9.4-37.el7.x86_64.rpm

  • bind-utils-9.9.4-37.el7.x86_64.rpm

  • bind-libs-9.9.4-37.el7.x86_64.rpm

  • bind-chroot-9.9.4-37.el7.x86_64.rpm

正向解析配置过程

正向解析查询过程: ①先查本机的缓存记录, ②查询hosts文件, ③查询dns域名服务器,交给dns域名服务器处理, 以上过程成为递归查询:我要一个答案你直接会给我结果, ④这个dns服务器可能是本地域名服务器,也有个缓存,如果有直接返回结果,如果没有则进行下一步, ⑤求助根域服务器,根域服务器返回可能会知道结果的顶级域服务器让他去找顶级域服务器, ⑥求助顶级域服务器,顶级域服务器返回可能会知道结果的二级域服务器然他去找二级域服务器, ⑦求助二级域服务器,二级域服务器查询发现是我的主机,把查询到的ip地址返回给本地域名服务器, ⑧本地域名服务器将结果记录到缓存,然后把域名和ip的对应关系返回给客户端,

(1)安装bind软件包 yum install bind -y (必须网络源或光盘挂载) 或rpm -ivh 前提挂载光盘(系统盘ISO镜像)

[root@localhost ~]# rpm -qc bind //#查询bind软件配置文件所在路径 /etc/logrotate.d/named //主配置文件 控制系统全局 /etc/named.rfc1912.zones //区域配置文件 控制具体单个区域 /var/named/named.localhost //区域数据配置文件 区域信息

(2)修改主要配置文件 vim /etc/named.conf options { listen-on port 53 { 192.168.80.10; }; ●监听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代表所有 }

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 #泛域名解析,“*"代表任意主机名

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

反向解析

1)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; }; };

(2)cd /var/named/ cp -p benet.com.zone benet.com.zone.local

vim 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.20 100 IN PTR www.benet.com.(100可以随意设置) 200 IN PTR mail.benet.com.(200想怎么设置就怎么设置)

#20是192.168.10.20的意思

#RTP反向指针,功能:反向解析

systemctl restart named //rndc reload也可以重载配置文件

host 192.168.10.20 //将会反向解析出域名www。benet。com

DNS主从服务器及自动同步

实验环境: 主服务器:192.168.10.20 从服务器:192.168.10.21

配置主服务器192.168.10.20

vim /etc/named.conf listen-on port 53{} 中值为any allow-query{}中值改为any

vim /etc/named.rfc1912.zone zone "benet.com" IN { type master; //类型为主区域 file "benet.com.zone"; allow-transfer { 192.168.10.21; }; //设置从服务器地址 };

zone "10.168.192.in-addr.arpa" IN { type master; file "benet.com.zone.local"; allow-transfer{ 192.168.10.21; }; };

配置从服务器192.168.10.21

yum install -y bind vim /etc/named.conf options { listen-on port 53 { 192.168.10.21; }; ●监听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 { any; }; ● 允许使用本DNS解析服务的网段,也可用any代表所有 }

修改从域名服务器区域配置文件,添加正、反区域配置

vim /etc/named.rfc1912.zone zone "benet.com" IN { type slave; //类型为从区域 file "slaves/benet.com.zone"; //下载的区域数据文件保存到slaves/目录下 masters { 192.168.10.20; }; //设置主服务器地址 };

zone "10.168.192.in-addr.arpa" IN { type slave; file "benet.com.zone.local"; masters { 192.168.10.20; };

###主、从都重启动服务,并查看区域数据文件是否已下载成功 systemctl restart named ls -1 /var/named/slaves/

#####在客户端的域名解析配置文件中添加从DNs服务器地址 echo "nameserver 192.168.10.21" >> /etc/ resolv.conf

####测试 host 192.168.10.20 nslookup 192.168.10.21

#停止主服务器的服务,模拟主服务器故障

DNS分离解析

实验环境: 主服务器:192.168.10.20 网卡vmnet2 192.168.20.21 Web服务器:192.168.10.21 网卡vmnet3 10.0.0.101

分离解析的域名服务器实际也是主域名服务器,这里主要是指根据不同的客户端提供不同的域名解析记录。

DNS分离解析即将内外网的相同域名解析为不同的IP地址。现实网络中一些电商网站为了让用户有更好的体验效果解析速度更快,就把来自不同运营商的用户解析到相对应的服务器这样就大大提升了访问速度。

配置网关服务器搭建DNS分离解析 在网关服务器搭建DNS分离解析,使局域网主机解析www.benet.com为192.168.10.20,外网主机解析www.benet.com 为10.0.0.100。

1.为网关服务器配置双网卡 在关机状态下再添加一-块网卡,重启系统 ens33 192.168.20.21 ifconfig ens37 10.0.0.1/24 ifconfig

2.安装bind软件包 yum install -y bind 3.修改主配置文件 vim /etc/named.conf options { listen-on port 53 { any; }; ●监听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 { any; };● 允许使用本DNS解析服务的网段,也可用any代表所有 }

include "/etc/named. rfc1912. zones"; 4.修改区域配置文件 vim /etc/named.rfc1912.zones view "lan" { #定义内网view,view代表容器分割 match-clients { 192.168.80.0/24; } ; #匹配内网网段 zone "benet.com" IN { #设置要解析的区域 type master; file "benet.com.zone.lan"; #数据配置文件 };

zone "." IN { #可将根域配置从主配置文件剪切过来,dd+p type hint; #hint是根区域类型 file "named.ca"; }

view "wan" { #定义外网view . match-clients { any; } ; #匹配除了内网网段以外的任意地址 zone "benet.com" IN { type master; file "benet.com.zone.wan"; }; }; #注意:一旦启用view,所有的zone必须都在view下,所以要把系统默认的自检用的zone也放在view下或者删55

修改区域数据配置文件

cd /var/named cp -p named.localhost benet.com.zone.lan cp -p named.localhost benet.com.zone.wan vim benet.com.zone.lan $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地址 www IN A 192.168.80.10 #记录正向解析www.benet.com对应的IP

vim benet.com.zone.wan $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 10.0.0.1 #记录主机IP地址 www IN A 10.0.0.100 #记录正向解析www.benet.com对应的IP

###启动服务 systemctl start named

###在内、外网客户端的域名解析配置文件中添加DNS服务器地址 echo "nameserver 192.168.80.10" >> /etc/resolv.conf #内网客户端

echo "nameserver 10.0.0.1" >> /etc/resolv.conf #外网客户端

####在内、外网客户端上测试 nslookup www.benet.com

总结

DNS系统的作用与常见类型

BIND服务相关软件及其作用

BIND服务的主配置文件与区域数据文件中重要的配置项

构建缓存域名服务器

构建主域名服务器

构建从域名服务器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DNS的查询过程      如查询过程的初始步骤所示,DNS 域名由本机的程序使用。该请求随后传送至 DNS 客户服务,以通过使用就地缓存的信息进行解析。如果可以解析查询的名称,则查询将被应答,并且此过程完成。其中,本地解析程序的缓存可从以下2个可能的来源获取名称  信息:      ● 如果主机文件就地配置,则来自该文件的任何主机名称到地址的映射都将在DNS 客户服务启动时预先加载到缓存中。      ● 从以前DNS查询应答的响应中获取的资源记录将被添加至缓存并保留一段时间。      如果此查询不匹配缓存中的项目,则解析过程继续进行,客户机查询 DNS 服务器来解析名称。      接下来查询 DNS 服务器,当本地的DNS不能就地解析查询时,可根据需要查询 DNS 服务器来解析名称。如图4-1所示,客户机将查询首选 DNS 服务器。在此过程中使用的实际服务器是从全局列表中选择的。当 DNS 服务器接收到查询时,首先检查它能否根据在服务器的就地配置区域中获取的资源记录信息作出权威性的应答。如果查询的名称与本地区域信息中的相应资源记录匹配,则服务器作出权威性的应答,并且使用该信息来解析查询的名称。      如果查询的名称没有区域信息,则服务器检查它能否通过本地缓存的先前查询信息来解析名称。如果从中发现匹配的信息,则服务器使用它应答查询。接着,如果首选服务器可使用来自其缓存的肯定匹配响应来应答发出请求的客户机,则此次查询完成。      如果查询名称在首选服务器中未发现来自缓存或区域信息的匹配应答,则查询过程可继续进行,使用递归来完全解析名称,包括来自其他 DNS 服务器的支持,以帮助解析名称。在默认情况下,DNS 客户服务要求服务器在返回应答前使用递归过程来代表客户机完全解析名称。在大多数情况下,DNS 服务器的默认配置支持递归过程,如图4-2所示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值