Dns Zone Files

CNAME 记录

记录格式

bar.example.com.	CNAME	foo.example.com.
foo.example.com.	A		192.168.0.1

CNAME 记录的限制

  1. 如果一个 domain name 有了一个 CNAME 记录,那么它不能再拥有其它类型的记录
  2. CNAME 记录必须指向另外一个 domain name,而不是一个 IP
  3. CNAME 记录最好不要指向另外一个 CNAME 记录
  4. 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 的

Reference