- 论坛徽章:
- 0
|
本帖最后由 moxnet 于 2011-10-19 20:26 编辑
DNAME
在bind9中实现了2种新的记录类型: DNAME,IP6 本文介绍DNAME实现的功能.
rfc2672描述了DNAME,rfc的标题是”Non-Terminal DNS Name Redirection”, 与CNAME的意思类似, 但他并不是别名了单独的一个名字, 而是别名了整个域名.当发现DNAME时, 并没结束, 而是计算出一个新的名字并且解析它.而CNAME的情况就不同, 当发现CNAME时, 工作就结束了.
DNAME使用相当简单:
<owner> <ttl> <class> DNAME <target>
作用是, 整个owner标识的整个子树被映射到目标域名上. 这是为了创建一种机制, 以帮助当网络重新规划后, 域名方便的重新命名, 包括原来的和新添加的域名.
我们来想象一种情况: 有一个公司的网站, 如a.com, 其决定购买公司b.com, 其决定为b做一个a.com的子域, 并且让b.com做为a.com的子域, 即b.a.com. 换名话说, 为了保持原来的依然工作和兼容,b.a.com布置期间, b.com需要依旧工作. 这时, 管理员简单的在a.com的域中添加一条记录:
b DNAME b.com.
当查询时, 如查询 www.b.a.com 时, 解析器会收到一个b.a.com的DNAME结果b.com;解析器需要转换要查询的域名到www.b.com并解析. 在应答中, 包含一个请求的域名的CNAME记录, 值为使用DNAME替换后的域名. 这样, 对于不兼容DNAME的解析器也可以照常工作.
我们经常会碰到一个问题: 有个域名, 将将这个域名的顶级做CNAME, 如域名a.com,想做CNAME到b.com,这通常是不允许的(这是很容易犯的一个错误, cname只允许对子域名做CNAME).而使用DNAME就可以达到此目的.
如: a.com zone file:- $TTL 3600 ; 1 hour
- @ IN SOA ns1.b.com. hostmaster.a.com. (
- 19 ; serial
- 43200 ; refresh (12 hours)
- 900 ; retry (15 minutes)
- 604800 ; expire (1 week)
- 3600 ; minimum (1 hour)
- )
- NS ns1.b.com.
- NS ns2.b.com.
- @ IN DNAME b.com.
复制代码 b.com zone file:- $TTL 3600 ; 1 hour
- @ IN SOA ns1.b.com. hostmaster.b.com. (
- 15 ; serial
- 43200 ; refresh (12 hours)
- 900 ; retry (15 minutes)
- 604800 ; expire (1 week)
- 3600 ; minimum (1 hour)
- )
- NS ns1
- NS ns2
- @ IN A 10.1.1.2
- www IN A 10.1.1.3
- ftp IN A 2.2.2.2
- ns1 IN A 10.8.1.1
- ns2 IN A 10.8.1.2
复制代码 结果:- # dig www.a.com @127.0.0.1
- ;; QUESTION SECTION:
- ;www.a.com. IN A
- ;; ANSWER SECTION:
- a.com. 3600 IN DNAME b.com.
- www.a.com. 3600 IN CNAME www.b.com.
- www.b.com. 3600 IN A 10.1.1.3
- ;; AUTHORITY SECTION:
- b.com. 3600 IN NS ns2.b.com.
- b.com. 3600 IN NS ns1.b.com.
- ;; ADDITIONAL SECTION:
- ns1.b.com. 3600 IN A 10.8.1.1
- ns2.b.com. 3600 IN A 10.8.1.2
复制代码 对于支持DNAME类型的dns provider,暂时还没有发展哪家支持(如果大家发现了可私信我).
参考资料:
http://www.informit.com/articles/article.aspx?p=19798
http://www.ietf.org/rfc/rfc2672.txt |
|