在个人PC上搭建DDNS
在个人PC上搭建DDNS
最近沉迷于Minecraft,为了跟朋友一起玩耍,搞了个服务端进行托管;起初是在自己网站上的云服务器托管,但是服务器在海外,延迟太高(ping的响应在260ms左右),于是就将服务端迁移到了公益服务器(简幻欢);不过公益服务器需要靠每天签到获取积分来维持,为此我还特地定了个闹钟来签到;随着偶然间,我发现了自己家里的宽带是有公网IPV6地址,于是又将服务端迁回了自己的PC上,尝试了下是否公网可以访问到我PC上的Minecraft服务,也是顺利的托管上了。运营商提供的公网IPV6变的实在是太频繁了,还是使用DDNS来将域名绑定在动态IP上一劳永逸吧(没招了,谁想得到一天能变2次)
1. DDNS简介
DDNS,动态域名系统(Dynamic Domain Name System),它是在DNS的基础上发展起来的一种服务,用来解决动态IP地址的问题
在家庭或者一些特殊的网络环境中,运营商不会给提供静态IP地址,而是提供动态IP地址,这就意味着你的IP地址可能经常变动,一旦IP改变,那么DNS服务器解析自然就会失败,这样就没办法通过域名访问到服务器了
那怎么办呢?DDNS来帮你!在DDNS客户端中配置好域名和IP的映射关系后,它会监控你的IP地址,一旦发现它变化了,就立刻通知DDNS服务器,最后DNS服务器会从DDNS服务器拿到映射关系,所以无论你的IP地址如何变动,通过你的DDNS域名可以随时访问家里的设备
2. 个人PC上搭建DDNS
很多教程提供的都是基于服务器或者路由器固件的DDNS解决方案,之前因为没找着能在个人PC(Windows)上搭建的DDNS就懒得搞;今天上搜索引擎搜索发现了一个Github项目,完全契合我的需要https://github.com/NewFuture/DDNS
根据作者描述:他可以自动更新 DNS 解析到本机 IP 地址,支持 IPv4/IPv6,内网/公网 IP,自动创建 DNS 记录
我需要的就是描述的第一个功能
具体的安装步骤作者也是给的很详细了,可以直接参考Readme
上面打不开就开下面
https://github.com/NewFuture/DDNS/blob/master/README.md
这边主要讲下我个人搭建遇到的一些坑点
2.1 出现AttributeError: module ‘ddns.provider’ has no attribute ‘tencentcloud’
起初我用的是项目的稳定版本v4.0.2,使用的时候貌似还不支持识别配置文件中dns字段值为tencentcloud;后续使用PIP安装,补充tencentcloud-sdk-python依赖也是无法解决;
解决方法:直接使用最新版本的NewFuture/DDNS,实测v4.1.0-beta4版本可正常使用
2.2 绑定的IPV6并不是所期望的值
我自己的PC上,使用ipconfig命令,在对应的网卡适配器中有以下值
1  | 以太网适配器 以太网:  | 
NewFuture/DDNS默认绑定到域名的是临时 IPv6 地址的值,我是想绑定IPV6地址的值,NewFuture/DDNS好像并没直接给出配置选项,不过我们可以通过自定义命令来获取,这边提供一个获取IPV6地址值的powershell命令(在cmd中运行)
1  | powershell -Command "(ipconfig | Select-String 'IPv6 地址' | Select-Object -First 1).Line.Substring((ipconfig | Select-String 'IPv6 地址' | Select-Object -First 1).Line.IndexOf(':') + 2)"  | 
填入配置文件的时候记得将双引号转义
2.3 配置文件参考(腾讯云、IPV6)
1  | {  | 
NewFuture/DDNS运行命令如下
1  | ddns.exe -c config.json  | 
还有个定时任务,我就不搞了,有变更我自个跑一下就OK(具体搭建可以参考官方文档,有内置的定时任务模块,也有Windows平台的bat,很简单)