您可以使用许多快捷方式来简化生活:
如果您使用使用文件存储区域数据的Bind或类似软件,请:将区域指向同一文件,例如:
zone "example.net" {
type master;
file "/etc/bind/zone/default.zone";
};
zone "example.org" {
type master;
file "/etc/bind/zone/default.zone";
};
因为可以利用某些DNS速记,所以可以创建通用区域文件:
$TTL 1h ; default expiration time of all resource records without their own TTL value
@ IN SOA ns1.example.com. username.example.com. (
20140218131405 ; Serial number YYYYMMDDHHMMSS
28800 ; Refresh 8 hours
7200 ; Retry 2 hours
604800 ; Expire 7 days
86400 ; Minimum TTL 1 day )
@ IN NS ns1.example.com. ; ns1.example.com is a primary nameserver
@ IN NS ns2.example.com. ; ns2.example.com is a backup nameserver
@ IN MX 10 mail.example.com. ; mail.example.com is the mailserver
@ IN MX 20 mail2.example.com. ; the secondary mailserver
@ IN A 192.0.2.1 ; IPv4 address for the bare domain
IN AAAA 2001:db8:10::1 ; IPv6 address for the bare domain
www IN A 192.0.2.1 ; www.domain
IN AAAA 2001:db8:10::1 ; IPv6 address for www.domain - note by starting the line with a blank it becomes the continuation of the previous record and this IPv6 record applies to www
wwwtest IN CNAME www ; wwwtest is an alias for www
这利用了以下事实:区域文件中不以点结尾的主机名.始终使用扩展,而主机名$ORIGIN
又隐式设置为区域名。并且@是$ ORIGIN的简写。
与其手动维护各个区域文件,不如使一种方法与您的名称服务器进行编程交互。
我使用了PowerDNS,它允许RDMS作为后端,非常适合我们当时使用的LAMP堆栈。诸如Amazon Route 53之类的云服务也公开了Web-API。
但是,即使是古老的Bind也支持动态更新,动态更新是一种通过向主服务器发送特殊形式的DNS消息来在主服务器中添加,替换或删除记录的方法。这些消息的格式和含义在RFC 2136中指定。
通过在zone语句中包含allow-update
或update-policy
子句来启用动态更新。有关更多信息,请参见《绑定管理员参考手册》。
rndc addzone
选项,但这仍然很丑陋,因为它最终在工作目录中生成了带有哈希名称的配置文件,每个添加的区域。