一个实时检测IP变化并更新DNS状态的工具,适用于在NameSilo购买的域名。可以在家搭建一个公网服务器。目前运营商给家庭宽带的IP都是动态的,庆幸的是虽然IP地址不固定,但是却是一个公网IP,所以我们可以购买一个域名,使用动态域名解析技术将域名解析到宽带的IP。

一个实时检测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

版权声明:本文为yunmuq原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/yunmuq/p/14119408.html