黑群晖 NAS 瞎折腾 篇二:自用的两款DDNS解析域名小程序
创作立场声明:自己用着还不错的,就是单纯的分享出来,有的是借鉴其他大佬。
在用的DDNS解析服务有两个,一个超级简单(不管是X86还是ARM都可以用),一个最全(四个解析服务商,IPV4和IPV6都支持,只能X86使用,需要docker)。
用DDNS解析服务的前提(这里用阿里云域名解析,其他的域名也可以):
1.阿里云域名,在网页阿里云官网设置(申请域名,申请ACCESS KEY, 域名解析),请百度或者看其他人的文章,其他域名基本一样。
2.有公网IPV4或者有IPV6(移动肯定是IPV6)。具体查是不是IPV4和IPV6,可以问度娘。
3.还得有NAS。(黑群晖,群晖,威联通,铁威马,unraid,freenas,u-nas,OMV等都行)
一、最简单的一个DDNS解析部署(只适合阿里云,还是IPV4,不过这个X86和ARM都可以使用)。
1、进去群晖,点开控制面板,然后看又上角,不是基本模式字样了 点击一下高级模式。
2、找到系统下面的任务计划,点开任务计划。
3、点击新增,选择 计划的任务,里面的 用户自定义的脚本。
4、常规:任务名字随便改,其他的就默认就好。
5、计划:只需要更改运行频率就可以(选多长时间运行一次,自己选择,我选的是10分钟),其他默认就行。
6、任务设置:直接把下面的代码复制进去用户自定的脚本(更改里面 双引号里面【你的什么什么】 就行,一共改四个引号里面的)。
#!/bin/sh
aliddns_name="你的域名前缀"
aliddns_domain="你的域名"
aliddns_ak="你的AccessKeyId"
aliddns_sk="你的AccessKeySecret"
aliddns_curl="curl -s whatismyip.akamai.com"
aliddns_dns="8.8.8.8"
aliddns_ttl="600"
ip=`$aliddns_curl 2>&1`
current_ip=`nslookup $aliddns_name.$aliddns_domain $aliddns_dns 2>&1`
if [ "$?" -eq "0" ]
then
current_ip=`echo "$current_ip" | grep 'Address 1' | tail -n1 | awk '{print $NF}'`
if [ "$ip" = "$current_ip" ]
then
exit 0
fi
fi
timestamp=`date -u "+%Y-%m-%dT%H%%3A%M%%3A%SZ"`
urlencode() {
# urlencode <string>
out=""
while read -n1 c
do
case $c in
[a-zA-Z0-9._-]) out="$out$c" ;;
*) out="$out`printf '%%%02X' "'$c"`" ;;
esac
done
echo -n $out
}
enc() {
echo -n "$1" | urlencode
}
send_request() {
local args="AccessKeyId=$aliddns_ak&Action=$1&Format=json&$2&Version=2015-01-09"
local hash=$(echo -n "GET&%2F&$(enc "$args")" | openssl dgst -sha1 -hmac "$aliddns_sk&" -binary | openssl base64)
curl -s "http://alidns.aliyuncs.com/?$args&Signature=$(enc "$hash")"
}
get_recordid() {
grep -Eo '"RecordId":"[0-9]+"' | cut -d':' -f2 | tr -d '"'
}
query_recordid() {
send_request "DescribeSubDomainRecords" "SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&SubDomain=$aliddns_name.$aliddns_domain&Timestamp=$timestamp"
}
update_record() {
send_request "UpdateDomainRecord" "RR=$aliddns_name&RecordId=$1&SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&TTL=$aliddns_ttl&Timestamp=$timestamp&Type=A&Value=$ip"
}
add_record() {
send_request "AddDomainRecord&DomainName=$aliddns_domain" "RR=$aliddns_name&SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&TTL=$aliddns_ttl&Timestamp=$timestamp&Type=A&Value=$ip"
}
if [ "$aliddns_record_id" = "" ]
then
aliddns_record_id=`query_recordid | get_recordid`
fi
if [ "$aliddns_record_id" = "" ]
then
aliddns_record_id=`add_record | get_recordid`
echo "added record $aliddns_record_id"
else
update_record $aliddns_record_id
echo "updated record $aliddns_record_id"
fi
7、选择刚刚弄好的任务,手动运行一下,就把IP地址解析到域名了(不放心了,可以去域名后台看下解析成功了没)。
二、最全的一个DDNS解析部署,带操作界面(docker运行,X86使用)。
1、点开DOCKER容器,点开注册表,搜索ddns-go,双击下载就可以。
2、点开映像,双击刚刚下载的映像。
3、容器名字随便改(自己好记住的名称就行),然后点开高级设置,别急着点下一步。
4、点开端口设置,容器端口不要改,本地端口改一个自己能记住的(不要和其他端口冲突)。
5、点开高级设置,自动重新启动打对勾,创建快捷方式(http://nas的IP:刚刚设置的本地端口号),然后下一步下一步知道创建好容器,最后点开桌面快捷方式。
6、①DNS服务商(你自己申请的是哪个域名就选择哪个),然后把申请的ACCESS KEY 填到下面就行。
②IPV4和IPV6只能选一个,另一个不用的一定不要启动,获取IP方式默认就好,然后把域名填入Domains里面就行。
③其他配置:要是需要外网访问这个页面了,最好设置一个用户名和密码。
7、进docker里,双击DDNS-GO这个容器,然后点开日志,出现更新域名成功,就是解析好了。可以愉快的域名访问自己的个人服务器了。
总结
用了好几年的黑群晖,这是两款稳定好用的IP自动更新解析的小程序了,其他的也用很多,但是最后只剩这俩了,希望对其他小伙伴有所帮助。
本人已经开始支持正版了 ,群晖220J(备份黑群晖用),威联通453bmini(备份黑群晖,跑其他程序)。
五千万啊
校验提示文案
我要中头奖
校验提示文案
24k双花红棍
校验提示文案
孺子可教也
校验提示文案
风随天驿
校验提示文案
值友7322454448
校验提示文案
小解2017
校验提示文案
MrDangDangDang
校验提示文案
dcdf
校验提示文案
xyzhangxin
校验提示文案
zero86
校验提示文案
矿物质水
校验提示文案
Geralt13775
校验提示文案
吹牛不用打草稿
校验提示文案
黑夜呐喊
校验提示文案
Biid
校验提示文案
Biid
校验提示文案
黑夜呐喊
校验提示文案
吹牛不用打草稿
校验提示文案
Geralt13775
校验提示文案
矿物质水
校验提示文案
zero86
校验提示文案
小解2017
校验提示文案
xyzhangxin
校验提示文案
值友7322454448
校验提示文案
风随天驿
校验提示文案
孺子可教也
校验提示文案
dcdf
校验提示文案
MrDangDangDang
校验提示文案
24k双花红棍
校验提示文案
五千万啊
校验提示文案
我要中头奖
校验提示文案