面向云技术架构 - 痴者工良

  • 首页
  • 工良写的电子书
    • kubernetes 教程
    • 从 C# 入门 Kafka
    • 多线程和异步
    • 动态编程-反射、特性、AOP
    • 表达式树
  • 本站文章导航
  • 隐私政策
愿有人陪你颠沛流离
遇到能让你付出的事物或者人,都是一种运气。
能遇到,就该珍惜。或许你们最终没能在一起,但你会切实地感受到力量。
正因为这样,那段相遇才变得有价值,才没有辜负这世间的每一段相遇。
  1. 首页
  2. 未分类
  3. 正文

动态 IP (DDNS)自动绑定腾讯云域名

2022年10月18日 1277点热度 1人点赞 4条评论
内容纲要

DDNS

这是一个根据当前公网 IP 动态修改腾讯云域名记录的工具,如果宽带不是专线,那么 IP 会隔几天变化一次,这样给域名绑定带来麻烦。

此工具通过动态识别当前网络的公网 IP 地址,将变化的 IP 推送到腾讯云已有的域名解析中,实现域名动态绑定 IP。

注意:国内未经备案的机器,不能对外提供服务!

http://www.gov.cn/gongbao/content/2005/content_93018.htm
非经营性互联网信息服务备案管理办法

在中华人民共和国境内提供非经营性互联网信息服务,应当依法履行备案手续。
未经备案,不得在中华人民共和国境内从事非经营性互联网信息服务。

下载

打开:https://github.com/whuanle/ddns-tencent/releases

找到对应操作系统的二进制程序文件。

配置文件

需要在运行程序的目录(执行命令的目录,而不是程序所在目录)下,创建 config.json 文件,内容格式如下:

{
  "SecretId": "id",
  "SecretKey": "密钥",
  "Domain":"666.cn",
  "SubDomain": "域名前缀",
  "RecordType": "记录类型,如 A、NX",
  "RecordLine": "线路名称",
  "Value": "123.123.123.123",
  "MX": 5,
  "TTL": 600,
  "RecordId": 1220273909
}

注意,程序使用 https://ipinfo.io/ip 检测当前的公网 IP 地址,可能有些慢,建议替换一下国内的其他工具地址。

获取腾讯云 API 密钥

打开:https://console.cloud.tencent.com/cam/capi

创建或获取访问腾讯云 API 的密钥,建议使用子账号!

file

给子账号开通 QcloudCollApiKeyManageAccess、QcloudDNSPodFullAccess 两个权限。

file

然后使用子账号登录控制台,打开 https://console.cloud.tencent.com/cam/capi

新建密钥:

file

复制 SecretId 和 SecretKey,存储到 config.json 中。

获取域名信息

打开 https://console.cloud.tencent.com/cns

找到自己的域名,先添加一个域名解析。

file

接下来要获取此解析记录的 id,即 RecordId。

方法①:

然后点击修改域名记录,但是先不保存,按下 F12,在点击保存。

在浏览器控制台中,可以看到一条请求:

https://wss.cloud.tencent.com/dns/api/record/update?g_tk={此解析记录的id}

根据这个请求,复制后面的记录 id。

方法②:

打开:https://console.cloud.tencent.com/api/explorer?Product=dnspod&Version=2021-03-23&Action=DescribeRecordList

file

将 RecordId 放到 config.json 中。

配置说明

经过以上步骤,目前还有以下配置需要修改:

  "Domain":"666.cn",
  "SubDomain": "域名前缀",
  "RecordType": "记录类型,如 A、NX",
  "RecordLine": "线路名称",
  "Value": "123.123.123.123",
  "MX": 5,
  "TTL": 600,

其实就是对应域名解析记录的,此程序只会动态修改 IP,其他修改内容会按照 config.json 的配置去区配解析记录并修改。

也可以看这里了解每个参数的说明:

https://docs.dnspod.cn/api/modify-records/

RecordLine 这个参数,指的是线路名称,可以填 默认 。

file

file

Linux 定时任务

先将程序复制放到 Linux 的目录下,程序可以放在任意目录,但是 config.json 需要放在 root 目录下,这是因为 Linux 的 Cron 运行目录是 root 或其他用户目录。

打开 /etc/cron.d 目录,创建一个新文件 ddns,文件内容如下:

* * * * * root /root/ddns
* * * * * root sleep 10; /root/ddns
* * * * * root sleep 20; /root/ddns
* * * * * root sleep 30; /root/ddns
* * * * * root sleep 40; /root/ddns
* * * * * root sleep 50; /root/ddns

* * * * * 表示每分钟执行一次;

root 表示以什么用户启动程序;

/root/ddns 程序目录位置;

sleep 20; 休眠时间。

因为 Linux Cron 的粒度是每分钟,因此如果需要每 10s 执行一次脚本的话,需要设置多条记录,使用 sleep 延迟执行。

然后执行 service cron reload ,刷新定时任务。

因为定时任务看不到程序日志,因此可以改成:

* * * * * root /root/ddns >> /tmp/ddns.log
* * * * * root sleep 10; /root/ddns >> /tmp/ddns.log
* * * * * root sleep 20; /root/ddns >> /tmp/ddns.log
* * * * * root sleep 30; /root/ddns >> /tmp/ddns.log
* * * * * root sleep 40; /root/ddns >> /tmp/ddns.log
* * * * * root sleep 50; /root/ddns >> /tmp/ddns.log
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: ddns ip 域名 绑定 腾讯
最后更新:2022年10月18日

痴者工良

高级程序员劝退师

点赞
< 上一篇
下一篇 >

文章评论

  • 咕咕鸟

    接下来要获取此解析记录的 id,即 RecordId。
    这一步无法获取ID 怎么办。

    2022年12月3日
    回复
    • 痴者工良

      @咕咕鸟 使用方法1或方法2,到腾讯云控制台去找一下,会找到的。

      2022年12月7日
      回复
      • 咕咕鸟

        @痴者工良 可能是这个原因,我的控制台是“https://console.dnspod.cn/dns/list”(腾讯云DNSPOD)控制台,这个是腾讯云的云解析功能,难道是不能使用这个功能,直接在腾讯云域名管理里面解析?

        是因为我使用了腾讯云的“已正确指向 DNSPod管理解析”功能?

        2022年12月10日
        回复
        • 痴者工良

          @咕咕鸟 加微信,直接聊咯

          2022年12月12日
          回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复

    文章目录
    • DDNS
      • 下载
      • 配置文件
      • 获取腾讯云 API 密钥
      • 获取域名信息
      • 配置说明
      • Linux 定时任务

    COPYRIGHT © 2022 whuanle.cn. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang

    粤ICP备18051778号

    粤公网安备 44030902003257号