V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
OpenWrt 是一个专门面向嵌入式设备的 Linux 发行版。你可以将 OpenWrt 支持的型号的嵌入式设备,比如各种路由器上的系统,换成一个有更多可能性可以折腾的 Linux 系统。
OpenWrt 官方网站
mind3x
V2EX  ›  OpenWrt

写了个脚本在 openwrt 上使用 DNSPod 的动态域名

  •  
  •   mind3x · 2015-07-28 11:27:24 +08:00 · 891 次点击
    这是一个创建于 3440 天前的主题,其中的信息可能已经有所发展或是发生改变。
    OpenWRT的ddns更新都是通过发HTTP GET请求,在URL里嵌入账号和域名信息,例如 http://[USERNAME]:[PASSWORD]@members.dyndns.org/nic/update?hostname=[DOMAIN]&myip=[IP]

    而DNSPod的API基于HTTP POST,不能直接在openwrt上配置。虽然已经有很多现成的第三方实现,可以定时检查IP并调用DNSPod API来更新域名记录,但我还是希望能利用OpenWRT内建的ddns支持,这样WAN重连时域名能立刻更新。

    所以写了个简单的脚本

    使用步骤:

    1. 确认已经在DNSPod上你的域名下面建好了要用作动态域名的子域名
    2. 路由上用opkg安装python和python-openssl
    3. 将上面的脚本保存到路由上,确认 chmod +x
    4. 编辑脚本,提供你自己的DNSPod账号及域名信息 (注意 SUB_DOMAIN 只写二级域名,不包含主域名)
    5. 在路由上试运行dnspod-ddns.py,如果账号和域名信息正确,假设你的DOMAIN是suchwow.com,SUB_DOMAIN是doge,应该有如下输出:

    DNSPod account: your@email
    Domain: "http://suchwow.com" id 104xyzabc
    Sub domain: "doge.suchwow.com" id 11xyzabcde

    Sat Jul 25 12:28:51 2015 Server Starts - 0.0.0.0:2080

    6. 用浏览器或curl访问 http://你的路由IP:2080,应该有类似如下输出:
    {"status":{"code":"1","message":"Action completed successful","created_at":"2015-07-25 12:34:44"},"record":{"id": 11xyzabcde,"name":"doge","value":"your.public.ip.addr"}}
    这表示动态域名已经成功更新。
    7. 在路由上^C中止脚本,改用 dnspod-ddns.py & 放到后台运行
    8. 修改/etc/rc.local (也可以在LuCI里改),在exit 0前加入一行:
    /path/to/dnspod-ddns.py &

    9. 在LuCI里配置Dynamic DNS,Service选--Custom--,Update URL写http://localhost:2080,Save & Apply即可。
    3 条回复    2015-07-28 15:29:33 +08:00
    LazyZhu
        1
    LazyZhu  
       2015-07-28 12:02:38 +08:00 via Android
    有shell版,lua版
    bianzhifu
        2
    bianzhifu  
       2015-07-28 14:44:43 +08:00
    @mind3x 给你一个成熟的lua版本 不需要安装python wan重连可以更新
    https://github.com/rssnsj/network-feeds/tree/master/dnspod-utils
    mind3x
        3
    mind3x  
    OP
       2015-07-28 15:29:33 +08:00
    @bianzhifu 现有的实现我基本上找过一圈,自己写的原因是想利用已有的openwrt ddns,在LuCI里直接配置,而不是自己去做hotplug
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5258 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 05:46 · PVG 13:46 · LAX 21:46 · JFK 00:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.