返回列表 發帖

【RouterOS】——Dynamic DNS

本帖最後由 角色 於 2013-3-9 21:05 編輯

Sources of information: http://wiki.mikrotik.com/wiki/Dy ... e_Script_for_dynDNS

for example: DynDNS

1) add a script called dynDNS:
  1. # Define User Variables
  2. :global ddnsuser "DYNDNSUSER"
  3. :global ddnspass "DYNDNSPASS"
  4. :global ddnshost "DYNDNSHOST"

  5. # Define Global Variables
  6. :global ddnsip
  7. :global ddnslastip
  8. :if ([ :typeof $ddnslastip ] = nil ) do={ :global ddnslastip "0" }

  9. :global ddnsinterface
  10. :global ddnssystem ("mt-" . [/system package get system version] )

  11. # Define Local Variables
  12. :local int

  13. # Loop thru interfaces and look for ones containing
  14. # default gateways without routing-marks
  15. :foreach int in=[/ip route find dst-address=0.0.0.0/0 active=yes ] do={
  16.   :if ([:typeof [/ip route get $int routing-mark ]] != str ) do={
  17.      :global ddnsinterface [/ip route get $int interface]
  18.   }
  19. }

  20. # Grab the current IP address on that interface.
  21. :global ddnsip [ /ip address get [/ip address find interface=$ddnsinterface ] address ]

  22. # Did we get an IP address to compare?
  23. :if ([ :typeof $ddnsip ] = nil ) do={
  24.    :log info ("DynDNS: No ip address present on " . $ddnsinterface . ", please check.")
  25. } else={
  26.   :if ($ddnsip != $ddnslastip) do={
  27.     :log info "DynDNS: Sending UPDATE!"
  28.     :local str "/nic/update?hostname=$ddnshost&myip=$ddnsip&wildcard=NOCHG&mx=NOCHG&backmx=NOCHG"
  29.     /tool fetch address=members.dyndns.org src-path=$str mode=http user=$ddnsuser \
  30.         password=$ddnspass dst-path=("/DynDNS.".$ddnshost)
  31.     :delay 1
  32.     :local str [/file find name="DynDNS.$ddnshost"];
  33.     /file remove $str
  34.     :global ddnslastip $ddnsip
  35.   }
  36. }
複製代碼
2) Add a scheduler entry to run every minute
  1. /system scheduler add name=dynDNS interval=00:01 on-event="/system script run dynDns\r\n"
複製代碼

是否有人用过MikroTik的DNS呢?怎样用都不成功。

TOP

如果我用Version 3.x, 而bubblestar就用Version 5.x。而我的routerOS就是5.22,那么应该用Version 5.x比较适合。

TOP

如果我用Version 3.x, 而bubblestar就用Version 5.x。而我的routerOS就是5.22,那么应该用Version 5.x比较适合。

TOP

回復 3# bubblestar

都是不能update DDNS。

怎样加呢?

1) 用edit把script做成一个DynDNS-5x.txt,然后ftp到router。
2) 在router, /file print能看到DynDNS-5x.txt, 输入适当的credential
3) /system add script DynDNS-5x.txt,
4)  /system run 0 (where 0 is given by /system script print)

TOP

现在还没有成功,因为没有时间。

TOP

本帖最後由 角色 於 2013-3-28 21:47 編輯

回復 3# bubblestar

bubblestar兄这个也可以。但是是取最前面的WAN口的IP (WAN 1 IP),而不是Routerbaord的WAN IP (WAN 2 IP)。如果只有Routerboard自己,那么最前的WAN IP就是RouterBoard的WAN IP。这个script使用RouterBoard在最前面。

还有这个都是一样,第一先建立一个文件,把新的IP address记下来,下次的IP个这个IP不一样,就做一次update。如果一样就是bypass,根据不去dyndns的server check一下,是否与本身的IP address是一样?如果一样,不update,不一样就update。

图一:多个Routers


图二:只有一个RB
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

TOP

刚才再看这张thread,问题是那个script,放在哪里呢?

TOP

不是放在Files?

TOP

按照#6帖的信息,然后manual行了一次都不行。

TOP

我用的不是DYNDNS主要domain,而是它的sub-domain,所以script需要某种改变才可以。

TOP

回復 12# bky16

我怎样做都不行!真的纳闷!

TOP

原来的我加的script从来都没有excute过,因为我在log看不到logged messagess。

TOP

终于把Dynamic DNS搞好了。主要是怎样execute问题。

1. 先用Windows Editor把script copied 到Editor里,然后save a file name. Extension可以用什么都可以,一般txt,或者rsc。
2. 怎样execute是一个非常重要的问题,就是用
  1. /import file=script.rsc
複製代碼

TOP

本帖最後由 角色 於 2013-9-8 21:31 編輯

#1帖的code,出现error message
  1. [admin@MikroTik] > /import file-name=dyndns-1.rsc
  2. Opening script file dyndns-1.rsc

  3. Script file loaded successfullyinput does not match any value of value-name
  4. interrupted
  5. [admin@MikroTik] >
複製代碼

TOP

返回列表