接入钉钉机器人时提示 ip 不在白名单报错怎么修复

文章导读
遇到这个报错,最直接的处理方式是把调用机器人接口的服务器公网 IP,添加到钉钉机器人安全设置里的白名单中。
📋 目录
  1. A 命令速用版
  2. B 为什么会这样
  3. C 分步处理
  4. D 怎么验证是否生效
  5. E 常见坑
  6. F 参考来源
A A

遇到这个报错,最直接的处理方式是把调用机器人接口的服务器公网 IP,添加到钉钉机器人安全设置里的白名单中。

先说结论:这是钉钉自定义机器人的安全机制拦截了请求,需要在钉钉客户端内完成 IP 配置

  • 先确认:获取服务器出口公网 IP
  • 先处理:在钉钉群机器人设置中添加该 IP
  • 再验证:发送测试消息确认接口通畅

命令速用版

如果你正在 Linux 服务器上操作,可以先用以下命令查看当前服务器的出口公网 IP,确认后再去钉钉后台配置:

curl ifconfig.me
# 或者
curl cip.cc

拿到显示的 IP 地址后,复制下来备用。如果服务器经过 NAT 网关或多网卡,请确保获取的是实际访问外网的 IP。

接入钉钉机器人时提示 ip 不在白名单报错怎么修复

为什么会这样

钉钉自定义机器人提供了安全设置选项,其中"IP 地址(段)白名单"是可选开启的。一旦开启,钉钉服务器会检查发起 HTTP POST 请求的源 IP 是否在名单内。如果不在,接口会直接返回错误码,提示 IP 不在白名单,以此防止 webhook 地址泄露后被他人恶意调用。

分步处理

按照以下步骤在钉钉客户端中完成配置:

接入钉钉机器人时提示 ip 不在白名单报错怎么修复
  1. 进入群设置:打开钉钉 PC 端或手机端,进入目标群聊,点击右上角设置图标。
  2. 找到机器人:在群设置中找到"智能群助手"或"机器人"选项,点击已添加的自定义机器人。
  3. 编辑安全设置:在机器人详情页面,找到"安全设置"区域。如果之前未设置,可能需要先开启 IP 白名单功能。
  4. 添加 IP:将之前获取的服务器公网 IP 填入白名单输入框。支持单个 IP 或 CIDR 格式(如 192.168.1.0/24)。
  5. 保存配置:点击保存或完成按钮,使设置生效。

怎么验证是否生效

配置完成后,建议先通过命令行验证,确认通路正常后再调试业务代码:

export DING_TOKEN="your_access_token"
curl 'https://oapi.dingtalk.com/robot/send?access_token=$DING_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"msgtype": "text", "text": {"content": "测试消息"}}'

如果返回 errcode 为 0 且 errmsg 为 ok,说明 IP 白名单已生效。如果仍报错,请检查服务器是否有多个出口 IP 或代理配置。

安全提示:避免在 shell 历史记录中明文留存 token,测试后可执行 history -c 清除记录,或在生产环境中使用密钥管理工具。

常见坑

  • NAT 网关 IP:云服务器内网 IP 无效,必须填写公网 IP。如果服务器通过 NAT 网关 outbound,要填网关的公网 IP。
  • 动态 IP:家庭宽带或部分云环境 IP 可能变动,固定 IP 更稳定,否则需要定期更新白名单。
  • 多个出口:服务器若有多个网卡或路由策略,请求可能从不同 IP 发出,建议统一出口或添加所有可能 IP。
  • CIDR 格式:填写段时要注意格式正确,避免掩码错误导致范围过大或过小。
  • Webhook 保密:机器人 webhook 地址包含 access_token,泄露后他人可冒充机器人发消息,请勿提交至代码仓库。

参考来源

  • 钉钉开放平台,文档标题:自定义机器人接入,域名:open.dingtalk.com