admin 管理员组

文章数量: 887021


2024年3月12日发(作者:angular双向绑定语法)

配置动态DNS主要是为了能让你的RouterBoard在Internet上被访问到,这样我就可以远程控制我

的RouterBoard,同时也可以开始做端口映射,在内网做server…等。

在ROS上配置DDNS非常简单,就是写一个script然后放到ROS的

System

–>

Scheduler

中就好了。不过在此

之前,先去申请一个DDNS,我用的是3322的。

不过在开始之前,你要先确保你的宽带连接拨号之后,得到的是一个真实的IP地址。现在电信/联通/移动宽带

有的时候拨号会得到一个假IP地址,比如

,甚至之前我得到过

,这个也

不是真实的IP地址(RFC编号为6598。RFC 6598 – IANA-Reserved IPv4 Prefix for Shared Address

Space)。判断自己拨号得到的IP是否是真实IP很简单,打开 ,网站会告诉你你目前

的IP地址,把这个IP跟你在ROS里面看到的你拨号得到的IP比较是不是一样就知道了。

如果你得到的不是真实的IP地址,那就说明在运营商那边还有一层NAT,那么你做DDNS就没有用了,除非你

用花生壳客户端这种专门的软件,但是花生壳客户端软件是没法装在ROS上的。可以打电话给宽带运营商投

诉,让它给你分配真实的IP地址,如果它不从你可以打工信部电话投诉(我没试过,网友们说可以)。

所以先来看一下这个script是长什么模样:

:global ednsuser "xxxxxxxx"

:global ednspass "xxxxxxxx"

:global ednshost ""

:global ednsinterface "SHUnicom"

:global members "/dyndns/update?system=dyndns"

:global status

:global status [/interface get [/interface find name=$ednsinterface] running]

:if ($status!=false) do={

:global ednslastip [:resolve $ednshost]

:if ([ :typeof $ednslastip ] = nil ) do={ :global ednslastip "0" }

:global ednsiph [ /ip address get [/ip address find interface=$ednsinterface ] address ]

:global ednsip [:pick $ednsiph 0 [:find $ednsiph "/"]]

:global ednsstr "&hostname=$ednshost&myip=$ednsip"

:if ($ednslastip != $ednsip) do={

/tool fetch url="$members$ednsstr" mode=http user=$ednsuser password=$ednspass dst-

path=$ednshost

:delay 4

:global result [/file get $ednshost contents]

:log info ($ednshost . " " .$result)

/file remove $ednshost ;

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

以上script来自:ROS DDNS update script

修改一下

ednsuser

/

ednspass

/

ednshost

就可以使用了。

简单来说这个script就是利用ROS的

/tool fetch

来访问一个网页:

/dyndns/update?system=dyndns&hostname=xxx&myip=xxx

这个方法也是3322官方提供的,3322的server就可以从这个http请求中得到你的真实IP地址了。

然后就是来到ROS的

System

–>

Scheduler

,点击加号按钮:


本文标签: 得到 IP地址 拨号 网站 官方