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:05 | 2026-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),仅供参考