荒野无灯老毛子华硕padavan固件设置DNSPod DDNS的方法

2019-05-31
0评论
/
9199阅读
爱搜啊

为了方便以后远程管理路由器就打算配置下DDNS服务,在网络上检索了一下,发现都是些过时的教程(比如DNSPod的API的鉴权方式早就升级为Token了,帖子里面的还是早期的帐号密码),自己研究了一下,发现还是有一些需要注意的地方,和大家分享一下。

DNSPod DDNS的方法

DDNS 工作原理的分析

DDNS 的实现最根本的一点是当主机的 IP 地址发生变化的时候,实现 DNS 映射信息的及时更新,应用程序需要及时地获得这一信息,主要的方法可分为两大类:

一类是轮询机制,即:应用程序每隔一定的时间,去从查询主机当前的 IP 地址,并与之前的进行比较,从而判断网络地址是否发生了变化。显然,这种方法不仅效率低下,而且对每次查询 IP 地址的时间间隔很难得到一个折中的数值。

第二类方法是异步实现方式,即:每当主机的 IP 地址发生变化的时候,应用程序能够被及时地通知到。这的确是一个简单而又高效的方法,但与此同时,另一个问题又产生了,那就是:通知源又应该由谁来担当呢?显然,这是处于用户空间的应用程序无法胜任的。于是,我们想到了让内核来充当这一消息源。这样,在内核空间和用户空间之间就需要通过消息来进行通信了。

在 Linux 下用户空间与内核空间的信息交互方式有许多种,比如:软中断、系统调用、netlink 等等。关于这些通信方式的介绍以及其各自的优缺点并不在本文的讨论范围内,您可以自行查看参考资源。

在这许多种通信方式中,netlink 凭借其标准的 socket API、模块化实现、异步通信机制、多播机制等等多种优势,成为了内核与越来越多应用程序之间交互的主要方式。在 Linux 的内核中,已经为我们封装了使用 netlink 对特定网络状态变化进行消息通知的功能,这就是著名的 rtnetlink。有关 netlink 在内核空间实现的详细代码以及其 API 参数的介绍,您可以自行查看参考资源,本文在此不作过多的赘述。

本文讨论的重点是针对 DDNS 这一特定的应用,演示 rtnetlink 检测到 IP 地址发生了变化、并将消息告知用户空间的应用程序的整个过程,以及应用程序利用 netlink 套接字接收消息、并告知 DNS 服务器的实现方法。

荒野无灯老毛子华硕padavan固件设置DDNS的方法

首先荒野无灯大神的固件里面已经自带了DNSPod的插件(固件版本最好更新到最新版),如果遇到路由器没有自带DNSPod的插件就自己检索下其他教程写个脚本吧。

服务器这里当然不用说,选择”www.dnspod.cn”这一项。选择好以后点击后面的“DDNS 链路”进入DNSPod的API申请界面,创建一个”API Token”,Tokens名称随意。

DNSPod DDNS的方法

创建好以后就把ID填写到”API Token ID”这一栏,Token自然就是填写到”API Token”这一栏,HTTPS连接这一栏保持默认即可。

接下来是最重要的主机名称,这里实际上要填写的就是你需要的指向你的IP的子域名,这个不多解释了,关键在于这个设置是不会自动帮你创建的,所以你还得先到域名控制台那里手动先创建一个xxx的A记录,指向IP可以随便填,后面程序会自动更新为你的本地IP。创建好以后就完整的填写到“主机名称”里面即可,格式如”xxx.baidu.com”,然后把DDNS更新周期改成”12 hours”,最后点击应用本页面设置即可。

打开系统日志,可以看到已经成功了。

DNSPod DDNS的方法

不放心的话去域名的控制台看看你之前创建的”xxx”的A记录指向的IP是不是已经变成你的本地IP了。


本站附件分享,如果附件失效,可以去找找看

诚通网盘附件百度网盘附件


标签: padavan DDNS
于2019-05-31发布