如何查找Azure函数应用程序IP以获取白名单

如何查找Azure函数应用程序IP以获取白名单,azure,azure-functions,Azure,Azure Functions,我开发了一个PowerShell脚本,每天使用MX record DNS向指定用户发送一次邮件。邮件已成功传递,但所有邮件都将进入垃圾邮件文件夹 Exchange团队分析了邮件头,并回答说发件人IP地址需要白名单 如何在我使用功能应用程序的消费计划时查找Azure功能IP或IP范围 问候,, K Senthillajan在Azure功能背后的后台是一个Azure应用程序服务。那么,您如何找到它使用的IP地址呢 在应用程序服务设置页面中有包含当前出站IP地址的部分,请参阅 但请记住,由于该平台是

我开发了一个PowerShell脚本,每天使用MX record DNS向指定用户发送一次邮件。邮件已成功传递,但所有邮件都将进入垃圾邮件文件夹

Exchange团队分析了邮件头,并回答说发件人IP地址需要白名单

如何在我使用功能应用程序的消费计划时查找Azure功能IP或IP范围

问候,,
K Senthillajan

在Azure功能背后的后台是一个Azure应用程序服务。那么,您如何找到它使用的IP地址呢

在应用程序服务设置页面中有包含当前出站IP地址的部分,请参阅

但请记住,由于该平台是一个PaaS服务,它可能会在没有任何通知的情况下转移到其他硬件,并获得一组完全不同的出站IP地址

有关更多详细信息,请参阅twitter与Azure支持的对话。讨论的结论是IP范围不是静态的,可能会发生变化


了解Azure函数可能使用的IP的唯一可靠方法是引用Microsoft Azure发布的包含的XML文档,这使得此任务的实现有点困难。

我使用此技术动态识别IP

将定期调用运行状况端点,并将返回的IP列入白名单


app.get("/health", function(req, res) {
    unirest
    .get('https://<fn-appname>.azurewebsites.net/ipinfo')
    .headers({'Accept': 'application/json', 'Content-Type': 'application/json'})
    .send()
    .then((response) => {
        res.send(response.body);
      });

});

app.get("/ipinfo", function(req, res) {
    const ipaddress=req.headers['x-forwarded-for'];
    res.send({ip_address:ipaddress});
});



app.get(“/health”),函数(req,res){
优利斯特
.get('https://.azurewebsites.net/ipinfo')
.headers({'Accept':'application/json','Content Type':'application/json'})
.send()
。然后((响应)=>{
res.send(response.body);
});
});
app.get(“/ipinfo”),函数(req,res){
const ipaddress=req.headers['x-forwarded-for'];
res.send({ip_地址:ipaddress});
});

不幸的是,自从金的回答之后,情况发生了变化。现在,您必须通过Azure资源管理器进入JSON文件以查找可能的出站IP地址。根据:

  • 登录到
  • 选择订阅{您的订阅}提供商站点
  • 在JSON面板中,找到id属性以函数应用程序名称结尾的站点
  • 请参阅OutboundIPAddress和可能的OutboundIPAddress
  • 或者,您也可以通过Az Powershell模块执行此操作:

    az webapp show--资源组--名称--查询OutboundIPAddress--输出tsv

    az webapp show--资源组--名称--查询 可能的边界IP地址--输出tsv


    “遗憾的是,我们无法比数据中心IP地址更明确地确定您的功能的IP地址范围。”如果我们使用应用程序服务计划,是否有可能获得IP范围?一个非常昂贵的选择是将您的功能部署在一个孤立的应用程序服务计划上,并通过它获得一个专用IP,但成本相当高。除此之外,各个数据中心的IP范围可以在XML文档中找到,您可以从我上面文章的链接下载。我不知道有什么方法可以更明确地说出IPs应用程序服务(可能?)使用的子集。谢谢Kim,关于SMTPauth,ir可以使用SMTPauth实现同样的功能吗?我似乎没有“提供者”,只有“资源提供者”,而且它们不可点击,所以“az”命令可以很好地工作,对于那些有相同问题的人,谢谢!这对我帮助很大,因为我在其他地方找不到这些信息。