找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 8062|回复: 10

[脚本] 发一个简单的动态域名更新脚本

[复制链接]
发表于 2009-1-3 00:12:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
本帖最后由 zooyo 于 2009-1-5 09:18 编辑

在论坛潜水N久了,学到不少东西。现在是时候回报论坛了。

最近在搞ros的动态域名更新,因为很菜,搞了两星期,才弄明白怎么一回事。

现在把脚本放出来,希望新手少走弯路。

说说我的网络环境。我用的是ROS 2.9.27,三条ADSL,同网关,做NTH负载均衡。

首先,要在www.changeip.com上申请一个帐号,收到确认的邮件后激活帐号。
1.JPG
然后在"Add our free domains"里输入你的子域名,并选择一级域名,这里我选择changeip.org。
提醒一下,这里不要搞错了,不要输错到"Add your own domain"里去了,那个域名只有七天的试用期。
2.JPG
下面做的一步,就是确认你的ROS能用DDNS。
到winbox里,IP-Addrss,查看一下拨号得到的IP。
3.JPG
点击"New Terminal",输入:
/tool dns-update name=yourname.changeip.org(你的域名) address=10.10.10.10 key-name=用户名 key=密码
4.JPG
输入回车后,应该没有什么反应。
点击log,应该可以看到“DNS update sucessful”
5.JPG
如果出现connect error或timeout,请检查一下ROS设置和防火墙。



点击system-scheduler,新增一个计划任务,间隔Interval这里我选择00:03:00(每三分钟)更新一次,脚本如下:
7.JPG
#定义changeip的帐号:
:global ddns-user "username"

#定义changeip的密码:
:global ddns-pass "userpassword"

#定义你的二级域名:
:global ddns-host "username.changeip.net"
:global ddns-lastip [:resolve $ddns-host]


#外网网卡的名称,如果是ADSL拨号,就填写PPPOE拨号网卡的名称:
:global ddns-interface "pppoe-out1"


#--------下面的脚本请照抄,不用变。
#定义一个临时变量获取网卡的IP地址,得到的格式是x.x.x.x/32:
:global ddns-tempip [ /ip address get [/ip address find interface=$ddns-interface] address ]

#因为上面的IP格式是x.x.x.x/32,所以要变成x.x.x.x:
:global ddns-ip [:pick $ddns-tempip 0 [:find $ddns-tempip "/"] ]

:if ($ddns-ip != $ddns-lastip) do={
/tool dns-update name=$ddns-host address=$ddns-ip key-name=$ddns-user key=$ddns-pass
:log info "DDNS: Update sucessful!"
} else={
:log info "DDNS: No change"
}
routeros
发表于 2009-1-3 08:38:46 | 显示全部楼层
先谢了,有没有国内的DDNS厂商的脚本呢?
routeros
回复

使用道具 举报

发表于 2009-1-3 10:01:37 | 显示全部楼层
那要等ROS和国内的DDNS合作了先。
routeros
回复

使用道具 举报

 楼主| 发表于 2009-1-3 14:54:04 | 显示全部楼层
3322的DDNS更新我也做出来了,不过有点麻烦,可能很多人不愿去做。
routeros
回复

使用道具 举报

发表于 2009-1-3 19:32:12 | 显示全部楼层
说说你的方法呢
routeros
回复

使用道具 举报

 楼主| 发表于 2009-1-3 21:00:26 | 显示全部楼层
本帖最后由 robert_cao 于 2009-1-3 21:05 编辑

根据hcb前辈的提示做成的,原贴见下面连接:
http://bbs.router.net.cn/thread-27033-1-2.html

不过我觉得他的方法麻烦了一点,我改了一种更简单的方法来做。
首先要用一张linux的livecd光盘启动进入linux,再把那些文件放入ROS中,再改一下属性为可执行。

详细的教程等忙完了最近的事后再发出来,请大家耐心等一下。
routeros
回复

使用道具 举报

发表于 2009-1-3 23:23:06 | 显示全部楼层
鼓励大家原创,谢谢对论坛的支持。
routeros
回复

使用道具 举报

发表于 2009-1-4 00:33:32 | 显示全部楼层
看了不顶不行哪。呵呵。。我要问一下  我没搞过ddns所以不太清楚。。因为我最近才搞ROS的。 而且没你那样的真实环境..所以我要问一下你 : $ ddns-lastip 这个从那里来的。是系统本身就存在的了吗。。? 我看到别人那里的是 :local dnsip(相当于你的ddns-lastip) [:resolve ($domain)]
就是这一点我看到有点模糊。。请斑主说一下。以解决我的疑问?谢谢。。对了。你说还有你的那个3322的域名你也做了。 拿出来大家看看嘛。。!! 呵呵。。。
routeros
回复

使用道具 举报

 楼主| 发表于 2009-1-4 21:34:17 | 显示全部楼层
8# georgetan

sorry,少了脚本里少了一句:
:global ddns-lastip [:resolve $ddns-host]

请zooyo兄帮忙修改一下贴子,加在这句话之后,现在我已经不能修改了:
#--------下面的脚本请照抄,不用变。
:global ddns-lastip [:resolve $ddns-host]

georgetan很细心,谢谢。
我的做法很简单。ddns-lastip就是现有DDNS的IP,可以用[:resolve hostname]获得。ddns-ip就是拨号所得到的IP。它们两个比较,如果一致就不用更新DDNS,如果不一致就更新DDNS。

至于3322的DDNS,因为是用linux做出来的,还没有把图片存下来,近期还不能上传,请georgetan耐心等一下。
routeros
回复

使用道具 举报

发表于 2010-8-28 09:33:59 | 显示全部楼层
记录一下
routeros
回复

使用道具 举报

发表于 2010-8-28 11:30:10 | 显示全部楼层
我的DDNS~3.30~
未命名.jpg
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-5-19 14:14 , Processed in 0.165007 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表