GitLab 测试内网 Webhook 时返回:

URL is blocked:
Requests to the local network are not allowed

这类提示首先指向 GitLab 的出站安全检查,不是目标服务返回的业务错误。目标能从个人电脑访问,也不证明 GitLab 允许向它发送请求。

项目 Webhook 与管理员策略是两层

项目层配置接收 URL、触发事件和密钥;管理员层控制服务器是否允许访问相应网络。旧版本中项目入口曾位于 Settings > Integrations,实际菜单应按当前版本查找。GitLab Webhooks

即使项目 URL 填对了,管理员出站策略仍可能拒绝它。反过来,放开网络也不会自动创建项目 Webhook。

先判断需要允许什么

2018 年维护自建实例时,我在 Admin Area 的 Settings > Outbound Requests 找到允许 hooks 和 services 访问本地网络的选项,调整后当时的内网请求可以继续。

但全局开放本地网络扩大了服务端请求伪造风险。对支持相应能力的版本,应优先评估固定 IP 或域名的允许列表,结合网络侧限制目标和端口,而不是为了一个 CI 服务开放整个内网。GitLab 出站请求安全说明

如果自己不是实例管理员,应提交目标、端口和用途给有授权的维护者处理,不尝试通过其他地址形式绕过限制。

接收端仍然要验证身份

内网可达不等于可信。按所用版本配置并验证 Secret Token 或对应的签名机制,接收端还应处理重复投递、失败重试和权限边界。令牌不要放到 URL、日志或公开截图里。

分阶段验证

先保存策略拒绝的原始提示,确认实际接收地址和解析结果;完成受控放行后,再看连接、TLS、认证和响应状态。策略拦截消失,不代表接收端业务已经成功。

测试会真实向接收端发送事件,可能触发流水线或其他副作用,应使用受控环境和明确事件范围。不要反复点测试来替代对网络策略与接收逻辑的检查。