Linux----------DNS服务器
一、DNS概念
1.1 DNS相关概念
DNS 是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写,域名服务器是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。 域名是Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。域名是由一串用点分隔的名字组成的,通常包含组织名,而且始终包括两到三个字母的后缀,以指明组织的类型或该域所在的国家或地。
示例:
客户端-->DNS服务器
访问一个域名时,先指向DNS服务器寻找,寻找到域名对应的IP
DNS服务器-->客户端
DNS服务器将寻找到的域名对应的IP发给客户端,没有找到则不可达
客户端-->服务器端
客户端通过DNS服务器给的IP进行访问到正确的服务器
1.2 DNS域名
- 域名(Domain Name),是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置,地理上的域名,指代有行政自主权的一个地方区域)。
2.FQDN全称为Fully Qualified Domain Name,即完全合格域名。FQDN由两个部分组成:主机名和域名。因为DNS是逐级管理的,所以在不同的层级中主机名与域名也是不同的;以www.google.com为例,在第二层中,.com就是域名,google就是主机名,而到了第三层中,.google.com就成了域名,www就成了主机名。
注意:主机名与域名并不是依据"."来划分的,主机名中也可以包含"."号的,主要还是要根据域名的注册情况来划分。
3、正向解析
从FQDN转换为IP地址称为正向解析。
4、反向解析
从IP地址转换为FQDN称为反向解析。
5、区域
正向解析或反向解析中,每个域的记录就是一个区域。
1.3 DNS域名结构
根域
一级域名:Top Level Domain: tld
com, edu, mil, gov, net, org, int,arpa
一级域名又分为三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域
二级域名
三级域名
最多127级域名
1.4 DNS的解析库
DNS的主要作用是进行主机名的解析。解析:根据用户提供一种名称,去查询解析库,以得到另一种名称。 正向解析与反向解析使用不同的解析库。
区域解析库:由众多RR组成:
资源记录:Resource Record, RR
记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX
- SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录
- A:internet Address,作用,FQDN --> IP
- AAAA: FQDN --> IPv6
- PTR: PoinTeR,IP --> FQDN
- NS: Name Server,专用于标明当前区域的DNS服务器
- CNAME:Canonical Name,别名记录
- MX: Mail eXchanger,邮件交换器
1.5 DNS查询方式
DNS查询类型:
递归查询
迭代查询
一次完整的查询请求经过的流程:
Client -->hosts文件 -->DNS Service Local Cache--> DNS Server (recursion) --> Server Cache -->iteration(迭代) -->根--> 顶级域名DNS-->二级域名DNS…
解析答案:
肯定答案:
否定答案:请求的条目不存在等原因导致无法返回结果
权威答案:
非权威答案:
二、DNS服务
DNS:Domain Name Service 应用层协议C/S,监听在53/udp, 53/tcp
本地名称解析配置文件:hosts
/etc/hosts
%WINDIR%/system32/drivers/etc/hosts
122.10.117.2 www.magedu.com
93.46.8.89 www.google.com
2.1 DNS服务器类型
DNS服务器的类型:
主DNS服务器
从DNS服务器
缓存DNS服务器(转发器)
主DNS服务器:管理和维护所负责解析的域内解析库的服务器
从DNS服务器:从主服务器或从服务器“复制”(区域传输)解析库副本
序列号:解析库版本号,主服务器解析库变化时,其序列递增
刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
过期时长:从服务器联系不到主服务器时,多久后停止服务
“通知”机制:主服务器解析库发生变化时,会主动通知从服务器
2.2 解析库的配置
2.21 资源记录定义的格式:
语法:name [TTL] IN rr_type value
注意:
(1) TTL可从全局继承
(2) @可用于引用当前区域的名字
(3) 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应
(4) 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的字可以找到同一个主机
2.22 SOA记录
name: 当前区域的名字,例如“magedu.com.”
value: 有多部分组成
- 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;
(2) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换,例如linux.wangchao.com
(3) 主从服务区域传输相关定义以及否定的答案的统一的TTL
例如:
wangchao.com. 86400 IN SOA ns.wangchao.com.nsadmin.wangchao.com. (
2015042201 ;序列号
2H ;刷新时间
10M ;重试时间
1W ;过期时间
1D ;否定答案的TTL值
)
2.23 NS记录
name: 当前区域的名字
value: 当前区域的某DNS服务器的名字,例如ns.magedu.com.
注意:一个区域可以有多个NS记录
例如:
wangchao.com. IN NS ns1.wangchao.com.
wangchao.com. IN NS ns2.wangchao.com.
注意:
(1) 相邻的两个资源记录的name相同时,后续的可省略
(2) 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录
2.24 MX记录
name: 当前区域的名字
value: 当前区域的某邮件服务器(smtp服务器)的主机名
一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高
例如:
wangchao.com. IN MX 10 mx1.wangchao.com. IN MX 20 mx2.wangchao.com.
注意:
(1) 对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
2.25 A记录
name: 某主机的FQDN,例如www.wangchao.com.
value: 主机名对应主机的IP地址
例如:
www.wangchao.com. IN A 1.1.1.1
www.wangchao.com. IN A 2.2.2.2
mx1.wangchao.com. IN A 3.3.3.3
mx2.wangchao.com. IN A 4.4.4.4
$GENERATE 1-254 HOST$ A 1.2.3.$
*.wangchao.com. IN A 5.5.5.5
wangchao.com. IN A 6.6.6.6
避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址
2.26 其他记录
AAAA:
name: FQDN
value: IPv6
PTR:
name: IP,有特定格式,把IP地址反过来写,1.2.3.4,要写作
4.3.2.1;而有特定后缀:in-addr.arpa.,所以完整写法为:
4.3.2.1.in-addr.arpa.
value: FQDN
例如:
4.3.2.1.in-addr.arpa. IN PTR www.wangchao.com.
如1.2.3为网络地址,可简写成:
4 IN PTR www.wangchao.com.
注意:网络地址及后缀可省略;主机地址依然需要反着写
2.27 别名记录
CNAME:
name: 别名的FQDN
value: 真正名字的FQDN
例如:
www.wangchao.com. IN CNAME websrv.wangchao.com.
三、dns服务程序包
BIND的安装配置:
dns服务程序包:bind,unbound
程序名:named,unbound
程序包:yum list all bind*
bind:服务器
bind-libs:相关库
bind-utils:客户端
bind-chroot: /var/named/chroot/
3.1 bind组成
服务脚本和名称:/etc/rc.d/init.d/named
/usr/lib/systemd/system/named.service
主配置文件:/etc/named.conf, /etc/named.rfc1912.zones,
/etc/rndc.key
解析库文件:/var/named/ ZONE_NAME.ZONE
注意:
(1) 一台物理服务器可同时为多个区域提供解析
(2) 必须要有根区域文件;named.ca
(3) 应该有两个(如果包括ipv6的,应该更多)实现localhost
和本地回环地址的解析库
rndc: remote name domain controller,
默认与bind安装在同一主机,且只能通过127.0.0.1连接
named进程
提供辅助性的管理功能;953/tcp
3.2 bind配置文件
主配置文件:
全局配置:options {};
日志子系统配置:logging {};
区域定义:本机能够为哪些zone进行解析,就要定义哪些
zone
zone "ZONE_NAME" IN {};
注意:任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的IP地址上
缓存名称服务器的配置:
监听外部地址即可
dnssec: 建议关闭dnssec,设为no
3.3 配置主从DNS服务器
主DNS名称服务器:
(1) 在主配置文件中定义区域
zone "ZONE_NAME" IN {
type {master|slave|hint|forward};
file "ZONE_NAME.zone";
};
(2) 定义区域解析库文件
出现的内容
宏定义
资源记录
主配置文件语法检查:
named-checkconf
解析库文件语法检查:
named-checkzone "magedu.com" /var/named/magedu.com.zone
rndc status|reload ;service named reload
3.31 主区域示例
$TTL 86400
$ORIGIN wangchao.com.
@ IN SOA ns1.wangchao.com. admin.wangchao.com (
2015042201
1H
5M
7D
1D )
IN NS ns1
IN NS ns2
IN MX 10 mx1
IN MX 20 mx2
ns1 IN A 172.16.100.11
ns2 IN A 172.16.100.12
mx1 IN A 172.16.100.13
mx2 IN A 172.16.100.14
websrv IN A 172.16.100.11
websrv IN A 172.16.100.12
www IN CNAME websrv
3.32 从服务器
1、应该为一台独立的名称服务器
2、主服务器的区域解析库文件中必须有一条NS记录指向从服务器
3、从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中
4、主服务器得允许从服务器作区域传送
5、主从服务器时间应该同步,可通过ntp进行;
6、bind程序的版本应该保持一致;否则,应该从高,主低
定义从区域的方法:
zone "ZONE_NAME" IN {
type slave;
masters { MASTER_IP; };
file "slaves/ZONE_NAME.zone";
};