DNS与BIND
一次完整的查询请求经过的流程
- client启动dns
- hosts文件
- DNS本地缓存
- DNS服务器(递归查询
- 自己负责解析的域:直接查询数据库并返回答案
- 不是自己负责的域:服务器缓存迭代查找
解析答案(都进行缓存)
- 肯定答案
- 否定答案
- 权威答案:由直接负责的DNS服务器返回的答案
- 非权威答案:不是由直接负责的DNS服务器返回的,而是从缓存中返回的
DNS主-辅服务器
- 主DNS服务器:维护所负责解析的域中的数据库服务器;读写操作
- 从DNS服务器:从主DNS服务器或其他的从DNS服务器那里复制一份数据库;只能进行读操作
- 负责操作的方式
- 序列号serial:即数据库的版本号;主DNS服务器数据库内容发生变化时其版本号进行递增
- 刷新时间间隔refresh:从DNS服务器间隔多久到主DNS服务器检查序列号更新状况
- 重试时间间隔retry:若从DNS服务器无法连接到主DNS服务器时,再次发起请求连接的时间间隔要小于refresh
- 过期时长expire:从DNS服务器始终联系不到主DNS服务器,多久之后放弃与主DNS服务器同步数据,并停止服务
- 否定答案的缓存时长
- 主DNS服务器通知从DNS服务器随时更新数据
- 区域传送
- 全量传送:传送整个数据库
- 增量传送:进传送变量的数据
- 负责操作的方式
区域zone和域domain
- tff.com域
- FQDN->IP
- 正向解析库:区域
- IP->FQDN
- 反向解析库:区域
- FQDN->IP
DNS可能遭到的安全攻击
- DNS劫持
- 缓存毒化
区域数据库文件
-
资源记录:Resource Record,简称RR
-
记录类型:A、AAAA、PTR、SOA、NS、CNAME、MX
- SOA:start of authority,起始授权记录;一个区域解析库有且只能有一个SOA记录,且必须放在第一条
- NS:name service,域名服务记录;一个区域解析库可以有多个NS记录;其中一个为主的
- A:address,地址记录,FQDN->IPv4
- AAAA:地址记录,FQDN->IPv6
- CNAME:canonical name,别名记录
- PTR:pointer,指针;IP->FQDN实现反向解析
- MX:mail exchanger,邮件交换器
- 优先级:0-99,数字越小优先级越高
-
资源记录的定义格式
-
语法:name [TTL] IN RR_TYPE value
-
SOA:
-
name:当前区域名字;例如“tff.com.”,或者"2.3.4.In-addr.arpa."
-
value:由多部分组成
- 当前区域的区域名称(也可以使用主DNS服务器名称)
- 当前区域管理员的邮箱地址,但是@符号要用.取代
- 主从服务协调属性的定义以及否定答案的TTL
-
例:
-
tff.com. 86400 IN SOA tff.com.{
20220501 ;serial
2H ;refresh
10M ;retry
1W ;expire
1D ;negative answer ttl
};
-
-
-
NS:
- name:当前区域的区域名称
- value:当前区域的某DNS服务器的名字,如ns.tff.com.;一个区域可以哟多个NS记录
- 例如:
- tff.com. 86400 IN NS ns1.tff.com.
- tff.com. 86400 IN NS ns2.tff.com.
-
MX:
- name:当前区域的区域名称
- value:当前区域某邮件交换器的主机名;MX记录可以有多个,但每个记录的value之前有一个数字表示优先级
- 例如:
- tff.com. IN MX 10 mx1.tff.com.
- tff.com. IN MX 20 mx2.tff.com.
-
A:
- name:FQDN,如www.tff.com.
- value:IPv4地址
- 例如:
- www.tff.com. IN A 1.1.1.1
- www.tff.com. IN A 1.1.1.2
- bbs.tff.com. IN A 1.1.1.1
-
AAAA:
- name:FQDN,如www.tff.com.
- value:IPv6地址
-
PTR:
- name:IP地址,有特定格式,IP反过来写,而且加特定后缀;例如1.2.3.4的记录写成4.3.2.1.In-addr.arpa.
- value:FQDN
- 例如:
- 4.3…2.1.In-addr.arpa. IN PTR www.tff.com.
-
CNAME:
- name:FQDN格式的别名
- value:FQDN格式的正式名字
- 例如:
- web.tff.com. IN CNAME www.tff.com.
-
-
注意📢
- TTL可以从全局继承
- @表示当前区域的名称
- 相邻的两条记录的name相同时,后面的可省略
- 对于正向区域而言,MX、NS等类型的记录的value为一个FQDN,此FQDN应有一个A记录
P.S.:一个域名可以有多个IP以实现负载均衡
一个IP可以有多个域名,可以通过不同端口来访问不同服务
BIND的安装配置
BIND:Berkeley Name Domain
- dns:协议
- bind:dns协议的一种实现
- named:bind程序运行的进程名
程序包
yum info bind
-
bind-libs:被bind和bind-utils包中的程序共同用到的库文件
-
bind-utils:bind客户端程序集,如dig、host、nslookup
-
bind:提供dns server程序、以及几个常用的测试程序[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
-
bind-chroot:选装,让named运行在jail模式下
bind
-
主配置文件:/etc/named.conf
- /etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
- /etc/named.iscdlv.key
-
解析库文件:/var/named目录下
- 一般名字为:ZONE_NAME.zone
- 注意📢
-
一台DNS服务器可以同时为多个区域提供解析
-
必须要有根区域解析库文件,告诉根节点服务器地址:named.ca
-
还应该有两个区域解析库文件:localhost和127.0.0.1正反向解析
- 正向:named.localhost
- 反向:named.loopback
-
-
rndc:remote name domain controller
- 端口:953/tcp,但默认监听127.0.0.1,仅允许本地使用
-
bind程序安装完成之后,默认既可做缓存名称服务器使用;如果没有专门负责解析的区域,即可直接启动服务
- centos6:service named start
- centos7:systemctl start named.service
-
主配置文件格式
-
全局配置段options{}
-
日志配置段logging{}
-
区域配置段zone{}:由本机负责解析的区域,或转发的区域
-
缓存名称服务器的配置:
-
监听能与外部主机通信的地址
-
学习时建议关闭dnssec
-
检测配置文件的语法错误:named-checkconf
-
测试工具:
-
dig:
dig [-t RR_TYPE] name [@SERVER] [query options]
- 用于测试dns系统,不会查询hosts文件
- 查询选项
- +[no]trace:跟踪解析过程
- +[no]recurse:进行递归解析
- 注意:反向解析IP:
dig -x IP
- 模拟完全区域传送:
dig -t axfr domain [@SERVER]
-
host:
host [-t RR_TYPE] name SERVER_IP
-
nslookup:nslookup [-options] [name] [server]
- 交互模式:nslookup>
- server ip:以指定的IP为DNS服务器进行查询
- set q=RR_TYPE:要查询的资源记录类型
- name:要查询的名称
- 交互模式:nslookup>
-
rndc:named服务控制命令
rndc status
rndc stats
rndc flush
-
-
-
配置解析一个正向区域
以tff.com域为例:
vim named.rfc1912.zones
-
定义区域:在主配置文件中或主配置文件辅助配置文件中实现
zone “tff.com” IN {
type {master|slave|hint|forward};
file “tff.com.zone”;
};
-
建立区域数据文件(主要记录为A或AAAA):在/var/named目录下建立区域数据文件
cat tff.com.zone $TTL 1D @ IN SOA tff.com. root.tff.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS tff.com. A 192.168.1.17 AAAA ::1 MX 10 mail.tff.com. mail A 172.16.15.5 web A 172.16.15.6 ftp A 172.16.15.7
-
让服务器重载配置文件和区域数据文件
rndc reload
配置区域数据库文件:
vim /var/named/tff.com.zone
检查语法错误
尝试解析
-
-
配置解析一个反向区域
-
定义区域:在主配置文件中或主配置文件辅助配置文件中实现
zone “tff.com” IN {
type {master|slave|hint|forward};
file “tff.com.zone”;
};
注意:反向区域的名字
反写的网段地址 .In-addr.arpa 1.168.192.In-addr.arpa
-
建立区域数据文件(主要记录为PTR)
$TTL 1D $ORIGIN 1.168.192.in-addr.arpa. @ IN SOA tff.com. root.tff.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS tff.com. 5 PTR mail.tff.com. 6 PTR web.tff.com. 7 PTR ftp.tff.com.
-
让服务器重载配置文件和区域数据文件
named-checkconf named-checkzone 1.168.192.in-addr.arpa /var/named/192.168.1.zone rndc reload
-
-