Ros不知道从哪个版本开始已经开始内置支持DDNS了,用WinBox连接后,IP -> Cloud 启用DDNS即可,ROS会给你一个xxxxxxxx.sn.mynetname.net的域名指向你的ROS公网IP,不用自己折腾DDNS了。
以下内容已经过时。
===================================================================
脚本在RB750,4.16版ros正常运行。
1、Winbox中,Tools->Email中做如下设置
Server:填入你的smtp服务商的地址。例如119.147.74.45,为QQ的smtp服务器地址
Port:默认 25
From:你用来发信的电子邮件地址
User:smtp的帐号。 QQ的为 xxxx(你的QQ号) @qq.com
Password:密码
2、Winbox中,System->Scheduler,添加一个新任务
本例使用的www.changeip.com的动态域名服务
在脚本编辑框中输入如下脚本:
:global ddnsuser "动态域名服务的帐户名"
:global ddnspass "密码"
:global ddnshost "动态域名 www.myxxx.ddns.com"
:global ddnsinterface "ADSL接口的名称"
:global ddnssystem ("mt-" . [/system package get [/system package find name=system] version] )
:global ddnsip [ /ip address get [/ip address find interface=$ddnsinterface] address ]
:global ddnslastip
:global Mailsendto "接受IP地址的email邮箱名"
# isUpdate和IssendMail为两个控制变量,isUpdate为True时更新域名,isSendMail为true时发送email到指定邮箱
:global isUpdate true
:global isSendMail true
:if ([:len [/interface find name=$ddnsinterface]] = 0 ) do={ :log info "DDNS: No interface named $ddnsinterface, please check configuration." }
:if ([ :typeof $ddnslastip ] = "nothing" ) do={ :global ddnslastip 0.0.0.0/0 }
:if ([ :typeof $ddnsip ] = "nothing" ) do={
:log info ("DDNS: No ip address present on " . $ddnsinterface . ", please check.")
} else={
:if ($ddnsip != $ddnslastip) do={
:if ( $isUpdate ) do={
:log info "DDNS: Sending UPDATE!"
/tool dns-update name=$ddnshost address=[:pick $ddnsip 0 [:find $ddnsip "/"]] key-name=$ddnsuser key=$ddnspass
:log info "DDNS: UPDATE finished!"
}
:if ( $isSendMail ) do={
:global strDate [/system clock get date]
:global strTime [/system clock get time]
:global strSystemName [/system identity get name]
:log info "DDNS: Mail update is sending!"
/tool e-mail send to=$Mailsendto subject="DSL IP $strDate $strTime $strSystemName" body="DSL IP $ddnsip"
:log info "DDNS: Mail update finished!"
}
:global ddnslastip $ddnsip
} else={
:log info "DDNS: No changes necessary."
}
}
脚本运行间隔10~15分钟.