当前位置: 首页 > news >正文

群晖设置DDNS (服务商Godaddy被墙 DDNS-GO无法解析 采用自定义脚本方式完成DDNS更新)

起因&解决思路

事情的开始大概是这样的。。godaddy买了个域名,好好的用了半个月。。然后一直更新失败发现被狗东西墙了 

在提一嘴DDNS-GO 解析失败原因

DDNS-GO必须要先向godaddy请求自己的IP地址[这里被墙卡住了],然后比对,再决定是否上传新的地址[上传不会被卡]

所以解决方法是直接整个脚本,管你godaddy上记录的IP是什么,我也不用获取,直接上传获得的IP地址就完事了

测试过的解决方法

  • 在openwrt网关路由上使用透明网关的方式代理并且做DDNS,并且设置端口转发到后端群晖,失败
    • (代理强制使用IPV4,但我要用ipv6啊,直接获取不到IPV6地址)
  • 在openwrt网关路由上使用透明网关的方式代理,然后在后面的群晖上设置DDNS-GO的docker容器,成功
    • (但是总不能给家里所有设备都上一层代理吧,太耗代理的流量了,而且开开关关的也麻烦) 
  • 在群晖系统内设置代理服务器,使用旁路由,然后在后面的群晖上设置DDNS-GO的docker容器,失败
    • (似乎群晖设置的代理,只能群晖用?群晖里docker不走代理。群晖可以curl Google,里面的容器curl不通。折腾很久没折腾成)
  • 群晖系统内设置DDNS,不用ddns-go套件,心有余而力不足
    • (群晖系统内要自定义请求串,看godaddy的文档调半天调不通)
  • 直接去github上找了个godaddy的 DDNS 脚本,并且自行修改以完成ipv6的解析上传,成功(用不着设置啥代理服务器,最方便。为什么这个办法看上面的黄底红字)
    •  源脚本 

      https://github.com/gu1ll0me/godaddy-ddns/blob/master/godaddy.sh

完整脚本

注:我测试发现如果用请求api方式虽然可以获取IP地址,但是用这个地址访问不了我的主机,所以改用ifconfig方式获取网卡网址。我把api方式有关命令全部注释了

       

        使用时,无论ipv6还是ipv4,基本上只要更改最上面几个变量,还有中间PublicIP=`ifconfig -a | gr........(地址获取匹配规则)即可

        完成后将其加入crontab计划任务,每10分钟更新一次

#!/bin/bashKey=这里输入api key
Secret=这里输入api Secret
Domain=你的域名
Type=AAAA #ipv4=A ipv6=AAAA
Name=@  # Record name, as seen in the DNS setup page, default @.
TTL=600#这个是缓存IP 用于与目前比对决定是否更新
# Writable path to last known Public IP record cached. Best to place in tmpfs.
CachedIP=/tmp/current_ip#外部api方式检测IP地址。改用ifconfig方式获取,整段注释
#我测试发现可以获取地址但是用这个地址访问不了我的主机,所以改用ifconfig方式获取网址
#CheckURL=http://api.ipify.org.                 #检测ipv4地址
#CheckURL=https://6.ipw.cn/                     #检测ipv6地址
#CheckURL=https://v6.ident.me                   #检测ipv6地址
#CheckURL=https://speed.neu6.edu.cn/getIP.php   #检测ipv6地址
#PublicIP=$(${Curl} -kLs ${CheckURL})#ifconfig方式获取网卡eth0接口IP地址
PublicIP=`ifconfig -a | grep -A 5 eth0 | grep Glo | grep 64 | awk '{print $3}' | awk -F / '{print $1}'` #自己根据自己要获取的网卡和ip自行修改,每个人都不一样。我这里对于我的地址最大化匹配
echo "ifconfig获得IP为 $PublicIP"#检测IP地址合法性
#由于源脚本针对IPV4进行匹配,IPV6会直接进入else显示failed,所以整段注释
#if [ $? -eq 0 ] && [[ "${PublicIP}" =~ [0-9]{1,3}\.[0-9]{1,3} ]];then
#  echo "${PublicIP}!"
#else
#  echo "Failed ${PublicIP}"#exit 1
#fi#curl请求体
Curl=$(/usr/bin/which curl 2>/dev/null)
Touch=$(/usr/bin/which touch 2>/dev/null)
[ "${Curl}" = "" ] &&
echo "Error: Unable to find 'curl CLI'." && exit 1
[ -z "${Key}" ] || [ -z "${Secret}" ] &&
echo "Error: Requires API 'Key/Secret' value." && exit 1
[ -z "${Domain}" ] &&
echo "Error: Requires 'Domain' value." && exit 1
[ -z "${Type}" ] && Type=A
[ -z "${Name}" ] && Name=@
[ -z "${TTL}" ] && TTL=600
[ "${TTL}" -lt 600 ] && TTL=600
${Touch} ${CachedIP} 2>/dev/null
[ $? -ne 0 ] && echo "Error: Can't write to ${CachedIP}." && exit 1
#[ -z "${CheckURL}" ] && CheckURL=http://api.ipify.org #不使用api接口获取ip地址,改为ifconfig获取,注释掉
#echo -n "Checking current 'Public IP' from '${CheckURL}'..." #不使用api接口获取ip地址,改为ifconfig获取,注释掉#CachedIP与PublicIP比对决定是否更新
#使用上方的key,secret,publicIP等参数更新DDNS
#并判断更新是否成功
if [ "$(cat ${CachedIP} 2>/dev/null)" != "${PublicIP}" ];thenecho -n "Checking '${Domain}' IP records from 'GoDaddy'..."Check=$(${Curl} -kLsH"Authorization: sso-key ${Key}:${Secret}" \-H"Content-type: application/json" \https://api.godaddy.com/v1/domains/${Domain}/records/${Type}/${Name} \2>/dev/null|jq -r '.[0].data')if [ $? -eq 0 ] && [ "${Check}" = "${PublicIP}" ];thenecho -n ${Check}>${CachedIP}echo -e "unchanged!\nCurrent 'Public IP' matches 'GoDaddy' records. No update required!"elseecho -en "changed!\nUpdating '${Domain}' ${Check} -> ${PublicIP}..."Update=$(${Curl} -kLsXPUT -H"Authorization: sso-key ${Key}:${Secret}" \-H"Content-type: application/json" \https://api.godaddy.com/v1/domains/${Domain}/records/${Type}/${Name} \-d "[{\"data\":\"${PublicIP}\",\"ttl\":${TTL}}]" 2>/dev/null)if [ $? -eq 0 ] && [ "${Update}" = "" ];thenecho -n ${PublicIP}>${CachedIP}echo "Success!"eval ${SuccessExec}elseecho "Fail! ${Update}"eval ${FailedExec}exit 1fifi
elseecho "Current 'Public IP' matches 'Cached IP' recorded. No update required!"
fi
exit $?

完成后DDNS更新后进行检测

访问

https://api.godaddy.com/v1/domains/你的域名/records/AAAA/@#AAAA为IPV6

这就成功了捏 

嗯,建议以后买域名先看中国大内网能不能访问。虽然这次是解决了,但是真的太折腾了、、、

相关文章:

群晖设置DDNS (服务商Godaddy被墙 DDNS-GO无法解析 采用自定义脚本方式完成DDNS更新)

起因&解决思路 事情的开始大概是这样的。。godaddy买了个域名,好好的用了半个月。。然后一直更新失败发现被狗东西墙了 在提一嘴DDNS-GO 解析失败原因 DDNS-GO必须要先向godaddy请求自己的IP地址[这里被墙卡住了],然后比对,再决定是否上…...

博客摘录「 MySQL不区分大小写设置」2023年10月31日

操作系统的大小写是否敏感决定了数据库大小写是否敏感,而 Windows 系统是对大小写不敏感的,Linux 系统对大小写敏感。 mysql创建表时, 字符集需要设置"编码集(charset)"和"校验规则(collation)"。 编码集比较常用的有utf8和utf8mb4…...

【UE5】如何在UE5.1中创建级联粒子系统

1. 可以先新建一个actor蓝图,然后在该蓝图中添加一个“Cascade Particle System Component” 2. 在右侧的细节面板中,点击“模板”一项中的下拉框,然后点击“Cascade粒子系统(旧版)” 然后就可以选择在哪个路径下创建级…...

SpringCloud(五) Eureka与Nacos的区别

SpringCloud(二) Eureka注册中心的使用-CSDN博客 SpringCloud(四) Nacos注册中心-CSDN博客 在这两篇博文中我们详细讲解了Eureka和Nacos分别作为微服务的注册中心的使用方法和注意事项,但是两者之间也有一些区别. 一, Nacos实例分类 Nacos实例分为两种类型: 临时实例:如果实例…...

C语言 DAY07:预编译,宏,选择性编译,库(静态库,动态库)

声明与定义分离 声明:将声明单独封装成一个以.h为后缀名的头文件 定义:将定义的变量,函数,数组所在的源文件单独封装成一个.c文件。其实就是在源文件基础上将定义过的所有东西的声明分离出去就是了。 注意:1.声明的…...

[EFI]asus strix b760-i 13900F电脑 Hackintosh 黑苹果efi引导文件

硬件型号驱动情况主板 asus strix b760-i 处理器 I9 13900F 已驱动内存crucial ddr5-5200 64gb(32gb*2)(overclock 5600)已驱动硬盘 WD black sn850 500g*2 已驱动显卡rx570已驱动声卡Realtek ALCS1220A已驱动网卡Intel I225-V 2.5 Gigabit Ethernet已驱动无线网卡蓝牙Fevi T91…...

力扣383.赎金信

原题链接:383.赎金信 根据题意得出,需要判断第一个字符串内的字符有没有都在第二个字符串内出现(会有重复字符),并且范围限制在26个英文小写字母 此时可以考虑用一个数组map 作哈希法映射操作 先将遍历第一个字符串,并让每个字符…...

CORS的原理以及在Node.js中的使用

在前端浏览器中的JavaScript代码发起HTTP请求到服务器的Node.js程序,CORS(跨域资源共享)会在以下几个步骤中发挥作用: 前端JavaScript代码发起请求: 前端浏览器中的JavaScript代码使用XMLHttpRequest对象或Fetch API等…...

kotlin实现单例模式

kotlin实现单例模式,大体分为两种方式,一种饿汉式单例模式,一种懒汉式单例模式。 1.饿汉式单例模式 在类前面加上object关键字,就实现了饿汉式单例模式: object singletonDemo { }在kotlin中,使用这种方式…...

【Java】LinkedList 集合

LinkedList集合特点 LinkedList 底层基于双向链表实现增删 效率非常高,查询效率非常低。 LinkedList源码解读分析 LinkedList 是双向链表实现的 ListLinkedList 是非线程安全的(线程是不安全的)LinkedList 元素允许为null,允许重复元素Linked…...

MySQL-Galera-Cluster集群详细介绍

目录 一、什么是Mysql集群?1.单节点mysql存在的常见问题2.mysql集群介绍3.Mysql集群的优点和风险 二、Mysql集群的一些疑问1.mysql的AB复制和Galera Cluster有什么区别?2.什么情况下适用AB复制,什么情况下使用Galera cluster?3.可…...

JavaScript从入门到精通系列第二十六篇:详解JavaScript中的Math对象

大神链接:作者有幸结识技术大神孙哥为好友,获益匪浅。现在把孙哥视频分享给大家。 孙哥连接:孙哥个人主页 作者简介:一个颜值99分,只比孙哥差一点的程序员 本专栏简介:话不多说,让我们一起干翻J…...

u盘直接拔出文件丢失怎么找回?u盘文件恢复办法分享!

u盘作为一种便捷的数据存储设备,被广泛地使用。通过u盘,我们可以在不同设备之间轻松传输文件,然而有时候,我们可能因为匆忙或疏忽并未安全弹出u盘,而是直接将u盘拔出,进而导致重要文件丢失,u盘直…...

rust学习-LinkedList

介绍 A doubly-linked list with owned nodes. 自有节点的双向链表 pub struct LinkedList<T, A = Global> whereA: Allocator, {/* private fields */ }使用 Vec 或 VecDeque 几乎总是更好,因为基于数组的容器通常更快、内存效率更高,并且可以更好地利用 CPU 缓存 …...

搭上直播快车,文旅迎来了更大爆发期?

“直播累计观看人数1083万人次&#xff0c;同期在线峰值10万人&#xff0c;抖音平台销售额800万元&#xff0c;荣登食遍天下榜第一名”。 10月28日&#xff0c;“东方甄选看世界”无锡专场直播落幕&#xff0c;又创造了新成绩&#xff0c;“文旅直播”这一新带货模式的发展可行…...

【智能座舱系列】- 深度解密小米Hyper OS,华为HarmonyOS区别

上一篇文章《小米的澎湃OS到底牛不牛?与鸿蒙系统之间差距有多大》,从多个方面比较了小米Hyper OS 与 华为HarmonyOS的区别,本篇文章继续从架构层面深度解读两者本质的区别。 小米澎湃OS是“以人为中心,打造人车家全生态操作系统”,该系统基于深度进化的Android以及自研的V…...

kafka-consumer-groups.sh

通过 kafka-consumer-groups.sh 脚本查看或变更消费组的信息。 查看消费者组信息 ./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list 查看指定消费者组的消费位移 ./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group g…...

数据仓库-拉链表

在数据仓库中制作拉链表&#xff0c;可以按照以下步骤进行&#xff1a; 确定需求&#xff1a;首先明确需要使用拉链表的场景和需求。例如&#xff0c;可能需要记录历史数据的变化&#xff0c;以便进行时间序列分析等。设计表结构&#xff1a;在数据仓库中&#xff0c;拉链表通…...

【Docker】一些可以直接用的Docker环境

这里罗列一些打包的镜像&#xff0c;方便直接使用。 cu11.6ubuntu18.04 docker push kevinchina/deeplearning:cu11.6ubuntu18.04 FROM nvidia/cuda:11.6.2-cudnn8-devel-ubuntu18.04 RUN apt-get update && apt-get install -y wget git vim curl RUN wget http://…...

Unity2D中瓦片地图的创建与绘制教程

Unity2D中瓦片地图的创建与绘制 素材切割创建地图创建瓦片绘制地图瓦片调色板画笔拓展素材资源链接 素材切割 选中以下素材&#xff0c;以Tiles为例&#xff08;素材链接在文章最下方&#xff09; 修改素材属性。 将Sprite Mode属性改为Multiple多张&#xff08;不然切割不了&…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...