设置互联网ipv6访问宽带家庭电脑、简单五步设置群晖NAS绑定自有域名利用ipv6实现互联网网访问

我家的电信宽带升级成了千兆ipv6,用了路由器后,家里的好几台电脑和手机都分配到了以240e开头的公网ipv6。我觉得要把ipv6充分利用起来,所以想起了远程控制家里的电脑,想自己打造智慧家庭,所以把一台用蜗牛星际改装的黑群晖设置成外网能够访问,所以参考了大神们的代码后,自己写出了阿里云域名ipv6自动解析的linux代码,在文章后面,我要写出参考的文章及我遇到的坑,以供参考。(此代码可以运用于linux任何家庭电脑或家庭虚拟机的动态域名解析,以后有机会写个windows下的)

1.注册阿里云账号。
2.注册一个域名。
如果域名不在阿里云解析托管,需要先转过去,具体方法是联系域名提供商修改域名的DNS服务器,修改方式参考这里:

参考:https://help.aliyun.com/knowledge_detail/39844.html
然后去控制台找到云解析,将域名添加进去;

3.到阿里云控制中心找到access key和secret并保存下来(强烈建议遵循阿里云安全最佳实践的说明 ,使用RAM子用户的AccessKey);

设置10分钟定时

复制以下内容,根据自己的情况修改中文部分并添加到任务设置自定义脚本

#!/bin/sh aliddns_name=”你的域名前缀” aliddns_domain=”你的域名” aliddns_ak=”你的AccessKeyId” aliddns_sk=”你的AccessKeySecret” # 获取本地ipv6并与以前保存的ipv6比较 # 获取本地ipv6,我这边有三个ipv6,一个是240e开头的互联网能互相访问的, # 一个是240e开头的临时网址,但互联网不能访问,却能访问互联网。 # 一个是fe80开头的本地ipv6,应该舍弃 # 得筛选出那个互联网能够互访的ipv6 ip=$(/sbin/ifconfig eth0 | grep 'inet6 addr' | sed 's/^.*addr://g' ) # 获取本地保存的已经解析过的ipv6 oldip=$(cat /root/ip.txt 2>&1) echo $oldip if [ -n "$oldip" ] then result=$(echo $ip | grep "$oldip") if [ -n "$result" ] then echo 跟以前保存的一样,没必要解析,退出。 exit 0 fi fi # 在ip.sb网站上查到一个本地ipv6,我发现,都是临时ipv6 # 不知道再有什么选择能互访的ipv6的办法? localip=$(curl -6 ip.sb) # 将本机三个ipv6保存进数组 OLD_IFS="$IFS" IFS="/" array=($ip) IFS=$OLD_IFS # 取掉临时的和fe80开头的ipv6,留下能互访问的ipv6 for var in ${array[@]} do result=$(echo $var | grep "fe80") echo var是$var if [[ "$result" != "" ]] then echo 是内网ipv6退出 continue fi if [[ $var = $localip ]] then echo 是不能互访的ipv6返回 continue fi length=${#var} ipv6num=16 if [[ $length -gt $ipv6num ]]; then echo 是可以互访的ipv6,退出选择 ip=$var break else echo 长度太小 continue fi done ip=`echo $ip` echo $ip ###正确ip echo "数组元素个数为: ${#array[*]}" echo $ip >/root/ip.txt ##把ip替换到文件中 # 安装阿里云cli cg=$(aliyun version 2>&1) cg=${cg:0:1} if ! [[ "$cg" -gt 0 ]] 2>/dev/null then # 下载阿里cli wget https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz # 解压 tar xzvf aliyun-cli-linux-latest-amd64.tgz # 复制到系统文件夹 cp aliyun /usr/local/bin # cli初始化设置 aliyun configure set \ --profile akProfile \ --mode AK \ --region cn-hangzhou \ --access-key-id $aliddns_ak \ --access-key-secret $aliddns_sk fi # 得到解析id get_recordid() { grep -Eo '"RecordId": "[0-9]+"' | cut -d':' -f2 | tr -d '"' } # 向阿里云域名cli获取解析id query_recordid() { aliddns_record_id=`aliyun alidns DescribeDomainRecords --DomainName $aliddns_domain --RRKeyWord $aliddns_name --Type AAAA` echo -n $aliddns_record_id } # 修改解析 update_record() { aliyun alidns UpdateDomainRecord --RR $aliddns_name --RecordId $1 --Type AAAA --Value $ip } # 添加解析 add_record() { aliyun alidns AddDomainRecord --DomainName $aliddns_domain --RR $aliddns_name --Type AAAA --Value $ip } if [ "$aliddns_record_id" = "" ] then aliddns_record_id=`query_recordid | get_recordid` echo $aliddns_record_id 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

遇到的坑:

1、这个代码是ipv4下的代码,我在改造的时候,里面的阿里云签名代码一直出错,所以我就下载了阿里云cli,用阿里云cli来解析域名,代码量变少了,设置也成功了。

2、原来代码中的get_recordid()少打了一个空格,得不到recordid,我改过来了。

3、在阿里云设置获取access key和secret时,我把RAM子用户的权限没有设置,设置后就成功了。

我的联系方式:QQ:306805680 微信:shuizhongyue-_

原文链接:https://blog.csdn.net/shyshyshy33/article/details/104146447

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享