admin管理员组文章数量:1577820
bind---dns服务器
- 安装Bind服务程序
- 配置bind
- 添加防火墙转发策略,允许防火墙伪装IP(SNAT)---`非必需执行`
- 编辑bind主配置文件
- 编辑区域配置文件
- 新建正向解析文件
- 新建反向解析文件
- 编辑正向解析文件
- 开启域外转发
- 修改DNS主配置文件中的转发策略
- 测试配置文件是否正确
- 重启dns服务
- 关于DNS forward三个ip地址的查询顺序及CNAME对forward的影响
- 测试域名转发
- 测试如果其中一个或者两个IP地址不通的情况
- `BIND`的查询机制
- DNS理论基础
- 域名分层结构
- DNS分层结构
- DNS解析过程
- A记录
- CNAME
- DNS工作模式
- 正向解析模式
- 反向解析模式
- 主服务--根服务器
- 主服务-CDN,分离解析技术
- 从服务器
- 缓存服务器
- 向DNS服务器发起域名查询请求的流程
- TSIG加密
安装Bind服务程序
OS声明: Centos7
# 安装bind服务程序
yum install bind bind-chroot bind-utils
# 启动named-chroot并开机自启动
systemctl enable --now named
systemctl enable --now named-chroot
配置bind
主配置文件(/etc/named.conf):只有59行,而且在去除注释信息和空行之后,实际有效的参数仅有30行左右,这些参数用来定义bind服务程序的运行。
区域配置文件(/etc/named.rfc1912.zones):用来保存域名和IP地址对应关系的所在位置。类似于图书的目录,对应着每个域和相应IP地址所在的具体位置,当需要查看或修改时,可根据这个位置找到相关文件。
数据配置文件目录(/var/named):该目录用来保存域名和IP地址真实对应关系的数据配置文件。
添加防火墙转发策略,允许防火墙伪装IP(SNAT)—非必需执行
# 对收到的udp协议53端口(dns)发给外网网卡进行伪装
## eno33554968为外网网卡
iptables -t nat -A POSTROUTING -p udp --dport 53 -o eno33554968 -j MASQUERADE
# 保存防火墙策略
service iptables save
编辑bind主配置文件
# 编辑bind主配置文件
vim /etc/named.conf
# 修改监听地址---第11行
## 将127.0.0.1 修i该为any,意思是本机的所有IP地址都提供DNS服务
options {
listen-on port 53 { any; };
# 修改允许查询---第19行
## 将 allow-query { locallhost; };中的locallhost修改为any,意思是所有来源IP都可以查询dns
allow-query { any; };
编辑区域配置文件
bind服务程序的区域配置文件(/etc/named.rfc1912.zones)用来保存域名和IP地址对应关系的所在位置。在这个文件中,定义了域名与IP地址解析规则保存的文件位置以及服务类型等内容,而没有包含具体的域名、IP地址对应关系等信息。服务类型有三种,分别为hint(根区域)、master(主区域)、slave(辅助区域),其中常用的master和slave指的就是主服务器和从服务器。将域名解析为IP地址的正向解析参数和将IP地址解析为域名的反向解析参数分别如图13-3和图13-4所示。
# 编辑区域配置文件
vim /etc/named.rfc1912.zones
配置信息详情
区域配置文件中,默认值提供了一些模板,没有数据,可以清空,便于编辑;
每一行配置文件都要以;(分号)结束
注意反向解析ip是从最后一位开始读的。
# 这一段是正向解析
## zone 意思是区域,每个域名都是一个区域
## IN 表示这个域名的说明信息
zone "testbaidu" IN {
type master; ## type master 指这是一个主服务器
file "testbaidu.zone"; ## file 指这个域名的文件的配置文件的保存路径
## allow-update 指允许哪台从服务器对数据进行同步,none;表示不允许从服务器同步
allow-update {none;};
};
# 下面这段是反向解析
## zone 意思是区域,每个域名都是一个区域
## IN 表示这个域名的说明信息
zone "10.168.192.in-addr.arpa" IN {
type master; ## type master 指这是一个主服务器
file "192.168.10.arpa"; ## file 指这个域名的文件的配置文件的保存路径
## allow-update 指允许哪台从服务器对数据进行同步,none;表示不允许从服务器同步
allow-update {none;};
};
新建正向解析文件
cp -a 是复制文件原有属性
# 进入/var/named目录
cd /var/named
# 复制named.localhost为testbaidu.zone
## named.localhost为正向解析模板文件
cp -a named.localhost testbaidu.zone
新建反向解析文件
# 进入/var/named目录
cd /var/named
# 复制named.loopback为192.168.10.arpa
## named.loopback为反向解析模板文件
cp -a named.loopback 192.168.10.arpa
编辑正向解析文件
vim testbaidu.zone
## 修改参数
$TTL 1D #生存周期为1天
## 每个域名后面都有一个根域,根域就是个点,所有要写上testbaidu.
## 根域后面跟的是邮箱admin@testbaidu,此处的@必须用点(.)替换。
@ IN SOA testbaidu. admin.testbaidu. (
#授权信息开始: #DNS区域的地址 #域名管理员的邮箱(不要用@符号)
0;serial #更新序列号
1D;refresh #更新时间
1H;retry #重试延时
1W;expire #失效时间
3H );minimum #无效解析记录的缓存时间
NS ns.testbaidu. #域名服务器记录,nameserver(域名服务器)的意思
ns IN A 192.168.10.10 #地址记录(ns.linuxprobe.)
www IN A 192.168.10.10 #地址记录(www.linuxprobe.)
开启域外转发
参考: BIND使用小结(Forward转发)
域名转发配置
修改服务器的IPV4转发功能
# 开启服务器的ipv4转发功能
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
# 使ipv4转发生效
sysctl -p
修改DNS主配置文件中的转发策略
DNSSec配置
编辑bind主配置文件
vim /etc/named.conf
# 修改允许查询---第19行
## 将 allow-query { locallhost; };中的locallhost修改为any
allow-query { any; }; # any意思是所有来源IP都可以查询dns
# 在allow-query允许查询下行配置域外转发
# 即访问非xxx域名时将解析转发到这几个DNS地址上进行解析。
forwarders {
114.114.114.114;
223.5.5.5;
};
# 递归查询
recursion yes;
# 1) forward first 优先使用forwardersDNS服务器做域名解析,如果查询不到就往根域上找.
# 2)forward only设置只使用forwarders DNS服务器做域名解析,如果查询不到则返回DNS客户端查询失败(不会往根域上找)。
forward first; # 优先使用forwardersDNS服务器做域名解析
# DNS安全扩展 设为no
## 参数有yes|no
dnssec-enable no;
# DNS安全扩展验证 设为no
## 参数有yes|no
dnssec-validation no;
测试配置文件是否正确
# 测试配置文件是否正确
named-checkconf
重启dns服务
# 重启dns服务
systemctl restart named-chroot
关于DNS forward三个ip地址的查询顺序及CNAME对forward的影响
关于DNS forward三个ip地址的查询顺序及过程说明:
每次域名请求会轮循环三个ip地址,逻辑是:
取三个ip地址,随机使用一个开始请求,如果失败则随机取剩下的两个中的一个,如果再失败就取最剩下的那个,如果也失败了,则根据forward的规则判断下一步怎么做,如果forward的规则是forward的only
模式,那么就直接返回给用户解析失败结果;如果是forward的first模式,则递归去查询请求,然后返回给用户结果。
测试域名转发
参考: https://wwwblogs/xiangsikai/p/8438544.html
参考: DNS转发测试方法:禁用三个IP地址其中的一个进行测试
测试如果其中一个或者两个IP地址不通的情况
测试结果
:在结果中只能抓到请求两个好的IP地址的结果,禁用的那个未抓到任何结果
结论
:如果三个IP地址中用不通的IP地址,DNS服务器压根不会尝试这个不通的IP地址(推测可能是内部有探测机制)
一个域名做了CNAME
,将不能同时再做A纪录
, 如果同时在bind
中配置CNAME
和A纪录
后加载时会报错。在某些低版本设备上即使能强制并存, A纪录
也不会生效,仍以CNAME
生效.
BIND
的查询机制
BIND
的查询机制是:
当一个域名的NS记录
在DNS服务器上的缓存里存在时,如果这个域名的权威DNS
为其做了CNAME
,则该域名将不会以原始域名进行请求解析,而是以CNAME
做为解析请求(如果做了forward
,将以CNAME
进行forward
),然后把CNAME
得到A纪录
做为该域名的解析结果.
说白一点,就是拿着 cname
的域名进行forward
请求,而不是拿着原始域名
进行forward
请求了
DNS理论基础
域名分层结构
主机名
.次级域名
.域名
.根域名
host
.sld
.tld
.root
主机名 | 次级域名 | 域名 | 根域名 |
---|---|---|---|
host. | sld. | tld. | root |
DNS分层结构
分类 | 作用 |
---|---|
根DNS服务器 | 英文:Root nameserver。本地域名服务器在本地查询不到解析结果时,则第一步会向它进行查 询,并获取顶级域名服务器的IP地址。 |
顶级域名服务器 | 英文:Tld nameserver。负责管理在该顶级域名服务器下注册的二级域名,例如 “www.example”,则是顶级域名服务器,在向它查询时,可以返回二级域名 “example”所在的权威域名服务器地址 |
权威域名服务器 | 英文:authoritative nameserver。在特定区域内具有唯一性,负责维护该区域内的域名与IP地址 之间的对应关系,例如云解析DNS。 |
本地域名服务器 | 英文:DNS resolver或Local DNS。本地域名服务器是响应来自客户端的递归请求,并最终跟踪直 到获取到解析结果的DNS服务器。例如用户本机自动分配的DNS、运营商ISP分配的DNS、谷歌 /114公共DNS等 |
DNS解析过程
- 从
LocalDNS
获取根DNS服务器
- 从
根DNS服务器
获取顶级域名服务器
- 从
顶级域名服务器
获取权威域名服务器
- 从
权威域名服务器
获取域名解析结果
# 递归解析过程
dig www.aliyun @223.5.5.5 +trace
A记录
将域名解析到一个IP地址上
CNAME
将域名解析到一个别名上
DNS工作模式
正向解析模式
将域名解析为IP地址
正常情况下,我们的99.99%都是正向解析
反向解析模式
将IP地址解析为域名
主服务–根服务器
管理域名和ip地址的对应关系,在特定区域内具有唯一性,负责维护该区域内的域名与IP地址之间的对应关系。
全球
有13
台IPV4根服务器
主服务-CDN,分离解析技术
从服务器
同步主服务器的数据,从主服务器中获得域名与IP地址的对应关系并进行维护,以防主服务器宕机等情况。
缓存服务器
通过向其他域名解析服务器查询获得域名与IP地址的对应关系,并将经常查询的域名信息保存到服务器本地,以此来提高重复查询时的效率。
向DNS服务器发起域名查询请求的流程
当用户向网络指定的DNS服务器发起一个域名请求时,通常情况下会有本地由此DNS服务器向上级的DNS服务器发送迭代查询请求;如果该DNS服务器没有要查询的信息,则会进一步向上级DNS服务器发送迭代查询请求,直到获得准确的查询结果为止。其中最高级、最权威的根DNS(主)服务器总共有13台,分布在世界各地.
TSIG加密
版权声明:本文标题:bind---dns服务器 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1726531340a1074173.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论