主要内容:
DNS服务基础及搭建、特殊解析(针对地址库文件:DNS轮询 DNS泛域名解析 DNS别名)、缓存DNS(全局转发forwarders)、DNS递归迭代(子域授权)、DNS主从架构搭建、DNS主从数据同步
一、DNS工作原理
DNS域名解析系统(Domain Name System)
介绍:域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程,域名的解析工作由DNS服务器完成。
功能:
- 正向解析:根据注册的域名查找其对应的IP地址;
- 反向解析:根据IP地址查找对应的注册域名,不常用;
DNS服务器分类:
根域名服务器(权威DNS仅13台)、一级DNS服务器、二级DNS服务器、三级DNS服务器
DNS的分布式结构(大型,分布式的互联网DNS解析库)
根域名:即域名结尾的点(DNS域名默认会补全结尾的【.】)
例如: www.qq.com —> www.qq.com.
补充:根域名服务器负责专门维护结尾的点;
常见的顶级/一级域名:
- ① 国家/地区域:.cn .us .kr .hk .tw ...
- ② 组织域:.com .net .edu .org .gov .mil ...
FQDN完全合格主机名(Full Qualified Domain Name)
(完全合格主机名 = 站点名.注册域名后缀)
例如:站点名. .. .二级域.一级域.
DNS域名管理(了解)
IANA互联网数字分配机构(Internet Assigned Numbers Authority)
- 整个域名系统的最高权威机构
- 主管DNS根、.int、.arpa等国际化域名资源
CNNIC中国互联网络信息中心(China Internet Network Information Center)
- 主管国家顶级域.cn
域名代理/注册/购买服务商
- 新网,http://www.xinnet.com
- 万网,http://www.net.cn
- 中国互联,http://hulian.top
二、BIND服务分析
BIND(Berkeley Internet Name Domain)是一种开源的域名系统(DNS)软件,用于将域名转换为IP地址,从而实现互联网上的主机名解析。BIND由加州大学伯克利分校开发,现在由Internet Systems Consortium(ISC)维护和开发。
BIND服务的主要功能包括:
域名解析:BIND将人类可读的域名(如www.example.com)转换为计算机可理解的IP地址(如192.0.2.1),这是互联网通信的基础。
权威名称服务器:BIND可以配置为权威名称服务器,负责特定域名的解析。权威名称服务器存储并提供特定域名的DNS记录。
递归名称服务器:BIND也可以配置为递归名称服务器,为客户端提供完整的域名解析服务。递归服务器会代表客户端查询其他DNS服务器,直到找到所需的IP地址。
缓存名称服务器:BIND可以缓存查询结果,以提高后续相同查询的响应速度,减少网络流量。
BIND的工作原理基于客户端-服务器模型:
- DNS客户端:通常是操作系统或应用程序,发送DNS查询请求。
- DNS服务器:运行BIND软件的计算机,接收并处理DNS查询请求,返回相应的IP地址或其他DNS记录。
BIND支持多种配置选项和安全特性,如DNSSEC(DNS Security Extensions),用于增强DNS的安全性,防止DNS欺骗和缓存投毒等攻击。
1)BIND服务器端程序
- 主要执行程序:/usr/sbin/named
- 系统服务:named
- 所需软件包:bind(主程序)、bind-chroot(提供牢笼政策,安全,监控bind程序)
- 默认端口:TCP/UDP 53
- 运行时的虚拟根环境:/var/named/chroot
2)DNS配置文件
- 主配置文件:/etc/named.conf //设置负责解析的域名(需要提前备份)
- 地址库文件:/var/named/.. //完全合格的主机名与IP地址对应关系
注意:主配置文件的3种注释方法:[ // ]或[ /* 内容 */ ]或[ # ]
注意:每一个[ {}; 及 ;]分号后面严禁多空格,但空行可以
注意:每一个[ {}; ]成对出现
3)/etc/named.conf主配置文件
① 全局配置部分,设置监听地址/端口、地址库存放位置等
关键信息解析:
[Directory] 定义地址库文件的默认存放路径
注意:allow-query{any;};中的any,代表任何人查询,该条记录不加也默认全部
注意:listen-on port 53 { any; };可以使本机所有地址可以响应,删除该条记录后,没有指定则默认允许所有地址监听53端口;
② 区域配置部分,定义DNS区域、类型、地址文件路径等
关键信息解析:
[Zone] 定义解析域名区域
[IN] 表示Internet
[Type] 类型:master(主)或slave(从)
[File] 指定地址库文件(建议文件名:解析域名开头.zone结尾)
4)地址库文件(默认在/var/named/下)
建立地址库文件条件:
① 保证named用户对地址库文件有读取权限;
② 所有的域名都要以点作为结尾,如果没有以点作为结尾,那么默认补全主配置文件负责的域名;
全局TTL配置项及SOA记录:
- $TTL(Time To Live生存时间)
- SOA(Start Of Authority授权信息开始)
- 分号”;”开始的部分表示注释
关键信息解析:
[NS] 域名服务器(Name Server)记录
[A] 地址(Address)记录,仅用于正向解析区域(ipv4地址解析记录)
[AAAA] 地址(Address)记录,ipv6地址解析记录
5)检查配置语法
① 检测主配置文件是否正确(仅供参考)
命令:named-checkconf 主配置文件(/etc/named.conf)
[root@svr7 ~]# named-checkconf /etc/named.conf
如图:
② 检测地址库文件是否正确(仅供参考)
命令:named-checkzone 解析域名 地址库文件
[root@svr7 ~]# named-checkzone tedu.cn /var/named/tedu.cn.zone
zone tedu.cn/IN: loaded serial 0
OK
如图:
6)软件包bind-utils提供以下域名查询工具 :
① 使用Host测试命令,指定DNS地址
命令:host 查询域名或IP地址 [DNS服务器地址]
② nslookup域名解析测试
命令:nslookup 查询域名或IP地址 [DNS服务器地址]
③ dig深度挖掘查询工具
命令:dig 查询域名或IP地址 [@DNS服务器地址] [-t 资源类型]
示例:构建DNS服务器
步骤1:安装软件包
[root@svr7 ~]# yum -y install bind bind-chroot.x86_64
[root@svr7 ~]# rpm -q bind bind-chroot
bind-9.9.4-61.el7.x86_64
bind-chroot-9.9.4-61.el7.x86_64
步骤2:备份DNS的主配置文件
[root@svr7 ~]# cp /etc/named.conf /root/ //备份主配置文件
步骤3:修改主配置文件内容
[root@svr7 ~]# cat /etc/named.conf //查看主配置文件原内容
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual