花生壳官方提供给用户的“如何在ROS中设置花生壳ddns(公网版)”错漏百出,根本无法使用。
为了解决此问题还特意学习了“Mikrotik RouterOS的脚本语法”。
现在把测试好的代码和设置过程、调试方法贴出来供各位博友参阅,以免浪费时间。
1、step1
开启NTP协议并修改时区:
1
2
|
/system
ntp client
set
enabled=
yes
server-dns-names=1.centos.pool.ntp.org
/system
clock
set
time
-zone-name=Asia
/Shanghai
|
检测路由是否与动态域名服务器通讯正常:
1
|
/ping
ddns.oray.com
|
2、step2
修改脚本前,先组装一个URL测试:
1
|
/tool
fetch url=
"http://ddns.oray.com/ph/update\?hostname=example.oicp.net&myip=119.128.4.27"
mode=http user=
"example"
password=
"pwd"
|
直接粘贴到路由上测试:
DNS查询是否可以正常更新DNS解析:
尝更新一个错误的IP给花生壳DDNS服务器试试:
DNS查询是否可以更新掉之前正确的DNS解析:
可以看到DNS解析出来的是一个错误的IP地址。
3、step3
写脚本前,先查看当前路由的PPPOE接口名称:
可以看到正确的接口名称为“ChinaNet”
根据正确的接口名字修改脚本等信息:
1
2
3
4
5
6
7
8
9
10
11
|
{
:
local
ipaddr;
:
local
server
"http://ddns.oray.com"
;
:
local
domain
"example.oicp.net"
;
:
local
users
"example"
;
:
local
paswd
"pwd"
;
:
set
ipaddr [
/ip
address get [
/ip
address
find
interface=ChinaNet] address];
:
set
ipaddr [:pick $ipaddr 0 ([:len $ipaddr] -3)];
:
local
par
"/ph/update\?&hostname=$domain&myip=$ipaddr"
;
/tool
fetch url=($server . $par) mode=http user=$
users
password=$paswd;
}
|
以上需要修改的参数:
server //固定为http://ddns.oray.com
domain //你向花生壳申请的域名
users //登录花生壳的用户名
paswd //登录花生壳的密码
interface //上面查询出来的虚拟接口名称
把代码直接粘贴到路由上测试:
DNS查询是否能把错误的IP更新掉:
可以看到脚本成功地找到了本路由PPPOE接口的当前IP,并成功提交给了花生壳服务器。
4、step4
以下将设置脚本和定时任务,使脚本可以自动执行:
“/System/Scripts”设置目录,单击【+】按钮
如上图所示:
“On Event”增加通过测试的脚本代码。
单击【OK】按钮退出。
“/System/Scheduler”设置目录,单击【+】按钮
如上图所示:
Interval设置为“30”分钟
“On Event”增加“:execute peanutddns”脚本调用语句。
注:更新的版本已经不支持“:execute scriptName”语句,请直接写脚本名称“peanutddns”
单击【OK】按钮退出。
5、step5
检测是否已经正常工作:
再次尝试更新一个错误IP给花生壳的DDNS服务器:
等待脚本执行:
如上图所示:
等待“Run Count”执行加“1”后表示已经更新过DNS。
如上图所示:
错误的DNS被重新更新,证明脚本运行正常。