You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Azure AD机器人的POST请求通过VPS服务器防火墙?

解决Azure动态IP机器人POST请求被VPS防火墙拦截的方案

以下是几种实用的解决思路,按实现复杂度和安全性排序:

1. 利用Azure服务标签配置防火墙白名单

Azure为旗下服务提供了服务标签(Service Tags),这些标签对应了该服务的所有IP地址段,并且会自动更新。你可以直接在VPS的防火墙中白名单Bot Service对应的服务标签,无需手动跟踪动态IP:

  • 对于Windows防火墙:新建入站规则,在“远程IP地址”选择“自定义”,添加AzureBotService标签(部分防火墙需手动导入Azure服务标签的IP列表,可从Azure官方渠道获取最新JSON文件提取对应段)。
  • 对于Linux iptables:定期拉取Azure服务标签JSON,提取AzureBotService的IP段,批量添加iptables允许规则,可编写脚本定时执行更新。

2. 给机器人分配静态出站IP

如果你的Azure Bot Service使用Premium SKU,可以通过虚拟网络(VNet)+NAT网关配置固定出站IP:

  • 创建一个Azure虚拟网络,将Bot Service部署到该VNet的子网中。
  • 配置NAT网关并关联该子网,为NAT网关分配静态公共IP。
  • 此时机器人的所有出站请求都会使用这个静态IP,直接在VPS防火墙中白名单该IP即可。

3. 改用API密钥/令牌验证替代IP白名单

放弃IP白名单,转而通过身份验证确保请求合法性,这是更灵活的方案:

  • 在机器人的POST请求中添加自定义请求头(比如X-API-Key),值为预先约定的密钥。
  • 在VPS的服务器代码中,先校验请求头中的密钥是否匹配预设值,只有验证通过才处理请求。示例(Node.js):
app.post('/webhook', (req, res) => {
  const apiKey = req.headers['x-api-key'];
  if (apiKey !== 'YOUR_SECRET_KEY') {
    return res.status(403).send('Unauthorized');
  }
  // 处理请求逻辑
  res.status(200).send('Success');
});
  • 这种方式不受IP变化影响,同时安全性更高(只要密钥不泄露即可)。

4. 使用Azure Front Door作为中转代理

将VPS服务器的流量通过Azure Front Door转发,机器人直接请求Front Door的域名:

  • 在Azure中创建Front Door实例,配置后端为你的VPS服务器地址。
  • 在VPS防火墙中只允许Front Door的IP段(Front Door的IP列表固定且有官方维护)。
  • 机器人的POST请求发送到Front Door的域名,由Front Door转发到VPS。这种方案还能附带CDN、DDoS防护等额外功能。

内容的提问来源于stack exchange,提问作者eligolf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 09:21:06