DNS服务器与bind
Posted Atlas-777
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DNS服务器与bind相关的知识,希望对你有一定的参考价值。
为什么需要使用DNS
在一个网络中使用IP地址与服务器进行通讯不太方便,数量多了后不容易记忆,其次服务器的IP如果经常变更也会引起不必要的麻烦。因此引入了DNS域名解析的概念,使用DNS来维护一套IP与域名的对应关系表为用户提供查询。
DNS的结构
互联网因为用户众多,为了保障域名的唯一性并方便管理对域进行了分层分级,解析域从上到下分为:
- 根域:用
.
表示,经常省略。全球共13台,维护所有顶级域服务器的IP和域名的对应关系。 - 顶级域:分为两类即通用域
.com
等和国家域.cn
由ICANN委任的注册机构维护。 - 二级域名:向运行顶级域的机构申请,如阿里云。
- 三级域名或主机名:根据服务器业务不同提供对应主机名解析。
DNS的查询原理
DNS查询的结果会在本地DNS服务器中进行缓存,如果本地没有缓存请求的记录,则由本地DNS服务器开始进行递归查询。
以访问www.atlas.com为例,假设本地DNS服务器及本机没有缓存对应记录。
1、客户端向本地DNS请求www.atlas.com的解析记录。(使用递归查询方式,即不管本地DNS有或没有解析记录都要负责查询到一个准确结果,如果本地没有记录则要向其它服务器查询)
2、本地DNS开始进行迭代查询先请求根域名服务器得到.com顶级域服务器的IP。(迭代查询不直接回复结果,但是返回下一级该向谁查询)
3、本地DNS服务器再向.com顶级域服务器迭代查询atlas.com二级域服务器的地址。
4、二级域服务器告诉本地DNSwww.atlas.com的权威解析,本地DNS向客户端返回结果。
5、客户端以IP+端口的形式发起HTTP请求。
DNS记录类型
- A记录,将域名指向对应IP,也叫正向解析。
- PTR,将IP指向对应域名,也叫反向解析。
- CNAME,将域名指向另一个域名,由另一个域名提供解析地址,常用于WAF和CDN。
- NS记录,服务器无法提供权威解析时提供NS记录告诉客户端谁是权威服务器。
- MX记录,即邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器。例如,当Internet上的某用户要发一封信给 user@mydomain.com 时,该用户的邮件系统通过DNS查找mydomain.com这个域名的MX记录,如果MX记录存在, 用户计算机就将邮件发送到MX记录所指定的邮件服务器上。
- TXT记录,一般指某个主机名或域名的说明。
自建DNS的应用场景
1、内网IP地址多时提供一个内网解析方便使用。
2、同一应用集群成员IP变动频繁使用域名方便维护。
使用时可分为两类解析域,一类是主机域,仅在局域网内提供解析,供内部使用,一类是业务域,可以对外提供真实可用的业务服务。
bind配置文件解析
主配置文件/etc/named.conf
检查配置语法:named-checkconf
重新加载配置文件:rndc reload
options {
listen-on port 53 { 127.0.0.1; }; #配置监听端口及地址
listen-on-v6 port 53 { ::1; };
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"; #内存统计信息
recursing-file "/var/named/data/named.recursing"; #服务器dump正在执行的递归查询的文件路径
secroots-file "/var/named/data/named.secroots"; #服务器dump安全根到文件的路径
allow-query { localhost; }; #允许谁向本台dns发起请求
recursion yes; #开启递归查询
dnssec-enable yes;
dnssec-validation yes;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.root.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
#包含其它文件
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
区域zone文件
可以定义在主配置文件内,也可以单独放在一个文件后在主配置文件里使用include
包含
文件权限640属主root属组named.
zone "atlas.com" IN {
type master|slave; #自定义区域类型
file /path/to/zonefile; #区域数据库文件路径
allow-update {ip|none}; #允许哪个IP可以使用nsupdate动态更新区域文件
}
自定义区域数据库配置文件
- 严格注意语法格式
- 记录不许折行书写
- 单行记录开头不允许空格或tab开头
- 默认目录在
/var/named/
下
$TTL 600 #DNS失效时间,单位秒
#管理员邮箱,此处@符合用.表示区域名称可以使用@表示,@表示当前域
atlas.com. IN SOA ns.atlas.com. qq.atlas.com. (
2021041514 #序列号(serial number) 十进制,不能超过10位,通常使用日期时间戳,例如2018121601
10800 #刷新时间(refresh time) 即每隔多久到主服务器检查一次
900 #重试时间(retry time) 即刷新不成功多久后重试,应该小于refreshtime
604800 #过期时间(expire time) 当辅助DNS无法联系主DNS时,辅助DNS在多长时间内认为其缓存是有效的。
86400 #权威应答的ttl(netgative answer ttl)缓存DNS服务器可以缓存记录多长时间
)
#给客户端返回NS记录,atlas.com. 域名由哪几台权威服务器提供解析
atlas.com. IN NS ns1.atlas.com.
atlas.com. IN NS ns2.atlas.com.
#A记录,配置权威域名的真实IP地址;
ns1.atlas.com. IN A 10.0.0.91
ns2.atlas.com. IN A 10.0.0.92
#真正的域名解析
www.atlas.com. IN A 1.1.1.1
web.atlas.com. IN A 2.2.2.2
DNS主辅同步
通过DNS主辅同步来保障DNS服务器间的解析一致,一般两台服务器同时提供服务确保DNS服务的可用性。
同步过程:
- 主DNS向从DNS发送notify消息
- 从DNS向主DNS查询SOA记录
- 主DNS将SOA记录发给从DNS
- 从DNS检查序列号是否变更,没有则退出,有则向主DNS发起zone transfer请求(配置有变更必须要对主配置文件中的序列号进行递增以通知从DNS进行同步)
- 主DNS响应请求并发送结果
配置要点:
- 主DNS的named.conf里要配置
allow-transfer
和also-notify
选项 - 从DNS的named.conf中的option段内要配置
masterfile-format text
否则会同步data类型 - 从DNS添加区域配置文件,类型为slave,master参数指向master地址
- 从DNS不能主动修改DNS数据库文件
以上是关于DNS服务器与bind的主要内容,如果未能解决你的问题,请参考以下文章