非常巧妙的脚本,哪位大侠能说说原理是啥。
本帖最后由 kzyfl 于 2012-3-2 20:43 编辑以下是PPPOE多线ddns脚本,(ROS5.X)非常好用。就是不知道原理是啥,哪位大侠能帮解释解释。
Open a terminal window and paste both scripts below.
Then using the script window change the UserID, Password, and hostname.
/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"
/system scheduler
add comment="ChangeIP.com Dynamic DNS Update" \
disabled=no \
interval=5m name=DynamicDNS \
on-event=HomingBeacon \
policy=read,write start-time=startup
这个应该是通过 changeip 自己的一个页面来检测你访问过来的IP. 悲剧的是我这个垃圾的运营商会在对外访问时将我端口的公网地址NAT成另外一个公网地址, 此举本来应该是为了限制P2P的, 却也顺便把这个DDNS脚本给封了. 3.x时代好用的脚本5.x又不能用, 我现在正头疼这个呢 运营商会在对外访问时将我端口的公网地址NAT成另外一个公网地址, 此举本来应该是为了限制P2P的, 却也顺便把这个DDNS脚本给封了
页:
[1]