DDNS 换 IP 一分钟内收到通知:Lucky Webhook 变更通知实战
2026/9/20 10:52:09 网站建设 项目流程

DDNS 换 IP 一分钟内收到通知:Lucky Webhook 变更通知实战

【免费下载链接】lucky软硬路由公网神器,ipv6/ipv4 端口转发,反向代理,DDNS,WOL,ipv4 stun内网穿透,cron,acme,rclone,ftp,webdav,filebrowser项目地址: https://gitcode.com/GitHub_Trending/luc/lucky

凌晨两点公网 IP 切换,你却是第二天翻日志才发现,远程访问已经断了 8 小时。Lucky Webhook 解决的就是这件事:DDNS 任务完成域名更新后,自动向预设地址发一次 HTTP 回调,把新 IP 和域名状态带过去,DDNS 变更通知直接推到你面前。

花 30 秒看懂 DDNS 通知的触发时机

Lucky 的 Webhook 就是一个 HTTP 回调:DDNS 任务执行后,只要域名记录发生了变化,就按你设定的方法向预设 URL 发请求,收到响应后做什么由你决定——发消息、跑脚本、写日志库都行。核心逻辑在 ddnscore.go/webhook.go。

默认只在 IP 有变化、且域名更新成功或失败时才回调;在任务设置里勾选"获取 IP 失败时触发"后,IP 获取失败也会发出通知。配置入口在任务编辑页,对应前端组件 DDNS.vue。

触发时机典型用途
IP 变化、域名更新成功即时消息通知、自动化运维
IP 变化、域名更新失败失败告警、人工跟进
获取 IP 失败(需开启对应开关)可用性监控提醒
手动点击"Webhook 手动触发测试"验证接口连通,不动 DNS 记录

配置 Webhook 五分钟推送第一条通知

第一步,打开开关、填 URL:在 DDNS 任务编辑页打开 Webhook 开关,把接收地址粘进 Webhook URL。钉钉、飞书、企业微信群机器人地址,或你自己写的接口,都能直接填。

第二步,填最简请求体:方法选 POST(默认),以钉钉机器人为例,复制下面这段即可:

{ "msgtype": "text", "text": { "content": "DDNS通知\n新IP:#{ipAddr}\n成功域名:#{successDomains}" } }

第三步,点测试按钮验证:点击"Webhook 手动触发测试",它会用假数据(IP 固定为 66.66.66.66)发一次真实请求,不会改动你的 DNS 记录,返回成功就说明配置通了。

保存后,DDNS 任务列表里的每张任务卡片都会显示 Webhook 触发时间和触发结果,调不通时点开"错误原因"能看到接口的原始响应。

查一份变量替换速查表

URL、请求头、请求体三个位置都支持变量,触发时 Lucky 会先把#{}占位符做文本替换再发请求。说白了,模板里写占位符、收到的是真实值。

变量含义示例值
#{ipAddr}当前公网 IP;获取 IP 失败时显示"获取 IP 失败"2408:8256:xxxx::1
#{successDomains}本次更新成功的域名,逗号分隔home.example.com,www.example.com
#{failedDomains}本次更新失败的域名,逗号分隔sub.example.com
#{successDomainsLine}成功域名,换行分隔,方便消息排版多行域名
#{failedDomainsLine}失败域名,换行分隔多行域名
#{time}触发时间,格式 2006-01-02 15:04:052026-09-19 14:05:33

这里有个坑:获取 IP 失败时,成功/失败域名都是空,#{ipAddr}会显示"获取 IP 失败"这段文字,模板要按这个情况来写。

落地三个场景:通知、运维与归档

用钉钉机器人接收 DDNS 变更通知

家里服务器 IP 一变,群里就该先收到消息。

  • 钉钉群机器人 Webhook 地址填 URL,请求体用上面的 JSON 形式,域名多时改用 Line 变量换行
  • 希望获取 IP 失败也提醒的话,把"获取 IP 失败时触发"开关打开

效果:IP 一切换,钉钉群直接收到新 IP 和受影响的域名。

IP 变化时自动更新网关白名单

出口 IP 变了,网关的访问白名单还是旧 IP,更新完访问就被拦;用回调自动刷一下。

  • 自研接口收 POST,解析#{ipAddr},再调网关 API 更新白名单规则
  • 回调请求有 20 秒超时,接收端要快速返回,别在里面串长耗时操作
  • 接口需要鉴权的话,token 放请求头里

效果:DDNS 更新完成后,网关白名单自动刷新,全程无人工。

把域名变更记录归档进日志库

排查问题和审计都需要每次 IP 变化留痕、带时间戳。

  • URL 指向 ELK 的 Filebeat HTTP input 或任意归档接口,IP、域名、时间都放进 JSON 请求体
  • 纯归档场景可开启"禁用成功字符串检测",只以 HTTP 200 判定成功

效果:每一条域名变更在日志库里都变成一条可检索的审计记录。

用速查表处理常见故障现象

现象可能原因处理动作
完全不触发开关没开,或本次域名并没有实际变化确认 Webhook 开关与 URL,先用测试按钮验证连通性
测试通过、真实事件却没反应接口返回值没匹配到预设的"成功内容"把接口真实返回内容加进成功字符串,或开启"禁用成功字符串检测"
回调 400 / 401请求体格式不符、或缺少鉴权请求头用测试按钮发一次看错误详情,补上 Content-Type 和 token 请求头
IP 显示"获取 IP 失败"本次 IP 获取失败,且开了获取失败触发检查获取 IP 方式(网卡/URL)与网络状态

生产上建议把"获取 IP 失败时触发"打开——最难受的故障恰恰是 IP 没取到却没人告诉你。另外回调有 20 秒超时,接收端务必快速响应;能走 HTTPS 的接口尽量别用明文 HTTP。

【免费下载链接】lucky软硬路由公网神器,ipv6/ipv4 端口转发,反向代理,DDNS,WOL,ipv4 stun内网穿透,cron,acme,rclone,ftp,webdav,filebrowser项目地址: https://gitcode.com/GitHub_Trending/luc/lucky

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询