一, DNS 和 Bind
1.DNS 功能: 将主机名和 ip 地址进行一一对应, 通过主机名可以解析到目标主机的 ip 地址 (正向解析), 也可以通过 ip 地址解析到主机名 (反向解析).
主机名到 IP 地址的映射有两种:
静态映射: 每台设备上都有主机到 ip 映射的配置文件, 通过该文件可以完成一部分地址解析, 该映射文件只归本设备使用, 在 linux 下静态映射存在 / etc/hosts 文件下
动态映射: 通过一套域名解析系统 (DNS), 在专门的 DNS 服务器上存放主机到 IP 地址的映射, 需要使用主机名通信的设备, 需要从 DNS 服务器查询该主机的 IP 地址
2.Bind:Berkeley Internet Name Domain, 伯克利互联网名称域, 将整个互联网分为多个不同的管理区域, 每个区域都有一台服务器管理其中的主机名, 是全球最大的分布式数据库之一.
Bind-- 倒置的树
根域 (.)
顶级域 (Top Level Domain, TLD, tld)
组织域: 标识域的组织结构;
com, net, org, gov, edu, mil, ...
地理域: 标识域所在的地理范围;
tw, hk, cn, jp, iq, ...
反向域: 用于反向解析
in-addr.arpa
二级域及下级子域: 由企业, 组织, 团体或个人维护的域;
baidu,sohu,...
主机名: 标识特定域中的特定主机名称;
www,mail,forum,ns
FQDN:Full Qualified Domain Name, 完全合格域名; 主机名的完整名称;
从枝叶到根域的顺序书写, 如 www.ppp213.com.
3. 名称解析的方式:
正向解析: FQDN --> IP
反向解析: IP --> FQDN
注意: 正向解析和反向解析所使用的名称属于不同空间, 不是同一棵树, 也不是同一个数据库;
在 linux 中, 在 / etc/resolv.conf 文件存放 DNS 服务器的地址.
4. 名称查询的类型:
递归查询: recurse, 要求有明确结果的查询; 必须返回一个肯定的或否定的答案;
迭代查询: iteration, 按照一定的顺序和步骤依次向不同服务器发出查询请求, 尽量要求返回一个答案;
5. 名称查询获得的答案:
权威答案: 由直接负责管理对应信息的名称服务器返回的答案;
非权威答案: 由指定的服务器从其缓存中或利用迭代方式查询得到的答案;
还有两种可能;
肯定答案: 可以解析到结果
否定答案: 无法解析到结果
6. 名称服务器: NS,Name Server;
至少负责一个域的数据库管理;
主名称服务器: Master NS
从名称服务器: 辅助名称服务器, Slave NS;
不负责任何域的数据库管理:
缓存名称服务器;
7. 一次完整的主机名称解析的流程:
Client --> hosts --> Local Cache --> 首选 DNS 服务器 (递归查询) -->
1. 服务器本地数据库中有结果, 直接返回权威答案;
2. 服务器不维护该域, 但已经有缓存的结果, 直接返回非权威答案;
3. 服务器不维护该域, 缓存中也没有结果, 于是开始迭代查询:
1) Root 返回顶级域服务器
2) 顶级域服务器返回二级域的 NS 地址;
3) 直到找到对应主机所在域的 NS 服务器, 获得解析结果;
4) 缓存此次查询结果并用缓存中的数据响应客户端;
二, 主从 NS 服务器
1. 定义
主名称服务器: 维护所负责的区域数据库文件的主体; 可以在区域数据库中进行增, 删, 改, 查等操作, 即: 读写操作均可进行;
从名称服务器: 也称为 "辅助名称服务器", 从主名称服务器或者其他的从名称服务器复制区域数据库文件到本地; 因此, 从名称服务器不能进行管理操作 (增, 删, 改), 只能进行读操作;
2. 主从服务器数据的同步
当主名称服务器不能使用时, 仍然可以从该主名称服务器的从服务器中获取数据进行 DNS 解析, 从名称服务器是一种备份操作, 若主从名称服务器数据不一致时会产生错误, 因此必须实时保证主从服务器数据库的一致性. 为了保证主名称服务器和从名称服务器的数据库的一致性, 通过定义下来参数来实现:
1) 序列号: Serial, 即: 数据库的版本号;
2) 刷新时间间隔: Refresh, 从服务器到主服务器检查序列号的变更情况的时间间隔;
3) 重试时间间隔: Retry, 从服务器到主服务器的序列号检查请求失败以后, 再次尝试发送请求的时间间隔; 通常来讲, 重试时间间隔要远远小于刷新时间间隔;
4) 过期时间: Expire, 从名称服务器始终无法联系主名称服务器, 从名称服务器最大的连续工作时长;
5) 否定答案的缓存时长: minimal ttl;
3. 主从服务器时间同步的方法:
1) 通过互联网中的时间服务器;
2) 通过局域网中自建时间服务器;
CentOS 6-:ntp(网络时间协议) 服务器, ntpd 程序
CentOS 7:ntpd 程序, chrony 程序
3) 修改 / etc/ntp.conf
添加一行
restrict 192.168.109.0/24 nomodify 为该网段中所有主机提供时间同步服务
注释掉原本 server 的几行, 之后添加一行:
server 127.127.1.0 iburst 使该服务器成为内部网络所有服务器的时间服务器
让配置加载并生效:
- CentOS 6-:service ntpd reload|restart
- CentOS 7:systemctl reload|restart ntp.service
4. 主从服务器区域数据库复制的方式: 区域传送
推送: 主名称服务器主动将更改后的数据库发送给从服务器;
拉取: 从名称服务器在比对序列号之后发现主服务器数据库的序列号变大, 要求主服务器发送数据库以更新自身数据库;
区域传送两种类型:
全量传送: AXFR,All Transfer, 将整个数据库文件传送至从服务器;
增量传送: IXFR,Incremental Transfer, 仅传送自上次数据库传送以后发生变化的内容;
对于 Bind, 默认允许所有客户端请求区域传送, 为了安全起见, 需要进行访问控制;
区域传送是从名称服务器能够进行权威解答的必要基础;
存放于数据库文件中的用于完成名称解析工作的数据内容, 我们称为 "资源记录"; 即: Resource Record, 简称为 "RR";
三, 资源记录: RR
常用的资源记录的类型:
A,AAAA,PTR,SOA,NS,CNAME,MX
1.SOA:Start Of Authority, 起始授权记录;
在任何一个区域数据库中必须有且只能有一条 SOA 记录, 而且该记录必须放在数据库中的第一条; 其中包括:
域名;
数据缓存的时间;
NS 服务器的主机名;
管理员的邮箱地址;
序列号, 刷新时间间隔, 重试时间间隔, 过期时间及否定答案的缓存时间;
2.A:Address, 主机记录;
标识从完全合格域名到 IPv4 地址的映射关系;
3.AAAA:Address, 主机记录;
标识从完全合格域名到 IPv6 地址的映射关系;
4.PTR:PoinTeR, 反向指针记录;
标识从 IP 地址到完全合格域名的映射关系, 在一个数据库中, 不可能同时拥有 A 记录和 PTR 记录.
5.NS:Name Server, 名称服务器记录;
标识当前域中被授权的名称服务器;
6.CNAME:Conanical Name, 别名记录;
标识从完全合格域名到完全合格域名的映射关系;
7.MX:Mail eXchange, 邮件交换记录;
标识域中的邮件服务器的主机名称, 标识从域名到完全合格域名的映射关系;
MX 资源记录包含了一个优先级, 0-65535, 数字越小优先级越高;
四, 资源记录的格式:
DN|FQDN [TTL]IN RR_TYPE VALUE
注意:
1. 名称部分可以写 FQDN, 也可以省略域名写主机名, 其域名会从配置文件中通过宏来继承; 常用的宏 $Origin;
2.TTL 是以秒为默认时间单位的时间标识符号, 如果省略, 则从全局定义的宏中继承, 通常是 $TTL;
3. 在区域数据库中,"@" 有特殊含义, 其含义为: 当前区域的域名, 在资源记录数据库中写邮箱地址不能使用 "@" 符号, 需要用 "." 来替换;
4. 一个 FQDN 可以通过多条记录定义多个不同的值; 客户端在查询此类资源记录时, DNS 服务器会默认采用轮询的方式顺序调取每个记录的内容, 这是一种简单的负载均衡的处理;
www.ppp213.com. IN A 1.1.1.1
www.ppp213.com. IN A 1.1.1.2
www.ppp213.com. IN A 1.1.1.3
5. 多个 FQDN 通过多条记录对应同一个值, 但此时更好的方案是使用别名记录;
www.ppp213.com. IN A 1.1.1.1
ftp.ppp213.com. IN A 1.1.1.1
bbs.ppp213.com. IN A 1.1.1.1
还可以写成:
www.ppp213.com. IN A 1.1.1.1
ftp.ppp213.com. IN CNAME www.ppp213.com.
bbs.ppp213.com. IN CNAME www.ppp213.com.
6. 在区域数据库中, 根域的名称 "." 必须写在 FQDN 的结尾处; 如果在 FQDN 结尾处没有 ".", 则 bind 程序会在名称后面补上当前域的域名 (在 SOA 记录中);
www.ppp213.com IN A 1.1.1.1
相当于
www.ppp213.com.ppp213.com. IN A 1.1.1.1
www IN A 1.1.1.1
相当于
www.ppp213.com. IN A 1.1.1.1
ftp IN CNAME www.ppp213.com
相当于
ftp.ppp213.com. IN CNAME www.ppp213.com.
五, 常见的资源记录在数据库中通用写法:
1.SOA:
DN|FQDN: 当前域的域名, 如: ppp213.com.
或者使用 "@" 代替域名;@符号会使用主配置文件中定义的域名来代替;
VALUE: 由以下几个部分组成:
1) 当前域中的主名称服务器的 FQDN;ns.ppp213.com.
2) 当前域的数据库管理员的邮箱地址, 需要使用 "." 来代替 "@";root.ppp213.com.
3) 主名称服务器进行区域传送的相关时间参数的定义:
- (Serial Refresh Retry Expeir TTL)
- (Serial;
- Refresh;
- Retry;
- Expeir;
- TTL;)
示例:
ppp213.com.86400IN SOA ns1.ppp213.com. master.ppp213.com. (
- 2018040601;
- 1H;
- 10M;
- 1W;
- 5M;)
@86400IN SOA ns1.ppp213.com. master.ppp213.com. (2018040601 1H 10M 1W 5M)
2.NS 记录:
name: 当前域的域名; 可以写完全合格域名 FQDN; 可以写 @占位; 还可以省略不写, 如果省略不写, 则意味着该资源记录的名称与其上一条资源记录的名称相同;
value: 当前区域内被授权的名称服务器的 FQDN;
注意:
1) 一个域中有多少台名称服务器就需要写多少个 NS 资源记录;
2) 每个 NS 资源记录都必须要有一个 A 记录与之对应;
示例:
qhdlink.com.IN NS ns1.qhdlink.com.
@ IN NS ns1
IN NS ns2
3.MX 记录:
name: 当前域的域名; 可以写完全合格域名 FQDN; 可以写 @占位; 还可以省略不写, 如果省略不写, 则意味着该资源记录的名称与其上一条资源记录的名称相同;
RR_TYPE:MX priority
value: 当前域中有效的邮件服务器的 FQDN;
注意:
1) 一个域中, 可以有多条 MX 资源记录, 通过优先级的大小决定被使用的次序;
2) 每个 MX 资源记录都必须对应一条 A 记录;
示例:
ppp213.com. IN MX 10(优先级) mail.ppp213.com.
@ IN MX 10 mail
4.A 记录:
name: 域中指定主机的 FQDN;
value: 该主机上真实有效的 IPv4 地址;
示例:
www.ppp213.com. 43200 IN A 192.168.109.100
www 43200 IN A 192.168.109.100
泛域名:
*.ppp213.com. 43200 IN A 192.168.109.100
* 43200 IN A 192.168.109.100
直接域名解析:
ppp213.com. 43200 IN A 192.168.109.100
通常, 泛域名或直接域名都是为了防止用户写错名称而导致无法给出正确的解析结果;
5.CNAME 记录:
name: 域中指定主机的别名;
value: 真正的主机的 FQDN;
示例:
ftp.ppp213.com. [86400] IN CNAME www.ppp213.com.
ftp [86400] IN CNAME www
6.PTR 记录:
name: 将 IP 地址的四个八位组反过来, 加上反向域的域名后缀;
如果 IP 地址是: 172.16.1.100/16, 其对应的名称的写法:
100.1 IN PTR www.ppp213.com.
100.1.16.172.in-addr.arpa. IN PTR www.ppp213.com.
value: 域中与指定的 IP 地址对应的 FQDN;
注意: value 部分必须写 FQDN, 绝对不能省略域名后缀, 最后必须以 "." 结尾; 否则 bind 程序会将反向域的域名补在名称之后;
来源: http://www.bubuko.com/infodetail-2560265.html