结构
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服务的主配置文件与区域数据文件中重要的配置项
构建缓存域名服务器
构建主域名服务器
构建从域名服务器