V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
JeffersonQin
V2EX  ›  分享创造

[工具] Cloudflare DNS Record 自动更新为 Cloudflare 优选 IP

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

    https://github.com/JeffersonQin/cloudflare-dynamic-best

    测当地 cloudflare 优选 IP ,测完自动更新需要绑定的 cloudflare dns 记录

    因为是自用,我的需求只有 cloudflare 的 nameserver ,如果需要其他域名提供商欢迎 PR

    9 条回复    2023-07-10 13:51:25 +08:00
    ety001
        1
    ety001  
       300 天前
    额。。。为了更新 cname ,用 rust 单独写个程序? 直接一条 curl bash 命令就搞定了啊。。。
    ety001
        2
    ety001  
       300 天前
    ```
    if [ -L $0 ]
    then
    BASE_DIR=`dirname $(readlink $0)`
    else
    BASE_DIR=`dirname $0`
    fi


    $BASE_DIR/CloudflareST \
    -n 1000 \
    -t 10 \
    -f $BASE_DIR/ip.txt \
    -o $BASE_DIR/result.csv


    newIP=$(sed -n "2,1p" $BASE_DIR/result.csv | awk -F, '{print $1}')


    echo "update to CF"
    curl --proxy http://localhost:8001 \
    -X PUT "https://api.cloudflare.com/client/v4/zones/xxxx/dns_records/xxxx" \
    -H "Authorization: Bearer xxxxx" \
    -H "Content-Type: application/json" \
    --data '{"type":"A","name":"xxxxx","content":"'$newIP'","ttl":1,"proxied":false}'
    ```
    JeffersonQin
        3
    JeffersonQin  
    OP
       300 天前
    @ety001 本身就是玩 rust 练练手的,而且我平时干活也写够 bash 了,这坨答辩不想在下班时间碰
    amlee
        4
    amlee  
       297 天前
    @ety001 #2

    你好,我有点没弄明白。

    我自己的理解是,脚本优选出来本地连到 cloudflare 比较块的 ip ,然后应该修改本地的 hosts 文件,域名指向这个比较块的 ip 。

    但看 @ety001 #2 的脚本,为什么最后要修改域名的 A 记录? A 记录不是应该始终指向源服务器的吗?
    amlee
        5
    amlee  
       297 天前
    amlee
        6
    amlee  
       297 天前
    @JeffersonQin 这个软件的意图是不是测出来源服务器到 cloudflare 比较快的 namesever 的 ip ,然后在域名注册商那里,就不填 cloudflare 提供的 nameserver 域名,而是填自己测出来的 ip ?
    ety001
        7
    ety001  
       297 天前
    @amlee 你也可以修改本地 hosts 。因为我不止一台设备使用,因此,我没法使用修改本地 hosts 的方案。

    因此我准备了两个域名,a.comb.com

    a.com 在 cloudflare 打开代理,脚本更新优选 ip 的时候,就更新 a.com 的 a 记录。
    b.com 在 cloudflare 不用打开代理,然后 a 记录指向真实服务器 ip 地址。

    最后在 v2ray 配置 outbound 的时候,vnext 里的 address 用 a.com ,streamSettings 的配置中,wsSettings => headers => Host 和 tlsSettings => serverName 都配置为 b.com
    ety001
        8
    ety001  
       297 天前
    @amlee 另外 v2ray 的 dns 查询也需要配置下,能让 a.com 的 dns 查询走代理(单独一个不用 a.com 的 outbound)出去。 因为国内 dns 查询会不定时污染你的 a.com 的 a 记录。
    JeffersonQin
        9
    JeffersonQin  
    OP
       295 天前
    @amlee 一楼说的是对的 @ety001
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2643 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 14:36 · PVG 22:36 · LAX 07:36 · JFK 10:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.