• NameSilo的DDNS动态域名解析脚本





    一个实时检测IP变化并更新DNS状态的工具,适用于在NameSilo购买的域名,如果你的域名是在其他商家购买的,修改为商家的api就行。GitHub项目地址:

    https://github.com/Charles94jp/NameSilo-DDNS

    我使用的语言是Java,其实用脚本写更方便,shell、powershell、python都可以

    2021-12-16 更新:此项目已用python3重构,可放心食用



    一、背景

    目前运营商给家庭宽带的IP都是动态的,庆幸的是虽然IP地址不固定,但分配到家庭路由器的却是一个实实在在的公网IP,所以我们只需使用路由器NAT映射即可在公网访问家庭的设备。我们路由器映射22端口就能远程家里的linux,映射445+3389端口就能用win10自带远程桌面远程家里的windows。如下图

    为解决公网IP的变动,可以购买一个域名,使用DDNS(Dynamic Domain Name Server,动态域名服务)将域名解析到宽带的IP。这样就可以在家搭建各种服务并通过访问固定的域名来访问,而无需租用昂贵的公网服务器

    想实现这个目的,你需要购买一个域名,且有一台一直运行的电脑来运行此DDNS程序



    1.1 域名商推荐

    域名商除了给我们一个域名,还负责给我们提供DNS解析,绑定域名到对应IP

    我这里推荐NameSilo,第一个原因是他不需要备案,而阿里云、腾讯云等国内域名商是要走备案程序的,比较麻烦,博主前几年备案记得是需要在收到阿里云寄给我的幕布后,拍手持身份证照片,然后才能备案,域名过期后还要注销备案,不然别人拿你域名去干坏事...

    二是他有api开放,能通过api来更新域名状态

    三是他虽是国外域名商,但是可以通过微信支付,无需境外银行卡



    二、简介

    本程序通过访问 https://202020.ip138.com/ 获取家庭宽带的公网IP地址,通过 https://www.namesilo.com/api/ 来查询和更新DNS状态。如下图



    三、配置

    为了运行这个程序,你需要安装Java,推荐jdk8。首次运行之前你需要配置_conf.txt文件,填写你从NameSilo获取的api key,以及你的域名。还有一项可选的配置——程序去检查IP是否变动的频率。



    四、运行

    Windows :直接双击bat文件

    Linux       :chmod +x DDNS && ./DDNS start



    五、在开机时自动启动

    Windows :将vbs文件加入策略组

    Linux       :注册为服务,以CentOS7为例,首先vi DDNS在其中配置好java环境变量以及当前脚本文件、jar包所在目录,接着拷贝文件并注册服务,接着:

    chmod +x DDNS
    cp DDNS /etc/init.d/DDNS
    chkconfig --add /etc/init.d/DDNS
    # 查看服务是否注册成功
    chkconfig --list
    # reboot即可重启,检验是否自启成功
    # 服务操作
    service DDNS status  # 查看状态
    service DDNS start   # 启动
    service DDNS stop    # 停止
    service DDNS restart # 重启
    



    六、其他DDNS方案推荐

    都是用到了curl发送请求,把响应保存到文件中 ,再用脚本处理字符串。单个文件就能解决,不过脚本语言特别是Windows的batch语法不是很友好,一般做运维的可能比较熟悉脚本语言。

    Windows :https://www.v2ex.com/t/274392
    Linux       :https://github.com/pztop/namesilo_ddns

    还有一个Windows powershell脚本实现的

    https://www.ctrol.cn/post/freesource/domain-host/05-25-cartev-4719.html



  • 相关阅读:
    进程控制(二)
    进程控制(一)
    python的signal
    python的logging模块
    python守护进程
    C语言关键字、标识符和注释
    青春代码
    冒泡排序 js
    数组
    js 运算符
  • 原文地址:https://www.cnblogs.com/yunmuq/p/14119408.html
Copyright © 2020-2023  润新知