ros对比ip动态域名更新

这篇文章由 在 星期四, 6 1月, 2011 发表。

Routeros中通过对比本地外网IP和域名解析IP来更新动态域名

  本脚本用ros中的计划任务功能,每10秒钟解析一次指定域名的IP地址,再对比本地要更新域名的接口,如果发生改变,则更新域名。

  雕虫小技 ,有需要的拿去。

 

 

 

  脚本和注解:

:if ( [/interface get [/interface pppoe-client find name=WAN] running ]=true ) do={ #如果在interface中存在已经连接上的pppoe接口,则执行下列语句。本列中pppoe接口名为WAN
  :global ipResolved ([:resolve home.awolf.net] . "/32") #解析home.awolf.net,存入全局变量ipResolved。
  :global ipLocal [ /ip address get [ /ip address find interface=WAN ] address ] #获得本地IP,即pppoe接口的IP,本例中为WAN接口IP
  :if ($ipLocal != $ipResolved) do={ #如果解析的IP和本地接口IP不一致,则执行下列语句
    :log info "WAN IP has been changed!" #记录日志:“WAN IP has been changed!”
    :log info ("Resolved IP : " . $ipResolved) #记录日志:“Resolved IP:解析的IP地址”
    :log info ("Local IP : " . $ipLocal) #记录日志:“Local IP:本地IP”
    /tool dns-update zone="awolf.net" name="home" key=密码 key-name=用户名 address=[:pick $ipLocal 0 ([:len $ipLocal] - 3)]
#更新域名
    :log info "All Done!" #记录日志“All Done!”
  }
} else={ #如果interface中没有已经连接的pppoe接口
  :log warning "Interface WAN is down!" #日志中提示“Interface WAN is down!”
}

>>完整脚本下载<<(点击查看,右键另存为下载)

  将上面完整脚本下载,在ros中执行,然后用Winbox到System->Scheduler中,双击ddns-update把其中的帐号密码和域名等信息改成你自己的,无特殊情况的情况下应该可以正常更新了。

  ros 3.30测试通过。

  有问题欢迎联系我。

9 Responses to “ros对比ip动态域名更新”

  1. 解释的很详细啊,不错。

  2. 如果想使用本脚本,请查找替换以下内容:
    查找“WAN”,替换成你自己外网的接口名;
    查找“home.awolf.net”,替换成你自己的域名;
    查找“awolf.net”,替换成你自己的域;
    查找“home”,替换成你自己的主机头。

  3. 提示···
    dns-update timeout“`

    • 你的ROS没填DNS,在Winbox中:IP->DNS->Settings,填写Primary DNS和Secondary DNS。
      或者用命令:
      /ip dns set primary-dns=202.96.64.68(dns1) secondary-dns=8.8.8.8(dns2)

  4. 你好,请您看看我根据您的脚本修改的,怎么不能更新呢?
    :if ( [/interface get [/interface pppoe-client find name=2电信] running ]=true ) do={
    :global ipResolved ([:resolve aaaaaa.dns04.com] . “/32”)
    :global ipLocal [ /ip address get [ /ip address find interface=2电信 ] address ]
    :if ($ipLocal != $ipResolved) do={
    :log info “WAN IP has been changed!”
    :log info (“Resolved IP : ” . $ipResolved)
    :log info (“Local IP : ” . $ipLocal)
    /tool dns-update zone=”dns04.com” name=”aaaaaa” key=123456 key-name=aaaaaa address=[:pick $ipLocal 0 ([:len $ipLocal] – 3)]

    :log info “All Done!”
    }
    } else={
    :log warning “Interface 2电信 is down!”
    }

    • 你单独执行
      /tool dns-update zone=”dns04.com” name=”aaaaaa” key=123456 key-name=aaaaaa address=”外网IP”
      这句话看看好使不?

  5. 这句话好使,我用的电信的网络,是不是电信搞得鬼?

    • 不是,还是脚本的问题,你用什么版本的ROS?

      • 原来是3.30现在换了5.20,都不好用


Leave a Reply