文章目录
前言
我们访问网站的时候一般都是会通过一个网址去访问其指定对应的网页,一般都不会通过IP地址去访问网站,因为同一个服务的不同区域的IP定位会有不同的划分,所以我们可以将多个不同的IP地址映射成同一个域名来进行访问,一方面避免了我们IP地址的不确定性,另一方面也简化了我们的网站访问
一、BIND域名服务基础
1、DNS概念
DNS是域名系统(Domain Name System)缩写DNS。Domain Name被译为域名,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一-个分布式数据库,能够使人更为方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
DNS使用的协议及端口号
DNS的默认端口为53, DNS端口分为TCP和UDP
- TCP是用来做区域传送,多用于主从同步
- UDP是用来DNS解析的
常用域名后缀
顶级域名
com:Commercial organizations,商业组织,公司
xyz:创意、创新;三维空间与无限可能
net:Network operations and service centers,网络服务商
top:顶级、高端、适用于任何商业 公司 个人
tech:科技、技术
org:Other organizations,非盈利组织
gov:Governmental entities,政府部门
edu:Educational institutions,教研机构
ink:internet king 互联网之王,同时英文单词是墨水的意思
int:International organizations,国际组织
mil:Military (U.S),美国军部
pub: public大众、公共、知名。
cn::中国国家顶级域名
二级DNS服务器:专负责二级域名的解析
.net.cn
.edu. cn
.com. cn
三级域名(子域名DNS服务器):专门负责子域名的解析也称为
·ina.com.cn
.pku.edu.cn
主机站点
tts9
tts6
mail
WWW
......
域名的层级划分
2、DNS系统的作用及类型
- 正向解析:根据域名地址查找对应的IP地址
- 反向解析:根据IP地址查找对应的域名
- DNS系统的分布式数据结构
3、正向解析查询过程
- 首先查询本机缓存记录
- 再查询hosts文件
- 查询DNS域名服务器,交给DNS域名服务器处理
上述是递归查询:给本地DNS服务器发送一个请求,等待返回结果
- 这个DNS服务器可能是本地域名服务器,也有缓存记录,有则直接返回结果,没有继续下一步
- 求助根域服务器,返回可能会知道结果的顶级域服务器让它去找顶级域服务器
- 求助顶级域服务器,返回可能知道结果的二级域服务器让它去找二级域服务器
- 求助二级域服务器,查询发现是我的主机,把查询到的IP地址返回给本地域名服务器
- 本地DNS服务器把结果记录并缓存,然后把域名和IP的对应关系返回给客户端
以上是迭代查询:是用来返回最佳查询点或者主机的IP地址
查询方式
递归查询
递归查询是一种 DNS 服务器的查询模式,在该模式下 DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机,如果 DNS 服务器本地没有存储查询 DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。
就是客户机发送请求后自己只用等待结果即可,中间具体过程交给服务器实现。
迭代查询
DNS 服务器另外一种查询方式为迭代查询,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台 DNS 服务器地址,客户机再向这台 DNS 服务器提交请求,依次循环直到返回查询的结果为止。
客户机的请求需要自己挨个去查询才能得到结果,服务器没有结果时候只会给你提供其它服务器的地址,而不会帮你去请求查询,这与递归截然相反。
二、DNS系统类型
1、构建缓存域名服务器
缓存域名服务器
- 也称为DNS高速缓存服务器
- 通过想起他域名服务器查询获得域名->IP地址记录
- 将域名查询结果缓存到本地,提高重复查询时的速度
2、构建主从域名服务器
2.1主域名服务器
- 特定DNS区域的权威服务器,具有唯一-性
- 负责维护该区域内所有域名->IP地址的映射记录
- 需要自行建立所负责区域的地址数据文件
2.2从域名服务器
- 也称为辅助域名服务器,是对主域名服务器的热备份
- 其维护的域名->IP地址记录来源于主域名服务器
- 需要从主域名服务器自动同步区域地址数据库
三、BIND的安装和配置文件
1、主配置文件named.conf 2-1
全局配置部分
- 设置DNS服务器的全局参数
- 包括监听地址和端口、区域数据文件存放的目录等
- 使用options { … };的配置段
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
3、BIND服务
BIND服务器端程序
主要执行程序: /usr/sbin/named
默认监听端口: 53
主配置文件:/etc/named.conf
保存DNS解析记录的数据文件位于:/var/named/
BIND服务控制
systemctl [ status | start l stop | restart ] named.service
四、正向解析
vim /var/ceshi.com.zone
$TTL 1D #生命周期
@ IN SOA ceshi.com. admin.ceshi.com. ( #指定域名
0 ; serial #更新序列号
1D ; refresh #刷新时间
1H ; retry #重试延时
1W ; expire #失效时间
3H ) ; minimum #无效解析记录的生存周期
NS ceshi.com. #记录当前区域的DNS服务器名称
A 10.130.130.252 #记录主机的IP地址
IN MX 10 mail.ceshi.com. #邮件交换记录,数字越大越优先
www IN A 10.130.130.252 #正向解析www.ceshi.com
mail IN A 10.130.130.3 #正向解析mail.ceshi.com
ftp IN CNAME www #正向解析ftp.ceshi.com
* IN A 10.130.130.2 ##泛域名解析,其中 * 代表任意主机名
####需要关闭防火墙和增强机制,否则可能会出现无法进行访问的错误
systemctl stop firewalld #关闭防火墙
setenforce 0 #临时关闭SELinux增强机制
查看我的网络配置
修改我的本机DNS域名
修改好了以后开始测试并访问我的本地域名
五、反向解析
前面的配置文件不变,将后面的解析文件改成反向解析文件
zone "130.130.10.in-addr.arpa" IN { #设置我的本地域名网段10.130.130.0(其中0可以省略不写)
type master;
file "fanxiang.ceshi.com.zone."; #写入我的配置文件
allow-update { none; };
};
$TTL 1D
@ IN SOA ceshi.com. admin.ceshi.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ceshi.com.
A 10.130.130.252
100 IN PTR www.ceshi.com ##PTR:反向指针解析
200 IN PTR mail.ceshi.com
通过host指令可以进行验证
六、DNS主从服务器
1、主服务器
注意:前面DNS主服务器的配置与正向解析(反向解析)步骤一致
通过vim /etc/named.conf
进入主服务器的主配置文件
这里将53的端口和允许访问的端口可以都设成any——不限制访问主机的IP地址
通过vim /etc.named.rfc.1912.zone
进入主服务器的区域配置文件
##正向解析配置
zone "ceshi.com" IN {
type master;
file "ceshi.com.zone";
allow-update {192.168.223.17; };
};
##反向解析配置
zone "223.168.192.in-addr.arpa" IN {
type master;
file "ceshi.com.zone.local";
allow-transfer { 192.168.223.17; };
};
2、从服务器
配置完主服务器后,通过同样的步骤来进行从服务器的配置,配置完毕后
指定从服务器
查询域名服务的配置文件中的主从服务器的IP地址
所有步骤配置好之后关闭主服务器的运作
再去查看该渝能你能否正常运行,以及该域名运行时所用的DNS是谁的
总结
- DNS的正向解析与反向解析
- DNS的工作原理:包含递归、迭代、查询原理
- 主从原理
- 缓存原理
- 分离解析
- 服务配置文件
bind的主配置文件:/etc/named.conf
bind的区域配置文件:/etc/named.rfc1912.zone
bind的区域服务的数据配置文件:/var/named/named.localhost