V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
joenlee
V2EX  ›  DNS

cloudflare ddns 遇到了奇怪的表现

  •  
  •   joenlee · 68 天前 · 2046 次点击
    这是一个创建于 68 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在软路由跑了 ddns-go 解析到 cloudflare 一条 a 记录,改记录的 ip 地址会周期性的变成一个 50.114.xx.xx ,过几分钟又恢复正常 ip 。 检查了 ddns-go 的日志,均没有相关变更,尝试过一下操作:

    1. 暂停 ddns-go 服务并删除 a 记录,观察一段时间后并未有新的 a 记录创建
    2. 设置 ddns-go 的 ip 获取方式为 api 获取和接口获取,都会出现改问题

    想查看 cloudflare 的 dns 修改日志,但是没找到,也没找到 dns 修改时邮件通知的设置。

    第 1 条附言  ·  64 天前

    把API token删除重建后恢复正常,可能是泄漏了

    7 条回复    2024-09-16 21:52:58 +08:00
    piero66
        1
    piero66  
       67 天前 via Android
    用 ue ddns
    vonsy
        2
    vonsy  
       67 天前
    和 shell 脚本更新, 写到 cron 中,5 分钟检查一次

    #!/bin/sh

    TOKEN=tokentokentokentokentokentokentoken
    ZONE_ID=zoneidzoneidzoneidzoneidzoneidzoneidzoneid
    IDENTIFIER_AAAA=identifieridentifieridentifieridentifieridentifieridentifier
    TYPE=AAAA
    NAME_AAAA=xxx.abc.com
    PROXIED=false
    TTL=1

    IP=`ping -6 ${NAME_AAAA} -c 1 |awk 'NR==2 {print $4}'`
    echo "IP of ${NAME_AAAA} is ${IP}"
    CONTENT=`ip address show ens192 | awk '/inet6/ && /2408/ {print substr($2,0,length($2)-3)}'`
    echo "Local IP is ${CONTENT}"

    if [ "${CONTENT}" = "${IP}" ]; then
    echo "IP 相同,无需更新"
    exit
    fi

    echo "start ddns refresh"
    if [ x"${CONTENT}" != x ]; then
    curl -X PUT "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$IDENTIFIER_AAAA" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" --data '{"type":"'$TYPE'","name":"'$NAME_AAAA'","content":"'$CONTENT'","proxied":'"$PROXIED"',"ttl":"'$TTL'"}'
    echo ${CONTENT} > /tmp/ddnsResult
    fi
    totoro625
        3
    totoro625  
       67 天前
    是不是挂了美国的梯子,关了再观察一段时间试试
    COOOOOOde
        4
    COOOOOOde  
       67 天前
    最近也是把我家里 nas ipv6 通过 cloudflare 解析, 用了 2 天第 3 天发现用不了了, 总是解析错误地址, 网上一看这个地址是 facebook 的什么边缘网关, 好嘛 给我域名墙了。真无语
    baobao1270
        5
    baobao1270  
       67 天前
    重新生成 API Key 试试,别是 API Key 泄露了
    yinmin
        6
    yinmin  
       67 天前 via iPhone
    @vonsy #2 代码中获取域名 ip 有问题,要把 ping 改成 dig ( dns 查询 server 设置成域名 ns server )
    elboble
        7
    elboble  
       65 天前
    用官方 API 手搓了一个,为了减少查询 cloudflare 的次数,把每次更新的 IP 自己存了一把,每 5 分钟比对一次,不一样再去更新 cloudflare 的。

    脚本不到一百行,但是环境整了一天,arm 的板子发行版没更新了,高版本 python 只能自己编译,这个以前挺熟的,后来用 pyenv 就忘了,主要是 openssl 的依赖什么的。cpu 速度慢,configure 就 10 分钟,编译一次 1 小时。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3883 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 78ms · UTC 10:21 · PVG 18:21 · LAX 02:21 · JFK 05:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.