有没有开源的类似动态域名实现项目,比如使用 js 和 html 利用服务器自动显示动态域名。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qile1
V2EX    问与答

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

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

    如题:
    我现在家里是 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     Solana     2862 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 14:19 PVG 22:19 LAX 07:19 JFK 10:19
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86