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,然后结合我上面的脚本,把每个京东的路由器都设置一个域名,部署在家里的其他设备的,方便我们远程访问。其实很简单的,等有时间可以分享一下。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

爱薅羊毛的穷耗子
其实还可以做个判断,如果改变了在用消息推送发个消息推送
校验提示文案
芳心超级纵火犯
校验提示文案
野牛牛
校验提示文案
conwin
校验提示文案
yu2048
校验提示文案
XFlower
校验提示文案
槑神
校验提示文案
想买点啥
校验提示文案
想买点啥
校验提示文案
槑神
校验提示文案
野牛牛
校验提示文案
芳心超级纵火犯
校验提示文案
XFlower
校验提示文案
yu2048
校验提示文案
爱薅羊毛的穷耗子
其实还可以做个判断,如果改变了在用消息推送发个消息推送
校验提示文案
conwin
校验提示文案