DDNS脚本化|免docker|免插件|适合群晖nas等linux
首先写这篇文章的主要想法是看到很多值友写的DDNS服务都是群晖里下载插件,或者拉取docker来跑的服务,这样就有一些局限。一般只适用于群晖等nas设备,其他的设备由于没有插件或者docker功能无法使用。下面的方法适用于基本所有的linux设备,甚至是windows设备。
首先是思路还是一样的,都是先注册一个免费域名,然后把动态的公网IPv4/IPv6绑定到域名上,一般设置5min执行一次即可。
一、注册域名
首先在dynv6官网(自行查找)注册一个账号,点击My Zones后,点击Create new Zone,跳转设置。如图:
点击创建之后选择一个你喜欢的域名,填写一个你喜欢的name,ipv4和ipv6留空不用写,点击Creat Zone。如图:

之后的页面在Instructions标签页上有2个重要的参数。如图。

1、完整域名:你自己填写的完整域名。如图中1处。
2、password:密码,保存好,勿泄漏。
二、bash脚本
脚本命令如下:
#!/bin/bash
# dynv6地址 https://dynv6.com/
# dynv6用户信息
# 个人域名地址
domains='XXXXX.dns.army'
#token信息
token='XE181JxgiK9rgXXXXXXXXXX'
# 默认的IP地址
#ipv4_old='153.3.1.1'
#ipv6_old='2408:823c:1111:111::111'
# 获取IP地址的接口
ipv4_api='https://ip.3322.net'
#ipv4_api='https://myip4.ipip.net'
#ipv4_api='https://ddns.oray.com/checkip'
ipv6_api='https://speed.neu6.edu.cn/getIP.php'
#ipv6_api='https://v6.ident.me'
#ipv6_api='https://myip6.ipip.net'
# 获取设备当前的公网IP
ipv4_new=`curl "${ipv4_api}" 2> /dev/null `
ipv6_new=`curl "${ipv6_api}" 2> /dev/null `
echo "当前IPV4:${ipv4_new}"
echo "当前IPV6:${ipv6_new}"
# 更新公网IP地址
curl "http://dynv6.com/api/update?hostname=${domains}&token=${token}&ipv4=${ipv4_new}&ipv6prefix=${ipv6_new}" &> /dev/null
PS:上面脚本需要把domains和token替换成上面自己的参数,其他不变。
三、部署脚本
1、群晖可以部署在计划任务中。设置每5min执行一次。只展示时间配置,如图:

2、其他linux一般都有crontab的计划任务,把脚本保存到sh脚本文件中,之后使用crontab -e的命令设置好计划任务即可。例如:
*/5 * * * * bash /home/smzdm/DDNS_UP.sh
PS:不同版本的linux中crontab服务各有不同,自己查询使用方法。甚至现在Windows也可以支持。
3、特殊的小型linux无crontab服务,可以写成for的死循环,sleep 5min。然后设置成开机自启动。
四、优点
该种方法优点还是很多的:
1、不需要额外的docker服务或者群晖插件服务,crontab服务普遍存在于linux发行版中。广泛适用于家中的任何设备。
2、域名注册方便、免费、不限量,域名更新时间查看方便调试。
3、可以配合WxPusher进行微信消息推送,有时间再更新。
4、同时支持IPv4和IPv6,前提是自己开通IPv6,并且拥有IPv4的公网IP。
五、延申
现在京东云路由器APP都支持显示公网IPv4、公网IPv6。可以抓取京东的cookie,然后结合我上面的脚本,把每个京东的路由器都设置一个域名,部署在家里的其他设备的,方便我们远程访问。其实很简单的,等有时间可以分享一下。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

其实还可以做个判断,如果改变了在用消息推送发个消息推送
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
其实还可以做个判断,如果改变了在用消息推送发个消息推送
校验提示文案
校验提示文案