Comments (18)
我向官方产品提个iss,是否可以单列ddns记录,且我们也可以尝试使用本地文件做个缓存试试
from dnspod-shell.
直接向官方接口查询当前ip,会增加失败率
从dns获取则有延迟
本地文件缓存也增加io读写和权限问题
本地环境变量存储,不能使用计划任务
如果确实对这个日志接受不了,我们可以权衡下
from dnspod-shell.
另外,可以看下脚本的arErrCodeUnchanged参数,开启变更检测
from dnspod-shell.
没错,我就是对这个刷屏日志接受不了,一天时间就能把以前的所有改动记录刷没了。我正在向官方发工单沟通这个问题,如果官方能解决,这边就不需要改动了。
from dnspod-shell.
你先看下arErrCodeUnchanged
from dnspod-shell.
你先看下arErrCodeUnchanged
目前无论arErrCodeUnchanged是何值,都会调用一次更新API。当arErrCodeUnchanged不为0时,arDnspod
会先拿一次旧IP,然后进行一次更新,然后再将返回的新IP与旧IP进行比对来输出0(新旧不同)或者$arErrCodeUnchanged(新旧相同)。也就是拿旧IP只起到反馈的作用。
作个折中的话,可以有下面的方案:
- 只要能拿到
$lastRecordIp
,且获取到了$hostIp
($5
不为0),那么就进行一次本地比对,未改变则不调用更新API。 - 添加一个配置,用于向指定的路径写入更新后的IP。这个文件最好符合
/etc/hosts
格式的,以便能被其他的服务使用(如dnsmasq使用hostsfile)。当此配置生效时,ardnspod
会从这个配置中获取$lastRecordIp
。这个配置默认不开启。- 这个配置的实现最好是增量更新的,这样可以让多个域名共用一个hosts文件,或权限允许时直接写到
/etc/hosts
里面。
- 这个配置的实现最好是增量更新的,这样可以让多个域名共用一个hosts文件,或权限允许时直接写到
- 当
arErrCodeUnchanged
不为0时,一定需要获取$lastRecordIp
。若2中所述配置生效,则使用2
中获取的$lastRecordIp
,若未生效,则从官方接口查询$lastRecordIp
。 - 当
2
和3
均未开启时,继续目前的默认行为(始终调用一次更新API)。
from dnspod-shell.
我向官方产品提个iss,是否可以单列ddns记录,且我们也可以尝试使用本地文件做个缓存试试
官方已经回复我说,就这样,没法改,晕了。
from dnspod-shell.
直接向官方接口查询当前ip,会增加失败率 从dns获取则有延迟 本地文件缓存也增加io读写和权限问题 本地环境变量存储,不能使用计划任务
如果确实对这个日志接受不了,我们可以权衡下
现在的问题就是,始终调用一次更新API一定会在日志刷屏,为了不刷屏一定要想办法获取上次的IP。当然可以通过配置控制这个行为。
获取上次IP目前有几个办法,各有优缺点,就是你上面提到的:
- 直接向官方接口查询当前ip,会增加失败率
- 从dns获取则有延迟
- 本地文件缓存也增加io读写和权限问题
- 本地环境变量存储,不能使用计划任务
DDNS也可以分三个场景:
- 对IP变化极度敏感,不能接受秒级延迟
- 对IP变化中度敏感,可以接受秒级延迟,不能接受分钟级延迟
- 对IP变化不太敏感,可以接受分钟级的延迟
对于第一个场景,几乎一定是在计划任务里执行的,我认为可以选择第三种方案。
对于第二个场景,也几乎一定是在计划任务里执行的,我认为选择方案一、三均可,因为失败一两次影响不大。
对于第三个场景,我认为选择方案一、二、三、四均可,既然可以接受分钟级延迟,那么多延迟一两次也能接受。
我认为io读写并不是什么问题,毕竟IP发生变化是小概率事件,多数时候仅仅只是在读取,况且还有/dev/shm这种内存文件系统可以用。权限就更不是问题了。
from dnspod-shell.
常规linux的确没问题,很多嵌入式设备,有各种写限制,我之前尝试过,很多反馈用不了。所以之后有一版改为了从dnspod查询当前地址。再之后推动dnspod优化了ddns接口,从此不再需要担心接口请求速率,而对比地址。目前的日志又给大家带来不便,我们尝试更改下,留一个手动开关。
from dnspod-shell.
3. 本地文件缓存也增加io读写和权限问题
感觉相对来说,用本地缓存验证一下的方式更通用些
from dnspod-shell.
尝试在/run/记录了最后的ip,可以测试下新版。另一个方案是写入到 /tmp,看看大家的反馈后决定哪个作为默认值吧
from dnspod-shell.
尝试在/run/记录了最后的ip,可以测试下新版。另一个方案是写入到 /tmp,看看大家的反馈后决定哪个作为默认值吧
新版在一般的LINUX发行版下基本没问题。
from dnspod-shell.
临时文件目录只要可写,就不是大问题
from dnspod-shell.
目前2023/5/24的版本使用/tmp临时目录文件的方案在同时更新IPV4和IPV6 多域名解析的时候会造成校验本地存储的IP和获取的HOSTIP不一致,反复发起IP更新,建议在临时文件中能分别记录。
from dnspod-shell.
可以考虑根据子域名和ip类型缓存
from dnspod-shell.
是的,但我不会写:),暂时注释了,还直接和dnspod上获取的进行比较。
from dnspod-shell.
fixed,可以测试下
from dnspod-shell.
测试正常,感谢!
from dnspod-shell.
Related Issues (20)
- 求助:“如何直接获取wan口IP地址直接上报而不使用网络查询” HOT 14
- 脚本更新公网ipv6地址总是选择到临时地址怎么办 HOT 4
- Readme的日期错了。 HOT 1
- ddnspod.sh第5行最好加上source命令来引用ardnspod文件 HOT 1
- 建议增加一个缓存功能,当获取到的ip命中缓存则不执行 HOT 1
- 关于使用Go适配api3.0 HOT 8
- ardnspod代码里边的小问题 HOT 2
- 能否加入支持同一域名对应多个线路的支持? HOT 2
- 使用DDNS API时,建议加上ttl=120
- arDdnsLookup - 获取不到记录id HOT 1
- ipv6 地址获取代码 HOT 1
- 不能解析泛域名 HOT 2
- 增加说明:用一条命令即可执行 HOT 3
- windows解决方案? HOT 1
- 替换根域名时, 如果传入 @,会导致域名解析上有两个@的解析,会导致冲突。
- 双WAN的情况,有没有办法同时更新2个网卡的V6域名分别更新? HOT 2
- 第 6 行:.: ardnspod: 没有找到文件 HOT 1
- 默认的ip查询url已失效
- 无法获取recordID
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dnspod-shell.