DNS-服务器搭建
简介
DNS (Domain Name System), 用于将域名和服务器的 IP 地址进行对应和解析.
TCP/UDP 一般使用 53 端口.
通常使用 BIND (Berkeley Internet Name Domain) 服务实现.
除了让 DNS 本身做解析服务外, 也可以设置为:
- Cache-only, 只有
.
这个 zone file, 需要自己向其他 DNS 服务器查询 - Forwarding, 没有任何 zone file, 需指定一个上层 DNS 服务器, 将查询任务传送过去
两种模式.
一些基本概念
顶级域, 二级域名
根域 .
的下一级则为顶级域.
正向解析
指通过 “域名” 查找 “IP”.
反向解析
通过 “IP” 查找 “域名”.
主要用于邮箱域名解析.
此时的顶级域为 arpa
(Address and Routing Parameter Area)
FQDN
FQDN (Fully Qualified Domain Name), 指包含完整域名层级的 domain name (包含 .
根域), 如:
www.example.com.
mail.google.com.
zone
Zone 指一个 domain 之下的数据文件. 包含解析条目.
客户端域名正向解析流程
- 在本地缓存中查找是否有对应 IP 地址
- 查看本地 hosts 文件中是否有静态域名解析
- 向本地 DNS 服务器发送查询请求
- 本地 DNS 服务器将地址返回给客户端
DNS 服务器的查询流程
- 若本身无记录, 则向
.
查询 - 逐层向下询问
- 找到记录后暂存内存并返回给用户
安装
1 |
|
配置
主要要设置好两类数据:
- BIND 本身的配置文件,
/etc/named.conf
- 正反解数据库档案 (zone file), 可以在
/etc/named.conf
中指定 (因此名字随便取)
相关文件:
/etc/named.conf
, 主配置文件/etc/sysconfig/named
, 启动chroot
的额外参数/var/named
, 数据库文件默认存放/var/run/named
, pid-file
设置为 forwarding 模式
修改 /etc/named.conf
文件为:
1 |
|
可能需要先刷新一下证书文件:
1 |
|
正解 zone file 内的 RR
正解的 zone 常包括:
- RR (Resource Record) 资源记录, 这是一种格式(标志), 如:
1
2
3
4
5
6
7[domain] IN [[RR type] [RR data]]
主机名. IN A IPv4地址
主机名. IN AAAA IPv6地址
领域名. IN NS 管理这个领域名的服务器主机名字
领域名. IN SOA 管理这个领域名的七个重要参数
领域名. IN MX 顺序数字 接收邮件的服务器主机名字
主机别名. IN CNAME 实际代表这个主机别名的主机名字
这里的 .
加上之后则为 FQDN.
SOA 需要编写的 7 个参数为:
- Master DNS 服务器主机名
- 管理员的 email
- 序号 (Serial), 越大表示数据库越新
- 更新频率 (Refresh)
- 失败重新尝试时间 (Retry)
- 失效时间 (Expire)
- 快取时间 (Minimum TTL)
反解文件记录的 RR 数据
反解时的 zone 中 IP 反写的原因: 对于域名的解析, 如 www.ksu.edu.tw
越右边的网域越大, 因此查询是从右往左, 但是 IP 如 120.114.100.101
是越左边网域越大(此时就需要从左往右查询), 因此将 IP 反写(结尾加上 .in-addr.arpa.
), 就可以设置为从右往左查询.
其 zone 文件中的 RR 数据有:
PTR
(PoinTeR), 用 IP 查询主机名.
zone 文件示例
正解的网域是 domain name.
反解的网域是 IP 范围.
若要设置正解网域为 centos.vbird
, 反解网域为 192.168.100.0/24
, 则需设置的文件有:
named.conf
, 主配置文件named.centos.vbird
, 关于centos.vbird
的正解文件named.192.168.100
, 关于192.168.100.0/24
的反解文件named.ca
, 由 bind 提供的.
的正解文件
设置 named.conf 文件
设置 options
以及 zone
. 如:
1 |
|
allow-transfer
决定是否允许来自 slave DNS 对数据的传送.
zone
中的 type
一般设定有 3 个值:
hint
用于.
的设置master
, 用于手动更新数据库文件slave
, 用于自动更新数据库文件
named.ca
文件内容如:
正解文件设置
一定需要设置的 RR 标志有:
- TTL (快取记忆时间), ORIGIN (领域名)
- SOA
- NS, A
- 其他
文件内容的格式要求:
- 每一个 domain 的设置顶行写, 不顶行表明接着前一个 domain 的设置
@
, 代表 zone;
表示注释 (#
和~
也是)
示例如:
1 |
|
(注意一行一个记录)
若域名后没有加上 .
, 则会默认加上 zone + .
反解文件设置
至少设置 TTL, SOA, NS, PTR:
1 |
|
因为 zone 为 100.168.192.in-addr.arpa
, 因此这里写 254
就相当于 254.100.168.192.in-addr.arpa.
设置 bind 程序启动的 root 目录
用 bind-chroot
命令, 其将 bind 程序限定在某一个目录下. (暂时无示例)
检查配置文件语法
1 |
|
检查 zone file 语法
1 |
|
热加载配置文件
1 |
|
相关命令行工具
dig
查看查询流程
1 |
|
指定查询类型
1 |
|
反向解析
1 |
|
whois
查询域名管理者
1 |
|