V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
qile1
V2EX  ›  问与答

有没有开源的类似动态域名实现项目,比如使用 js 和 html 利用服务器自动显示动态域名。

  •  
  •   qile1 · 2016-02-14 20:41:31 +08:00 · 3420 次点击
    这是一个创建于 2996 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题:
    我现在家里是 adsl 拨号,每次断网后通过动态域名自动更新对应 ip ,有时候手动重新拨号后不能马上访问家里的电脑。
    我有自己的 vps 服务器,是否可以在上面放一个网页,家里通过脚本自动更新 ip 到 vps 服务器,如 post 地址为
    http://abc.com/?wlan1IP=123.12.12.11&key=dsfarewtert34d7&user=3234234
    当我访问 http://abc.com/?key=dsfarewtwerert34d7&user=3234232234
    显示最近一次更新 ip 及线路一的 ip 是 123.12.12.11

    我现在实现方式是使用 ddns 利用 ros 服务器自动更新 ip ,每次调试时一断开 ip 再次连接得等 10 多分钟,如果 ip 更新太频繁会导致 ddns 服务商不解析,而且从 ros 监测到多线路外网 ip 地址变化到更新 dns 地址,在到国内更新 dns 地址,然后收到清楚本机 dns 缓存是很耗时麻烦的事情,
    而且需要申请二级域名,如果可以直接可以直接通过访问
    http://vpshostIP/ToOA 直接转跳到内网 oa 就更好了
    特上来看看有没有现成的方法,没有就自己在造个轮子?

    12 条回复    2016-02-15 10:41:59 +08:00
    abelyao
        1
    abelyao  
       2016-02-14 20:53:01 +08:00
    DNSPod 有动态域名解析的 API ,直接调用就可以:
    https://www.dnspod.cn/docs/records.html#dns

    如果使用其它的域名解析商,也可以看看有没有相应的文档;

    另外如果只是要连接家里的 IP 地址,有太多现成的方案了… 花生壳之类的都是
    bdbai
        2
    bdbai  
       2016-02-14 20:59:09 +08:00 via iPhone
    DNSPod 参照 /t/249694 一楼的方案,我现在也在用。还是楼上那位弟兄发的来着。
    terence4444
        3
    terence4444  
       2016-02-14 21:08:20 +08:00
    我正在用的是这家: http://www.pubyun.com/
    Windows 跑了个计划任务,每 5 分钟执行一次以下 Python 代码:

    p_url = """http://members.3322.net/dyndns/update?system=dyndns&hostname=SAMPLE.f3322.net"""
    base64string = base64.encodestring('%s:%s' % ('USERNAME', 'PASSWORD')).replace('\n', '')
    opener = urllib2.build_opener()
    req = urllib2.Request(p_url)
    req.add_header("Authorization", "Basic %s" % base64string)
    rst = opener.open(req, timeout=10)
    print rst

    另外我还加了 Pushbullet 每次 IP 变动的时候主动通知功能,供参考。
    花生壳也能用,但是感觉花生壳延迟比较大,官方半屏蔽了 POST 的方法(不知道是不是我没搞好),要下载他们的客户端。
    qile1
        4
    qile1  
    OP
       2016-02-14 21:11:19 +08:00   ❤️ 1
    dnspod 时效性不行,我刚断开外网,在自动连接上 ip 马上变,但是得等 dns 更新后才是最新的 ip 。
    我现在也是用的 dnspod 方案,主要是更新不及时,安装花生壳这个方案及使用 teamview 都挺好,但是当我需要在路由器 ros 上配置就没法实现了。只要是如何低成本快速更新自己的 ip 地址,
    现在可以申请免费 php 空间还是有一些的,然后放一个 php 文件,让路由每 10 秒定时去 post ,而且可以不用注册二级域名(当然注册了更方便),基本可以做到 10 秒延迟,而免费的 dns 不可能让用户 10 秒更新,我记得国外那么比较出名的免费 ddns 更新是限制 15 分钟更新一次的
    messyidea
        5
    messyidea  
       2016-02-14 21:18:24 +08:00
    我记得 openwrt 那个 hotplug 的文件夹里面的脚本会在网络状态发生变化时执行。直接把 ddns 的脚本放在哪里就行了。。一般连上网之后 ip 是不会变的吧。
    master
        6
    master  
       2016-02-14 21:21:20 +08:00
    @qile1 DNSPod 的 TTL 是能设置成 10 的
    terence4444
        7
    terence4444  
       2016-02-14 21:50:31 +08:00
    @qile1 SAE 上可以搭一个 Python 或 PHP 项目,家里 PC 或者 路由 POST IP 到 SAE 存在 Storage 里,然后请求这个 Storage 的内容就可以了。
    abelyao
        8
    abelyao  
       2016-02-14 22:23:57 +08:00
    @qile1 通过 DDNS 更新的域名, TTL 自动是 10 ,免费的也可以。
    xenme
        9
    xenme  
       2016-02-14 22:43:25 +08:00 via iPhone
    我是 dnspodcname 到 ros 域名, ros 脚本每分钟更新一次,跑到现在快
    快两年了,运行一直良好,延迟也就一两分钟。
    qile1
        10
    qile1  
    OP
       2016-02-15 01:34:53 +08:00
    @xenme 我也是 ros 使用,我现在是多线路,有问题远程处理,有时候需要重新拨号,一断开,得等一会再连接,虽然使用邮箱的短信提醒可以通过手机通知,但是美中不足的是手动断开的话,不能及时得到外网 ip ,得等很长一段时间
    clanned
        11
    clanned  
       2016-02-15 01:41:10 +08:00 via Android
    之前用 PHP 写了个用了很久,后来就干脆用 ddns 服务了,参考 https://github.com/xdtianyu/scripts/tree/master/ddns
    xylophone21
        12
    xylophone21  
       2016-02-15 10:41:59 +08:00
    你的思路是可行的,我这边也有个 ROS 路由,已经这样跑了 2 年多了。

    服务端因为太简单了就没找现成的方案,随便用 python 写一个挂着 SAE 上,不到 200 行,基本没有消耗,也完全不用考虑优化。

    ROS 上用脚本定时检查本机 IP ,与上次 post 的不同则从重新 post ,都是本机运算,时效可以做到很高,不过我设置的是 1 分钟。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1505 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 17:02 · PVG 01:02 · LAX 10:02 · JFK 13:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.