• Openwrt上通过ddns-scripts实现dnspod域名的基于ipv6的ddns

    上一篇文章中,我们通过ddns-scripts和一个外部的.php文件,实现了dnspod上的ipv4的ddns功能。

    最近有了ipv6的ddns的需求,于是在上文的基础上小改了一下,现在dnspod上的ipv6的ddns也没问题了。

     

    How?

    1.在上一篇文章的基础上,修改了一下dnspodupdate.php中的“’record_type’=>’A”为“’record_type’=>’AAAA’”,也可以直接下载:dnspodupdate6.zip,并上传到一个外网的空间上。

    2.修改路由器里的/usr/lib/ddns/dynamic_dns_functions.sh,把位于约75行的

    current_ip=$(ifconfig $ip_interface | grep -o 'inet addr:[0-9.]*' | grep -o "$ip_regex")
    

    改为

    current_ip=$(ifconfig $ip_interface | grep 'Global' | grep -o 'addr: [0-9a-f:]*' | cut -c7-)
    #我的grep和cut是现学现卖的,有没有更好的写法?
    

    不过这样一来,以“接口”来获取ip的就只能获取ipv6的地址了,如果要获取ipv4的地址,“”就选“网络”吧。

    3.打开/usr/lib/ddns/services,添加一行

    "dnspod.com_ipv6" "http://www.xxxxx.com/api/dnspodupdate6.php?username=[USERNAME]&password=[PASSWORD]&domain=[DOMAIN]&myip=[IP]"
    #注意这里的http://www.xxxxx.com/要改
    

    4.更改/etc/config/ddns的配置,service_name选dnspod.com_ipv6,再填上各种参数,这样就完成了~

  • OpenWrt通过ddns-scripts使用dnspod的动态域名解析(ddns)功能

    最近想实现在openwrt上的ddns功能,百度google找来找去,多数都是用一个bash脚本来实现的。无奈都要求安装curl或者是wget,其依赖包libopenssl体积庞大,本人路由4M的小ROM实在装不起。

    终于,我找到了http://blog.biner.me/article/OpenWrt-use-dnspod-Dynamic-DNS-ddns.html此文,轻松解决了本问题。

    步骤很简单:

    1. 注册dnspod;
    2. 首先你得要有一个顶级域名,没有的话可以去申请个免费的(例如.tk后缀什么的);
    3. 然后你要有一个支持php的空间,实在没有可以用上文提到的博主提供的接口地址(当然也可以用我提供的,只需把下文的xxx改为7forz即可);
    4. 下载这个php文件:dnspodupdate.zip
    5. 把该文件放在外网可以访问的空间里,比如http://www.xxx.com/api/dnspodupdate.php
    6. 在你的openwrt路由上安装ddns-scripts,有luci的装luci-app-ddns更方便;
    7. 登录路由,打开/usr/lib/ddns/services,添加
      "dnspod.com" "http://www.xxx.com/api/dnspodupdate.php?username=[USERNAME]&password=[PASSWORD]&domain=[DOMAIN]&myip=[IP]"
    8. 登录路由器管理界面,服务->动态DNS,服务提供商里会出现dnspod.com选项。如果没有luci,请修改/etc/config/ddns文件以达到同样效果。
      主机名:二级域名@顶级域名(比如你的二级域名是abc.xxx.com,那么该处就填写abc@xxx.com)(这样填luci可能不给保存,就手动改/etc/config/ddns文件吧)
      用户名:就是你的dnspod账户
      密码:就是你的dnspod密码
      网络:选wan
      点“保存并应用”,最好开启定时更新,间隔时间不要太短,5分钟就好。
    9. 重启路由就可以测试效果了。如果不想重启,根据openwrt的wiki,还可以执行
    ACTION=ifup INTERFACE=wan /sbin/hotplug-call iface

    来测试。