共计 5889 个字符,预计需要花费 15 分钟才能阅读完成。
域名分级
根域: .
顶级域: .com .cn .org .net
域: baidu.com qq.com sina.com
主机: www.baidu.com mail.sina.com
DNS 解析过程
如在 qq.com 域下面有台 client, 其 dns-server 是 dns.qq.com, 则 client 访问 www.baidu.com(dns 为 ns.baidu.com)时, 先请求 dns.qq.com,dns.qq.com 查询缓存中有没有 www.baidu.com 条目的缓存, 如果有, 则直接返回 www.baidu.com 的 IP, 如果没有, 则请求如下:
1. 请求 ` 根 域`(`.`), 查询 `.com` 域 的管理 Server IP
2. 请求 `.com` 域, 查询`baidu.com` 域 的管理 Server IP, 也就是 `ns.baidu.com`
3. 请求 `ns.baidu.com`, 查询域中 `www` 主 机的 IP
此时,dns.qq.com
将查询得到的 www.baidu.com
的 IP 返回给 Client, 同时缓存, 在缓存还没失效之前有其他 Client 再次请求 www.baidu.com
时, 则直接从缓存中取, 不再查询。对于 client 来说是递归的(client->dns.qq.com),对于 dns-server 来说是迭代的(上述 123 过程),
DNS Server 只依据条目响应查询, 不负责是否存在
dns 的分类
1.权威 DNS:权威 DNS 是经过上一级授权对域名进行解析的服务器,同时它可以把解析授权转授给其他人
2.递归DNS:
负责接受用户对任意域名查询,并返回结果给用户。3.转发DNS:
负责接受用户查询,并返回结果给用户。
权威应答与非权威应答
如果 DNS 服务器在自己的区域文件里找到了客户端需要查询的记录, 否则就是非权威应答
TTL 值
TTL(Time- To-Live),简单的说它表示一条域名解析记录在 DNS 服务器上被缓存时间. 当各地的 DNS 服务器接受到解析请求时,就会向域名指定的 DNS 服务器发出解析请求从而获得解析记录;在获得这个记录之后,记录会在 DNS 服务器中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS 服务器将不再向 DNS 服务器发出请求,而是直接返回刚才获得的记录;而这个记录在 DNS 服务器上保留的时间,就是 TTL 值, 默认单位是秒(s)。
一. 增大 TTL 值,可以节约域名解析时间
二. 减小 TTL 值,可以减少更换 IP(A 记录) 后到生效的时间
资源记录 (Resource Record, RR) 格式
@表示继承
A 记录(正向)
将域名指向一个 IPv4 地址,FQDN–>IPv4
FQDN:Full Qualified Domain Name, 完全限定域名, 如 mail.sina.com
RRT:Resource Record Type,资源记录类型。
FQND TTL IN RRT IP
www.sina.com. 600 IN A 1.1.1.1
IPv6 的类型为 AAAA
PTR 记录(反向)
IP 反向查询域名,IP–>FQDN
IP TTL IN RRT FQDN
11.0.168.192.in-addr.arpa. 600 IN PTR mail.sina.com.
12.0.168.192.in-addr.arpa. 600 IN PTR ftp.sina.com.
NS 记录
域名解析服务器记录,ZONE-NAME->FQDN, 也叫授权记录
Zone-Name TTL IN NS FQND
163.com. 600 IN NS ns.163.com.
ns.163.com. 600 IN A 1.1.1.1
NS 和 A 记录成组出现, 构成一个完整的 NS 记录, 多个 NS 记录时依次被响应
MX 记录(mail exchager)
电子邮箱服务,将指向邮件服务器地址,ZONE-NAME->FQDN,MX 记录有优先级 (priority) 之分,0-99, 数字越大, 优先级越高
ZONE-NAME TTL IN RRT priority FQDN
163.com. 600 IN MX 11 mail1.163.com.
mail1.163.com. 600 IN A 1.1.1.1
MX 和 A 记录成组出现, 构成一个完整的 MX 记录
SOA(Start Of Authority)记录
区域传送记录, 描述区域传送规则(描述主从对象, 以及如何主从如何同步), 必须定义在数据文件的第一行
ZONE-NAME TTL IN SOA FQDN(主 DNS 地址) admin-mail-address (serial number; 版本号, 区域复制依据,每次主要区域修改完数据后,要手动增加它的值
refresh ; 刷新时间, 辅助 DNS 服务器请求与源服务器同步的等待时间。当刷新间隔到期时,辅助 DNS 服务器请求源服务器的 SOA 记录副本。然后,辅助 DNS 服务器将源服务器的 SOA 记录的序列号与其本地 SOA 记录的序列号比较,如果不同,则辅助 DNS 服务器从主要 DNS 服务器请求区域传输。retry ; 重试时间, 辅助 DNS 服务器在请求失败后,等待多长时间重试。通常这个应该短于刷新时间
expire ; 过期时间, 时间到期时,如辅助 DNS 服务器还无法与源服务器进行区域传输,则辅助 DNS 服务器会把它的本地数据当作不可靠数据
minimum ; 否定答案缓存时间
)
时间单位:M(分钟)、H(小时)、D(天)、W(周),默认单位是秒
邮箱格式:admin@sina.com - 写为 -> admin.sina.com
sina.com. 600 IN SOA ns1.sina.com. admin.sina.com. (2013040101
1H
5M
1W
1D )
CNAME(Canonical NAME)记录
将域名指向一个域名,FQDN->FQDN
FQDN TTL IN RRT FQDN
mail.163.com. 600 IN CNAME mail.qq.com.
泛域名解析
* 600 IN A IP # 除了明确标识, 其他都解析到该地址
域和区域(domain & zone)
domain 是逻辑概念, 如 sina.com,zone 是物理概念, 对应数据文件
正向域
sina.com. 600 IN SOA ns1.sina.com. admin.sina.com. (2013040101
1H
5M
1W
1D )
www 600 IN A 192.168.0.10
www2 600 IN A 192.168.0.11
sina.com. 600 IN MX 10 mail.sina.com.
mail.sina.com. 600 IN A 192.168.0.20
反向域
反向域的 name 为网段地址, 且反写
0.168.192.in-addr.arpa IN SOA ns1.sina.com. admin.sina.com (2013040101
1H
5M
1W
1D )
10.0.168.192.in-addr.arpa. 600 IN PTR www.sina.com.
11 IN PTR www2.sina.com.
区域类型
主区域:master
从区域:slave
提示区域:hint, 定义根在什么地方
转发区域:forward, 比如直接配置.com 域的地址, 而不从根查询
安装 Bind
yum install -y bind
/etc/named.conf # 主配置文件
/etc/rndc.key #rndc 的密钥文件
/etc/rndc.conf #rndc 配置文件
/var/named/ # 区域数据文件
/etc/rc.d/init.d/named # 服务脚本
{start|stop|restart|status|reload}
/var/named/named.ca 13个根节点配置文件
一些工具
随 bind 安装
/usr/sbin/named-checkconf # 检查配置文件
/usr/sbin/named-checkzone # 检查区域文件
/usr/sbin/rndc-confgen # 生成 rndc 配置
bind-utils 工具包
/usr/bin/dig
/usr/bin/host
/usr/bin/nslookup
设置开机启动
chkconfig named on
named.conf
options { # 全局选项, 对所有的 zone 生效
listen-on port 53 { 127.0.0.1; }; # 监听 IPv4 及端口。这里设置表示只侦听 127.0.0.1 这个地址。如不定义此选项或者 0.0.0.0 表示侦听所有网络
listen-on-v6 port 53 { ::1; }; ## 监听 IPv6 及端口
directory "/var/named"; # 数据文件目录
notify yes;# 启用通知功能,master 修改, 主动通知 slave
allow-query { 192.168.0.0/24; }; # 允许提交查询的客户端,如不定义此选项表示允许所有查询
query-source port 53; # 客户端在进行 DNS 查询时必须使用 53 做为源端口
recursion yes; # 是否开启递归查询
allow-recursion {192.168.0.0/24;192.168.0.1/24};# 允许提交递归查询的客户端,如不定义此选项表示允许所有
allow-transfer {192.168.0.254;};# 允许区域传输的 DNS 服务器(辅助 DNS),不写表示允许所有
forwarders {192.168.0.9;};# 转发到指定服务器解析
forward only|first;#only 表示如果在指定的转发器找不到,不会去向根查询,first 表示快速转发(默认)
dnssec-enable yes;# 是否支持 DNSSEC 开关, 默认为 yes
dnssec-validation yes; # 是否进行 DNSSEC 确认开关, 默认为 no
dnssec-lookaside auto; # 当设置 dnssec-lookaside, 它为验证器提供另外一个能在网络区域的顶层验证 DNSKEY 的方法
};
logging { # 日志
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN { # 根区域定义
type hint;# 区域类型
file "named.ca";# 区域数据文件路径, 相对与 directory
#masters {master1.ip;master2.ip} #如果是从区域, 指定 master 地址
};
zone "sina.com" IN { # 正向域
type master;
file "sina.com";
};
zone "0.168.192.in-addr.arpa" IN {# 反向域
type master;
file "0.168.192.zone";
};
zone 类型
Master
主 DNS 服务器:拥有区域数据文件,并对此区域提供数据管理
Slave
辅助区域:拥有主 DNS 服务器区域数据文件的副本,辅助 DNS 服务器从主 DNS 服务器同步所有区域数据
Stub
stub 区域和 slave 类似,但它只复制主 DNS 服务器上的 NS 记录,而不像辅助 DNS 服务器会复制所有区域数据
Forward
一个 forward zone 是每个域的配置转发的主要部分。一个 zone 语句中的type forward 可以包括一个 forward 和或 forwarders 子句,它会在区域名称给定的域中查询。如果没有 forwarders 语句或 forwarders 是空表,那么这个域就不会转发,消除了 options 语句中有关转发的配置
Hint
根域名服务器的初始化组指定使用的线索区域 hint zone,当服务器启动时,它使用根线索来查找根域名服务器,并找到最近的根域名服务器列表。如果没有指定 class IN 的线索区域,服务器使用编译时默认的根服务器线索。不是 IN 的类别没有内置的默认线索服务器
主从传送
1. 修改 named.conf 中 option 定义
notify yes
2. 修改 named.conf 中 zone 的定义:
zone "zone-name" IN { # 根区域定义
type slave;# 标明是从 dns
file "slaves/named.ca";# 区域数据文件路径, 相对与 directory, 由于 named 无对 /etc/named 目录的写权限, 所以放在 slaves 下
masters { master1.ip;master2.ip } # 指定 master 地址
};
3. 增加从服务器的 NS 记录以及 A 记录
4. 防火墙配置
打开 master tcp 53 端口
打开 slave tcp 53 端口
5. 开启从服务器
service named start
手动区域传输
dig -t axfr|ixfr 区域名称 @辅助 DNS 服务器
axfr:完全传输
ixfr:增量传输
子域授权
1. 在子域 zone 文件中添加授权 NS 记录
子域名称 IN NS 子域 dns-server-name
a.sina.com. IN NS ns1.a.sina.com.
2. 子域 DNS A 记录
子域 dns-server-name IN A IP
ns1.a.sina.com. IN A 0.0.0.0
3. 编辑子域 named.conf 添加 zone 记录
zone "a.sina.com" IN {
type master;
file "a.sina.com";
};
4. 增加 zone 对应的数据文件
5. 重启服务
DNS View
view view_name {match-client{ip 段1;ip 段2};
// 区域定义
};
match-client: 指定 IP 段使用 view 中的 zone 定义,any 匹配所有 IP
注意
- 一旦定义了 view 所有的 zone 都必须定义在 view 中
- 根 zone 只需要定义在需要递归的 view 中
使用 BIND 配置 DNS 服务器 — 初级篇 http://www.linuxidc.com/Linux/2013-05/84920.htm
BIND+DLZ+MySQL 智能 DNS 的正向解析和反向解析实现方法 http://www.linuxidc.com/Linux/2013-04/82527.htm
域名服务 BIND 构建与应用配置 http://www.linuxidc.com/Linux/2013-04/82111.htm
Ubuntu BIND9 泛域名解析配置 http://www.linuxidc.com/Linux/2013-03/81928.htm
CentOS 5.2 下安装 BIND9.6 http://www.linuxidc.com/Linux/2013-02/79889.htm
CentOS 6.4 安装 Bind DNS 服务器 http://www.linuxidc.com/Linux/2015-06/119371.htm
本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-07/120213.htm