CNAME 记录
记录格式
bar.example.com. CNAME foo.example.com.
foo.example.com. A 192.168.0.1
CNAME 记录的限制
- 如果一个 domain name 有了一个 CNAME 记录,那么它不能再拥有其它类型的记录
- CNAME 记录必须指向另外一个 domain name,而不是一个 IP
- CNAME 记录最好不要指向另外一个 CNAME 记录
- MX 和 NS 记录不能指向一个 CNAME 记录
SRV 记录
type code:33
记录格式
_service._protocol.name. TTL class SRV priority weight port target.
_sip._tcp.example.com. 86400 IN SRV 0 5 5060 sipserver.example.com.
- _service: 服务名称 symbolic name
- protocol: 协议
- name: domain name,以 . 结束
- priority: 条目优先级, 值越低优先级越高
- weight: 同样优先级内不同条目的权重
- target: canonical hostname,以 . 结束 如果是一个 MX 记录,那么 target 需要是一个 IP 地址(A 或者 AAAA)而不是 CNAME
SOA 记录
start of authority, 一个权威的起始
记录格式
@ IN SOA {primary-name-server} {hostmaster-email} (
{serial-number}
{time-to-refresh}
{time-to-retry}
{time-to-expire}
{minimum-TTL} )
- primary-name-server: 拥有该 zone 原始 zone file 的 nameserver,不包括通过 AXFR 获取数据的 nameserver
- hostmaster-email: zone 管理员的邮箱。邮箱地址内的 @ 会用 . 替代。如果地址中本身有 . ,用 / 替代
- serial-number: zone 的 版本号。只能增不能减。如果减小或者不变可能会导致 slave XFR 更新错误
- time-to-refresh: 用于 secondary nameserver 检测 zone 更新的周期,向 primary nameserver 发起请求。单位为秒
- time-to-retry: 用于 secondary nameserver 更新 zone 失败后的重试周期。单位为秒
- time-to-expire: 如果超过了这个时间 secondary nameserver 无法和 primary nameserver 建立联系,secondary nameserver 会将该 zone 认为是无效的,停止对外提供服务
- 时间单位还可以是 M(minute)、H(hour)、D(day)、W(week)
Zone file
$ORIGIN example.com.
$TTL 86400
@ IN SOA dns1.example.com. hostmaster.example.com. (
2001062501 ; serial
21600 ; refresh after 6 hours
3600 ; retry after 1 hour
604800 ; expire after 1 week
86400 ) ; minimum TTL of 1 day
IN NS dns1.example.com.
IN NS dns2.example.com.
IN MX 10 mail.example.com.
IN MX 20 mail2.example.com.
dns1 IN A 10.0.1.1
dns2 IN A 10.0.1.2
server1 IN A 10.0.1.5
server2 IN A 10.0.1.6
ftp IN A 10.0.1.3
IN A 10.0.1.4
mail IN A 10.0.1.8
mail2 IN A 10.0.1.9
www IN CNAME server1
$ORIGIN
example.com. 表示此 zone file 中的所有域名都是由 host label +$ORIGIN
组成。但是如果 host label 以 . 结束(即认为该 host label 是一个 FQDN),那么将不会扩展$ORIGIN
- 一个 zone 文件中是可以存在多个
$ORIGIN
的,$ORIGIN
生效的区间是当前$ORIGIN
到下一个$ORIGIN
之间 - $TTL 表示 zone 的默认 TTL
- @ 所在的地方都会由 $ORIGIN 替代
- $ORIGIN 后面紧跟着的是 SOA 记录,记录格式见 SOA 记录
- 上面的 RR 都是用的默认 $TTL,如果需要使用特殊化的 TTL,可以写在每一条 RR 的 hostname 后面
RR 格式
RR 中 无需添加 $ORIGIN
A
<host> IN A <IP-address>
IN A <IP-address-2> ; 多条记录时省略 <host> 字段
CNAME
<alias-name> IN CNAME <real-name>
MX
IN MX <preference-value> <email-server-name>
IN MX 10 mail.example.com.
IN MX 20 mail2.example.com.
- MX 记录用于邮件服务器的解析,如给 abc@example.com 发送邮件,就会先发送一个 关于 example.com. 的MX 记录查询。原则上 MX 记录不能指向 CNAME 记录
- preference-value 用作优先级,值越小优先级越高
- 可以是 hostname,也可以是 FQDN
NS
IN NS <nameserver-name>
IN NS dns1.example.com.
IN NS dns2.example.com.
- 该 zone 的权威解析服务器,只要是权威的都可以记录在这里,不需要管是 master 还是 slave
- 需要是一个 FQDN
反向解析 zone
$ORIGIN 1.0.10.in-addr.arpa.
$TTL 86400
@ IN SOA dns1.example.com. hostmaster.example.com. (
2001062501 ; serial
21600 ; refresh after 6 hours
3600 ; retry after 1 hour
604800 ; expire after 1 week
86400 ) ; minimum TTL of 1 day
1 IN PTR dns1.example.com.
2 IN PTR dns2.example.com.
5 IN PTR server1.example.com.
6 IN PTR server2.example.com.
3 IN PTR ftp.example.com.
4 IN PTR ftp.example.com.
格式和 forward zone 基本一致,只是 PTR 记录的 target 必须是 FQDN。
<last-IP-digit> IN PTR <FQDN-of-system>
PTR 记录的完整格式是 <last-IP-digit> + $ORIGIN
,因此,PTR 的第一个字段也是可以表示成 FQDN 的