host2318 发表于 2013-4-10 22:03:41

changeip不会被拉黑的DDNS更新脚本V3-V5。解决抱怨changeip不稳定的小白

本帖最后由 host2318 于 2013-4-10 22:06 编辑

changeip本身相当靠谱,出现故障可能是地域性问题,或者操作不当引起

changeip有限制同一个域名更新频率。如果单位时间内,更新次数太多,这个域名会被拉黑名单,导致更新不到

解决的办法很简单,在计划任务内设置间隔时间长一点即可。

并附DDNS更新脚本两个。分别用于更新V3.X和V4&V5版本的。都是全自动的,不需要设置接口,会自动侦测默认路由的接口
3.x的脚本不知道是哪位编写的
V4&V5的脚本是changeip官方提供的,下载地址“http://www.changeip.com/mikrotik/”
V3.X脚本如下
:global ddnsuser "用户名"
:global ddnspass "密码"
:global ddnshost "域名"
:global ddnsip
:global ddnslastip
:if ([ :typeof $ddnslastip ] = nil ) do={ :global ddnslastip "0" }
:global ddnsinterface
:global ddnssystem ("mt-" . )
:local int
:foreach int in= do={
:if ([:typeof ] != str ) do={
   :global ddnsinterface
}
}
:global ddnsip [ /ip address get address ]
:if ([ :typeof $ddnsip ] = nil ) do={
   :log info ("DDNS: No ip address present on " . $ddnsinterface . ", please check.")
} else={
:if ($ddnsip != $ddnslastip) do={
    :log info "\BF\AA\CA\BC\B8\FC\D0\C2\D4\B6\B3\CC\D3\F2\C3\FB"
    :log info [ :put ] key-name=$ddnsuser key=$ddnspass ] ]
    :global ddnslastip $ddnsip
} else={
    :log info "ip\B5\D8\D6\B7\CE\DE\B1\E4\BB\AF,\D3\F2\C3\FB\B2\BB\D3\C3\B8\FC\D0\C2"
}
}
#endV4&V5脚本如下/system script
add name=HomingBeacon policy=\
    ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api \
    source="# HomingBeacon Main Dynamic DNS Update Script\r\
    \n# Written by Sam Norris, ChangeIP.com\r\
    \n# 20100728 Tested on RouterOS 4.9\r\
    \n# 20110511 Tested on RouterOS 5.2\r\
    \n\r\
    \n# Set your specific ChangeIP.com preferences here.\r\
    \n:global ddnsuser \"USERID\"\r\
    \n:global ddnspass \"PASSWORD\"\r\
    \n:global ddnshost \"HOSTNAME.changeip.net\"\r\
    \n# Change ddnsport to 8245 to bypass proxy.\r\
    \n:local ddnsport 80\r\
    \n\r\
    \n# Do not edit anything below this line.You have been warned.\r\
    \n# Abusive updates to the system will cause firewall blocks.\r\
    \n\r\
    \n# Please be considerate and\r\
    \n# do not let this script run more than once per 3-5 minutes.\r\
    \n\r\
    \n:log info \"DDNS: Starting.\"\r\
    \n\r\
    \n# Initialize checkpoint\r\
    \n:global ddnscheckpoint\r\
    \n:if ([:typeof \$ddnscheckpoint] = \"time\") do={\r\
    \n\t:log info (\"DDNS: Last check was \" . ( - \$d\
    dnscheckpoint))\r\
    \n} else={\r\
    \n\t:log info \"DDNS: Cannot determine checkpoint, set now.\"\r\
    \n\t:global ddnscheckpoint ( - 1d )\r\
    \n}\r\
    \n\r\
    \n# Get the current IP\r\
    \n:if ( - \$ddnscheckpoint > [:totime 180s] || [/s\
    ystem clock get time] - \$ddnscheckpoint < [:totime 0s]) do={\r\
    \n   :log info \"DDNS: Performing remote IP detection.\"\r\
    \n   /tool fetch address=\"ip.changeip.com\" host=\"ip.changeip.com\" src-\
    path=(\"/\?\" . ) dst-path=\"ip.changeip.com.\
    txt\" mode=http port=\$ddnsport\r\
    \n   :global ddnscheckpoint \r\
    \n} else={\r\
    \n   :log info \"DDNS: Please be considerate and wait a few seconds longer\
    .\"\r\
    \n   :break\r\
    \n}\r\
    \n\r\
    \n# Parse the IP address received from fetch script.\r\
    \n\t:global ddnslastip\r\
    \n\t:local html \r\
    \n\t:local ddnsip [:pick \$html ([:find \$html \"<!--IPADDR=\"] + 11) [:fi\
    nd \$html \"-->\"] ]\r\
    \n\r\
    \n# Is it a valid IP and is it different than the last one\?\r\
    \n\t:if ([:typeof [:toip \$ddnsip]] = \"ip\" AND \$ddnsip != \$ddnslastip \
    ) do={\r\
    \n\t\t:log info \"DDNS: Sending UPDATE with \$ddnsip\"\r\
    \n\t\t:log info [/tool dns-update name=\$ddnshost address=\$ddnsip key-nam\
    e=\$ddnsuser key=\$ddnspass ]\r\
    \n\t\t:global ddnslastip \$ddnsip\r\
    \n\t} else={\r\
    \n\t\t:log info \"DDNS: No update required.\"\r\
    \n\t}\r\
    \n}\r\
    \n"

host2318 发表于 2013-4-10 22:11:28

本帖最后由 host2318 于 2013-4-10 22:13 编辑

并以附件形式提供V3和更高版本的ddns脚本

qkhh 发表于 2013-4-11 01:18:10

changeip是什么东西。从来没用过。

sealin 发表于 2013-4-11 06:50:34

楼主整理的很好,收藏感谢

raygo 发表于 2013-4-11 11:04:12

这是个好东西

lanyer 发表于 2013-4-11 12:20:59

第一个脚本明显有错误。运行失败

persist86 发表于 2013-4-11 14:56:01

用得少肯定靠谱,如果一个帐号里面有8个DDNS需要ROS来运行,每个间隔两分钟,你试试看你的脚本问题还是DDNS问题,DDNS不稳定一方便是解析时间太频繁,另一方面确实是DDNS服务器有问题

host2318 发表于 2013-4-11 19:11:19

lanyer 发表于 2013-4-11 12:20 static/image/common/back.gif
第一个脚本明显有错误。运行失败

第一个只适用3.x

host2318 发表于 2013-4-11 19:14:37

persist86 发表于 2013-4-11 14:56 static/image/common/back.gif
用得少肯定靠谱,如果一个帐号里面有8个DDNS需要ROS来运行,每个间隔两分钟,你试试看你的脚本问题还是DDNS ...

免费版的一个账号好像只能7个域名

真不是我挑毛病。

arainbow 发表于 2013-4-11 20:17:50

先上福利:

事实上,还有这样一个原因:

即使CHANGEIP更新成功,你的ROS通过国内DNS服务器得到的动态域名的解析IP,有可能是未作更新的,反应迟缓甚至不会更新,这应该是国内DNS服务器的问题,或被污染了。
我已经多次发现,即使手动到CHANGEIP上去更新了IP地址,国内的DNS还是历经很长时间不会更新。

这个是身不由己的!!

htqt 发表于 2013-4-11 20:33:53

arainbow 发表于 2013-4-11 20:17 static/image/common/back.gif
先上福利:

事实上,还有这样一个原因:


同感,原因不明

host2318 发表于 2013-4-11 22:29:41

arainbow 发表于 2013-4-11 20:17 static/image/common/back.gif
先上福利:

事实上,还有这样一个原因:


在自己电脑上更新不到可以尝试重启本机的 dnscache 服务 。WIN系统下

crc8 发表于 2013-5-16 10:05:28

感谢楼主的整理

housecall 发表于 2013-5-16 12:36:47

整理的非常不错,谢谢

xin005 发表于 2015-6-11 11:31:54

就用以前最简单的一优脚本就行
页: [1] 2
查看完整版本: changeip不会被拉黑的DDNS更新脚本V3-V5。解决抱怨changeip不稳定的小白