分享一个更新 ddns ipv6 的脚本!

2020-09-24 15:31:26 +08:00
 flynaj

刚才配置树梅派的 ddns 配置了半天发现它系统里面的 inadyn 版本太老。其它感觉又太大。无奈自己写了个脚本,分享给大家。我用的是 dns.he.net ,五年前就只有它支持 ipv6,改 curl 后面的参数就可以适应其它 ddns 了。

*/10 * * * * /opt/dns.he.sh 加入 crotab 10 分钟运行一次

#!/bin/bash
export LastIP=`/bin/cat /var/log/ipv6addr`
export NowIP=`/bin/ip -o  -6 addr show scope global  | /bin/sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d'`
if [ -z "$NowIP" ]
then
        echo `date` 没有 IPV6 !退出!>> /var/log/dns.he.log
        exit
fi
if [ "$NowIP" != "$LastIP" ]
then
        echo -n "$NowIP" > /var/log/ipv6addr
        echo `date` "IP 改变,更新 Dns..." >> /var/log/dns.he.log
        echo -n `date` [  >> /var/log/dns.he.log
        #下面一行代码是更新 dns,请根据自己情况修改
        curl -6  -k "https://dyn.dns.he.net/nic/update" -d "hostname=你的域名" -d "password=你的密码" >> /var/log/dns.he.log
        echo ] >>/var/log/dns.he.log
else
        echo `date` "IP 没有变化..." >> /var/log/dns.he.log
fi
3112 次点击
所在节点    分享创造
5 条回复
axiauk
2020-10-06 06:39:45 +08:00
同样用 he.net 。看现在已经支持 inadyn 了,正在摸索。
这个 IPV6 的脚本不错,收藏。 不使用路由器 DDNS 更新 IPV4 的话, 使用 checkip.dns.he.net 比对,有没有对应的 IPV4 脚本补一个吧。

我目前每 10 分钟执行下面两条命令。
#!/bin/bash
curl -4 "https://域名:密码 @dyn.dns.he.net/nic/update?hostname=域名"
curl -6 "https://域名:密码 @dyn.dns.he.net/nic/update?hostname=域名"

继续研究 inadyn 不知道哪个方案好些。?
flynaj
2020-10-06 11:44:03 +08:00
@axiauk #1 v4 国内已经没有什么用处,v6 用我这个脚本在 ip 没有变化的时候不发送网络请求,还有 ipv6 的特性,不必用 checkip.dns.he.net 比对,最小化网络请求。在我的树莓派上,48 小时才会 ip 变一次,48 小时才会发一次网络请求。
axiauk
2021-02-12 00:23:49 +08:00
@flynaj 既然路由器后的 ipv4 ddns 麻烦,如果 ipv6 变化更新 ipv6 的同时顺带更新 ipv4,如果 v6 没有变化也不去产生流量更新 v4 。能不能帮写一个。
axiauk
2021-02-12 00:26:31 +08:00
万分感谢啊,感觉这个逻辑对拨号同时拥有 v6,v4 进行 ddns 比较合理。
qinghon
2021-04-05 13:04:22 +08:00
翻来翻去还是这家的好用
顺便改了一下
https://gist.github.com/qinghon/52773319a65cb9608ccf743b023fa99a

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/710134

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX