该文章所介绍内容的脚本已上传到Github,可以访问下载使用:点击访问

前面有发过一篇基于DNSPod和ArDNSPod的动态域名解析的分享,分享中的动态解析在平时的运营商网络的公网中是十分好用的。
但是最近也遇到了两个问题:

2023-5-15更新 目前ifconfig.io无法使用。ifconfig.me无法返回cernet
ip,博主会在发现新的方法后第一时间更新。
2023-7-11更新,有新的方法,已更新文章,请继续往下阅读
  1. 一个是希望能够定时接到动态解析的情况,不管是邮箱还是推送;
  2. 其次就是在我尝试动态太解析教育网的IP地址时,ArDNSPod识别的IP地址一直是广域网IP,无法识别到教育网的层级。

于是尝试了一下解决这两个问题,得出了下面的方案。

使用开源项目ntfy进行推送

Ntfy是github上的一个开源推送项目,使用非常方便。可以直接使用ntfy.sh的服务器进行推送,也可以在自己的服务器上部署ntfy代码通过自己的服务器推送。可以推动到移动端app或者web端网页。
那么我是直接用的ntfy.sh的服务器进行推送。大概是下面的流程。
1.在手机上下载一个ntfy的app,点击右上角加号创建一个topic(话题),这个话题可以自己命名,可以命得复杂一点,因为没有密码,别人加入也能接到你的通知。
ntfyapp
话题创建成功后,来到你的服务器命令行,输入一下命令即可推送消息

curl -d "你要推送的内容" ntfy.sh/你的话题名字

执行后,刷新手机的话题,就可以看到发过来的通知。
那么我在使用的时候,通过shell脚本和cron定时任务定时推送当前的IP信息。脚本内容比较简单。

vim puship.sh
Ipv4=`curl ifconfig.io`
curl -d “当前该主机的IP地址为$ipv4” ntfy.sh/话题名字

保存文件,执行bash puship.sh即可收到通知。
ntfyapp1

教育网IP的解析

在使用ArDNSPod对教育网IP进行解析的时候可以发现,ArDNSPod一直识别到城域网的IP地址,无法识别到教育网的IP,导致DNSPod不能正确解析。可以看到下面的的解析地址时公网的地址,不是carnet教育网。
2023-02-15T17:59:39.png
但是在尝试中我发现,通过ifconfig.io查询ip时,是可以识别到教育网的IP地址的。
教育网IP地址
然后在逛社区的时候看到了修改版的ArDNSPod:https://github.com/imki911/ArDNSPod
这个版本可以更方便得选择解析的IP类型,并且提供了多种获取ipv4地址的路径。在尝试了代码中的几种路径后,将其ddnspod.sh代码如图所示部分进行如下修改可以实现获取到教育网IP。首先将其给的几种获取IP的wget方式全部注释,然后在后面加一行

curl ifconfig.io | grep -E -o '([0-9]+\.){3}[0-9]+' | head -n1 | cut -d' ' -f1

2023年7月11号更新,加的这一行不要用上麦拿得到,加下面这一句:
curl -s http://ip.ustc.edu.cn/myip.php | jq -r .myip

随后将else下一行的竖线前面的内容,如图画圈部分。替换为

curl -k -s "http://ifconfig.io" 
2023年7月11号更新,替换成下面这一句
curl -s http://ip.ustc.edu.cn/myip.php | jq -r .myip

在做好这些设置后,根据使用教程设置好dns.conf中的ID、Token以及域名,尝试运行一下,此时应该已经可以正常解析到教育网IP了。
ddnspod.sh修改
需要注意的是,解析到教育网IP并不是让任何网络环境都能访问。必须同样在教育网内,才能访问到相关资源。博主这边也只是需要远程连接到用于计算的机器设置的动态解析,以通过域名的形式ssh到主机进行工作和存储。