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 后
Tags:服务 提供 进行 update 这个 zone nsupdate 更新 动态
|