花生壳官方提供给用户的“如何在ROS中设置花生壳ddns(公网版)”错漏百出,根本无法使用。

为了解决此问题还特意学习了“Mikrotik RouterOS的脚本语法”。

现在把测试好的代码和设置过程、调试方法贴出来供各位博友参阅,以免浪费时间。

1、step1

开启NTP协议并修改时区:

/system ntp client set enabled=yes server-dns-names=1.centos.pool.ntp.org
/system clock set time-zone-name=Asia/Shanghai

检测路由是否与动态域名服务器通讯正常:

/ping ddns.oray.com

2、step2

修改脚本前,先组装一个URL测试:

/tool fetch url="http://ddns.oray.com/ph/update\?hostname=example.oicp.net&myip=119.128.4.27" mode=http user="example" password="pwd"

直接粘贴到路由上测试:

Mikrotik RouterOS-脚本-花生壳动态域名解析_花生壳

DNS查询是否可以正常更新DNS解析:

Mikrotik RouterOS-脚本-花生壳动态域名解析_RouterOS_02

尝更新一个错误的IP给花生壳DDNS服务器试试:

Mikrotik RouterOS-脚本-花生壳动态域名解析_花生壳_03

DNS查询是否可以更新掉之前正确的DNS解析:

Mikrotik RouterOS-脚本-花生壳动态域名解析_动态_04

可以看到DNS解析出来的是一个错误的IP地址。

3、step3

写脚本前,先查看当前路由的PPPOE接口名称:

Mikrotik RouterOS-脚本-花生壳动态域名解析_RouterOS_05

可以看到正确的接口名称为“ChinaNet”

根据正确的接口名字修改脚本等信息:

{
: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    //上面查询出来的虚拟接口名称

把代码直接粘贴到路由上测试:

Mikrotik RouterOS-脚本-花生壳动态域名解析_花生壳_06

DNS查询是否能把错误的IP更新掉:

Mikrotik RouterOS-脚本-花生壳动态域名解析_动态_07

可以看到脚本成功地找到了本路由PPPOE接口的当前IP,并成功提交给了花生壳服务器。

4、step4

以下将设置脚本和定时任务,使脚本可以自动执行:

“/System/Scripts”设置目录,单击【+】按钮

Mikrotik RouterOS-脚本-花生壳动态域名解析_RouterOS_08

如上图所示:

“On Event”增加通过测试的脚本代码。

单击【OK】按钮退出。

“/System/Scheduler”设置目录,单击【+】按钮

Mikrotik RouterOS-脚本-花生壳动态域名解析_动态_09

如上图所示:

Interval设置为“30”分钟

“On Event”增加“:execute peanutddns”脚本调用语句。

注:更新的版本已经不支持“:execute scriptName”语句,请直接写脚本名称“peanutddns”

单击【OK】按钮退出。

5、step5

检测是否已经正常工作:

再次尝试更新一个错误IP给花生壳的DDNS服务器:

Mikrotik RouterOS-脚本-花生壳动态域名解析_花生壳_10

Mikrotik RouterOS-脚本-花生壳动态域名解析_花生壳_11

等待脚本执行:

Mikrotik RouterOS-脚本-花生壳动态域名解析_动态_12

如上图所示:

等待“Run Count”执行加“1”后表示已经更新过DNS。

Mikrotik RouterOS-脚本-花生壳动态域名解析_动态_07

如上图所示:

错误的DNS被重新更新,证明脚本运行正常。

--------------------------------------------------------

参考文献:

http://service.oray.com/question/869.html

http://open.oray.com/wiki/doku.php?id=%E6%96%87%E6%A1%A3:%E8%8A%B1%E7%94%9F%E5%A3%B3:http%E5%8D%8F%E8%AE%AE%E8%AF%B4%E6%98%8E