我家的电信宽带升级成了千兆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?ops_request_misc=&request_id=&biz_id=&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~koosearch~default-3-104146447-null-null.268%5Ev1%5Ekoosearch&utm_term=%E9%BB%91%E7%BE%A4%E6%99%96%E3%80%81docker%E3%80%81%E5%AE%B9%E5%99%A8%E9%95%9C%E5%83%8F%E3%80%81%E5%9F%9F%E5%90%8D%E6%B3%A8%E5%86%8C%E3%80%81%E5%AE%9D%E5%A1%94%E3%80%81%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E3%80%81nginx%E3%80%81frp%E3%80%81%E5%8A%A8%E6%80%81%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90%E3%80%81NAS%E3%80%81%E7%BE%A4%E6%99%96%E3%80%81%E9%98%BF%E9%87%8C%E4%BA%91%E3%80%81%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90%E3%80%81%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F%E3%80%81ipv6%E3%80%81ddns%E3%80%81%E8%BD%BB%E9%87%8F%E7%BA%A7%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E3%80%81%E9%93%81%E5%A8%81%E9%A9%AC%E3%80%81%E5%A8%81%E8%81%94%E9%80%9A%E3%80%81DSM%E3%80%81DSM6.0%E3%80%81%E7%BE%A4%E6%99%96nas%E3%80%81%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E3%80%81%E8%9C%97%E7%89%9B%E6%98%9F%E9%99%85%E3%80%81