目录
一、BIND域名服务基础
1.1 DNS系统的作用及类型
1.1.1 DNS系统的作用
- 正向解析:根据域名查找对应的IP地址
- 反向解析:根据IP地址查找对应的域名
- DNS系统的分布式数据结构
1.1.2 各级域名的解析示列
根. 根域名DNS服务器:专门负责根域名
一级DNS服务器:专门负责一级域名的解析(一般代表一种类型的组织机构或者国家)
.com(工商、企业)
.net(网络供应商)
.edu(教育机构)
.cn(中国国家域名)
.org(团体组织)
.gov(政府部门)
二级DNS服务器:专门负责二级域名的解析
.net.cn
.edu.cn
.com.cn
子域名DNS服务器:专门负责子域名的解析
.sina.com.cn
.pku.edu.cn
主机站点
www
- DNS使用端口:DNS服务使用TCP和UDP的53端口,TCP的53端口用于连接DNS服务器,UDP的53端口用于解析DNS
- DNS域名长度限制:每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符
- DNS作用:正向解析:根据域名查找对应的IP地址;反向解析:根据IP地址查找对应的域名
域名与IP地址之间是多对一的关系,一个IP地址不一定只对应一个域名,且一个域名只可以对应一个IP地址
1.1.3 DNS系统类型
- 缓存域名服务器
- 也称为DNS高速缓存服务器
- 通过向其他域名服务器查询获得域名>>IP地址记录
- 将域名查询结果缓存到本地,提高重复查询时的速度
- 主域名服务器
- 特定DNS区域的权威服务器,具有唯一性
- 负责维护改区域内所有域名>>IP地址的映射记录
- 需要自行建立所负责区域的地址数据文件
- 从域名服务器
- 也称为辅助域名服务器,是对主域名服务器的热备份
- 其维护的域名>>IP地址记录来源于主域名服务器
- 需要从主域名服务器自动同步区域地址数据库
PS:
权威解析:根服务器自身对发来的请求进行解析的服务
非权威解析:缓存中拿取解析信息 即从服务器中拿取信息
1.1.4 递归解析和迭代解析
-
递归查询:当DNS客户端(如用户的计算机)发起一个域名查询请求时,如果本地DNS服务器无法直接解答该查询,它会代替客户端向其他DNS服务器继续查询,直到找到答案并返回给客户端。递归查询的过程中,查询请求可能会跨越多个DNS服务器,最终由一个DNS服务器直接提供答案给客户端
-
迭代查询:在这种查询方式中,客户端向一个DNS服务器发送查询请求。如果该服务器无法直接提供答案,它会告诉客户端另一个DNS服务器的地址,客户端然后向那个服务器发送查询请求。这个过程会一直重复,直到客户端得到答案或者查询链中断
主要区别:
- 查询主体
-
在递归查询中,查询的主体是本地DNS服务器,它代表客户端进行查询;而在迭代查询中,查询的主体是客户端本身,它需要自己跟踪多个DNS服务器的地址来逐步接近答案
-
- 缓存机制
-
递归查询通常比迭代查询更快,因为递归DNS服务器会对每个查询的最终答案进行缓存,这大大提高了后续相同查询的响应速度
-
1.2 BIND的安装和配置文件
- BIND(Berkeley Internet Name Daemon)
- BIND是应用最广泛的DNS服务程序
- 官方站点:https://www.isc.org
- 相关软件包
- 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
二、使用BIND构建域名服务器
2.1 构建缓存域名服务器
- 安装bind软件包
yum install bind -y
- 查询bind软件配置文件所在路径
rpm -qc bind
- 修改全局配置文件
vim /etc/named.conf
options {
listen-on port 53 { 192.168.182.40; }; ●监听53端口,ip地址使用提供服务的本地IP,也可用any表示所有ip
#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代表所有
}
zone "." IN { #正向解析“."根区域
type hint; #类型为根区域
file "named.ca"; #区域数据文件为named.ca,#记录了13台根域服务器的域名和IP地址等信息
};include "/etc/named.rfc1912.zones"; #包含区域配置文件里的所有配置
此时缓存域名服务器已经搭建完成
2.2 构建主、从域名服务器
- 在上面缓存域名服务器的基础上对区域配置文件和区域数据配置文件进行修改使之具备解析能力称为主域名服务器
- 配置正向区域数据文件
cd /var/ named/
cp -p named.localhost one.com.zone #保留源文件的权限和属主的属性复制
vim /var/named/one.com.zone
$TTL 1D #有效解析记录的生存周期
@ in SOA one.com. rname.invalid. ( #“@"符号表示当前的DNS区域名
0 ; serial #更新序列号,可以是10位以内的整数
1D ; refresh #刷新时间,重新下载地址数据的间隔
1H ; retry #重试延时,下载失败后的重试间隔
1W ; expire #失效时间,超过该时间仍无法下载则放弃#
3H) ; minimum #无效解析记录的生存周期,
NS one.com. #记录当前区域的DNS服务器的名称
A 192.168.23.40 #记录主机IP地址
IN MX 10 mail.one.com #MX为邮件交换记录,数字越大优先级越低
www IN A 192.168.23.100 #记录正向解析www.benet.com对应的IP
mail IN A 192.168.23.100 #MX为邮件交换记录,数字越大优先级低
ftp IN CNAME www #CNAME使用别名,ftp 是www的别名
* IN A 192.168.23.100 #泛域名解析,“*"代表任意主机名
#“@”这里是一个变量,当前DNS区域名
#SOA记录中的更新序列号用于同步主、从服务器的区域数据,当从服务器判断区域更新时,若发现主服务器中的序列号与本地区域数据中的序列号相同,则不会进行下载。
# "benet.com. "此为完全合格域名(FQDN) ,后面有个“."不能漏掉
#“admin.benet.com.”表示管理员邮箱,这里的“@”符号已有其他含义,所以用“.”代替
#IN 表示internet
- 修改区域配置文件,添加正向区域配置
vim /etc/named.rfc1912.zones #文件里有模版,可复制粘贴后修改
zone "one.com" IN {●正向解析"one.com"区域
type master;#类型为主区域
file "one.com.zone."; ●指定区域数据文件为one.com.zone
allow-update { none; } ;
};
- 启动服务,关闭防火墙
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#检查启动文件格式
named-checkzone one.com /var/named/one.com.zone
- 在客户端的域名解析配置文件中添加DNS服务器地址
- 测试DNS解析
测试配置生效,DNS域名解析服务器已搭建成功