分享
 
 
 

DyDNS原理以及实现

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

2003,04,20

1. DyDNS i.e. 动态域名

可以让不固定ip的用户使用一个固定的域名,每次他们的ip改变的时候,只要更新这个dns数据,就可以让他们的机器通过域名被访问到

2. 原理

每个internet domain name 记录都有一个 ttl(time-to-live) 标识,域名缓存服务器根据这个标识决定每隔多长时间更新一次它的数据。那么,只需要把动态dns的ttl值设的小一点,就可以保证域名的改变能及时生效。

3. bind 与动态dns的实现

A. bind 是linux/unix上用的非常普遍的域名服务器软件。bind本身就提供了动态更新域名数据的机制。

bind 的 named.conf里面的 zone 语句,有一个参数 allow-update

语法: allow-update { address_match_list }

即指定了能向bind发起 域名更新 指令的机器的ip/地址列表。

缺省情况下,任何机器都不能发起域名更新指令。

例:

zone "abc.com" {

type master;

file "abc.com";

allow-update {127.0.0.1; 10.240.0.1; 192.168.1.1;};

};

安全: 如果使用了 ip地址匹配机制,那么相应的机器上的所有用户都可以发起域名更新指令,如果这个机器上有很多普通用户的话,这可能是一个麻烦。这种情况下,需要用bind的高级验证机制来解决(使用密钥)。

B. nsupdate 工具

随bind一起发行的工具除了 named ,nslookup之外,还有一个 nsupdate工具,用来发起域名更新指令。

用法:

nsupdate [ -d ] [ -k keydir:keyname ] [ -v ] [ filename ]

-d 表示运行于debug模式

-k 指定一个用于验证的密钥

-v 表示使用tcp而不是udp

nsupdate的指令从 filename 指定的文件内获得,如果没有指定文件,就从标准输入获得

nsupdate 缺省与/etc/resolve.conf里面指定的主域名服务器通讯

主要指令 :

增加一个域名:

update add domainname ttl [class] type value

ttl是增加的域名记录的 time-to-live属性, class是缺省 IN ( internet )

type 可以是 A/CNAME/NS/SOX 一般用于dydns是 A

value是这个域名记录的值 ,对于 A类型记录,值一般是ip地址

删除一个域名:

update delete domainname

这些指令可以与先决条件一起使用:

以 domainname 不存在为条件:

prereq nxdomain domainname

以 domainname 存在为条件

prereq yxdomain domain-name

任何空行表示commit

例:

i. 增加一个域名

# nsupdate

>update add new.abc.com 60 IN A 127.0.0.1

>

# nslookup new.abc.com

Server: 127.0.0.1

Address: 127.0.0.1#53

Name: new.abc.com

Address: 127.0.0.1

ii. 删除一个域名

为了保证不会出错,这里首先检查该域名是否存在

# nsupdate

> prereq yxdomain new.abc.com

> update delete new.abc.com

>

# nslookup -sil new.abc.com

Server: 127.0.0.1

Address: 127.0.0.1#53

** server can't find new.abc.com: NXDOMAIN

注释:

以prereq开头,空行结束的指令段可以看作一个条件语句段,只有在prereq所要求的条件满足的时候才会被执行。

因此,一段通用的用于动态dns 注册/登录 的nsupdate指令可以写成:

# nsupdate

> prereq yxdomain xxx.abc.com

> update delete xxx.abc.com

>

> update add xxx.abc.com 60 IN A xxx.xxx.xxx.xxx

>

4. bind的高级验证机制 (基于密钥)

bind支持用密钥进行的验证机制,只有拥有这个密钥的nsupdate进程 ( 可以用nsupdate的 -k 参数指定给nsupdate)才能进行特定的操作,特别有用的是域名更新操作。

i. 为验证生成密钥

# dnskeygen -H 128 -h -n abc.com

Generating 128 bit HMAC-MD5 Key for abc.com

Generated 128 bit Key for abc.com. id=0 alg=157 flags=513

生成两个文件 Kabc.com.+157+00000.private 和 Kabc.com.+157+00000.key

内容分别为

# cat /etc/bind/sec/Kabc.com.+157+00000.private

Private-key-format: v1.2

Algorithm: 157 (HMAC)

Key: /G9ZaFJIyeG1roPSlJbfyw==

# cat /etc/bind/sec/Kabc.com.+157+00000.key

abc.com. IN KEY 513 3 157 /G9ZaFJIyeG1roPSlJbfyw==

确认使这两个文件只对拥有者可读写

ii. 修改named.conf, 使之能够使用密钥验证

key abc.com. {

algorithm hmac-md5;

secret "/G9ZaFJIyeG1roPSlJbfyw==";

};

// 这里的 secret key就是 Kabc.com.+157+00000.private 文件中的 key

zone "abc.com" {

type master;

allow-update { key abc.com.;};

file "abc.com";

};

iii. 在调用nsupdate的时候,使用密钥

nsupdate -k /etc/bind/sec/:abc.com.

>

bind 8里面,nsupdate使用 -k keydir:keyname的格式来使用

keyname 是 dnskeygen 生成key的时候指定的 keyname,但是要加一个点"."

5. 最后实现

使用一个程序(cgi或者其他服务程序)调用 nsupdate, 并指定正确的验证密钥,就可以实现动态dns

6. 参考

named.conf(5), nsupdate(1), dnskeygen(1)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有