用BIND架设DDNS Server提供DDNS服务1.前言 目前动态 DNS 两大主流,一个是 BIND (ISC),另一个就是套接 DB 的 DNS 如 PowerDNS (或 mydns) 等,两种方式各有好坏,主要是因为 BIND 会有一些复杂性,但效果非常好,而 PowerDNS 则是很简单, 但相对的它不能承受大量查询,主要原因在于数据库上先天的限制. 本文主要为介绍 BIND 之动态 DNS 做法,而这个做法之最重要重点则在于nsupdate 这个指令及 IXFR (incremental zone transfer request),是不同于传统的 AXFR (full zone transfer),IXFR 在做 Zone Transfer (DNS 的同步机制) 时,会以差异化的部份进行同步, 而 AXFR 则是以整个 Zone 进行同步.DDNS 主要由 RFC 2136 构成, 建议若您要对 DDNS 有一定深入的了解,可以阅读这篇 RFC 以了解更多重要的信息 (1034 1035 1995 是 2136 的基础)
本文适用于对 DNS 巳有一定了解的朋友,若是不甚清楚建议您可先参考 TWNIC 所做的讲义: http://dns-learning.twnic.net.tw/DNS94/
如果你想对 nsupdate + key 的方法有更深入的了解可以参考 http://www.study-area.org/tips/tipsfr1.htm 或参考 isc bind 的文件有最详细的解说 http://www.isc.org/sw/bind/arm93/Bv9ARM.pdf 本文不讨论 view 的情形,若是 view 情形您必需从 view 的 match-client 去更新或是使用不同 的 key,所以建议您多参考 isb bind 的文件,虽然辛苦些,但数据绝对是最官方最正确的
2. 必要的信息及知识 本文的范例以 Shell Script 做成,重点在于原理,采用什么工具或做法完全视您个人的能力.以下 就一些重点进行说明.
2.1 BIND 动态更新 基本上在 BIND8,BIND9 都是支持 nsupdate 的,但这里面要注意的是 BIND8 在8.3.X 后才支援 IXFR,而 BIND9 则都支持,所以若您的 Server 在 8.3.0 前的版本,那就不建议了,更何况这个以 前的版本多多少少都有许多安全性的问题.
2.1.1 nsupdate: bind 要开 allow-update 选项,让你的程序可以来执行更新指令,allow-update 选项可以是 IP 或 key,而本文仅就 IP进行介绍,若用 Key 对有些朋友来说可能会变得稍复杂些了
CODE:[Copy to clipboard]# named.conf # 其它略 zone "dyndns.twnic.tw" { type master; file "dyndns.twnic.tw"; allow-update {127.0.0.1;}; # 开放 127.0.0.1 进行动态更新 allow-transfer { slave_ip;127.0.0.1;}; # slave 主机,可能一部或多部,若无请写 none }; 以上是开放让 127.0.0.1 进行动态更新,动态更新有其指令,详细您可看看 nsupdate man page (man nsupdate),以下仅以最常用的进行说明:
CODE:[Copy to clipboard]#nsupdate [root@eai1 dyndns]# nsupdate > server 127.0.0.1 > zone dyndns.twnic.tw > update delete user1.dyndns.twnic.tw A 211.72.210.249 > update add user1.dyndns.twnic.tw A 211.72.210.251 ttl 'A': not a valid number # 这个例子是错误示范,加一笔记录要有 TTL 值 > update add user1.dyndns.twnic.tw 60 A 211.72.210.251 > show Outgoing update query: ;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id: 0 ;; flags: ; ZONE: 0, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0 ;; UPDATE SECTION: user1.dyndns.twnic.tw. 0 NONE A 211.72.210.249 user1.dyndns.twnic.tw. 60 IN A 211.72.210.251
> send > quit
CODE:[Copy to clipboard]server 指向某一台 NameServer 进行 update 操作 zone 修改某个 zone file update delete 进行 update 的 delete 动作,这个指令格式是 update delete FQDN TYPE RDATA,如果有多笔相同的 A 记录或不同的 MX 记录要删除某一笔需把 RDATA 补上, 若没有 RDATA 则表示这个 FQDN 的这个 TYPE 都要删除 (TYPE 即是 A,MX,PTR,SOA,NS..等,RDATA 就是 TYPE 后
上一篇:Linux CollegeLinux LiveServer 发布 下一篇:在Enterprise Server上配置SCSI磁带机 更多相关文章
|
推荐文章
精彩文章
|