VNET 上的 Azure Functions 无法与本地资源通信

Posted

技术标签:

【中文标题】VNET 上的 Azure Functions 无法与本地资源通信【英文标题】:Azure Functions on VNET cannot communicate to on-premises resources 【发布时间】:2021-07-14 16:04:14 【问题描述】:

我在 Azure 中有一个 VNET,它通过 S2S 隧道连接到我们的本地网络。此 VNET 包含一个能够遍历虚拟网络网关并访问我们的本地资源的 VM。我们的本地资源能够看到虚拟机。我们已向此 VNET 添加了应用服务计划 (EP1) 和功能。 Function 应用程序可以与 VM 通信/ping,但是,它无法 ping 我们的本地资源。我反复阅读了文档,根据我们能够确定的所有内容,我们的配置正确。

这只是 Azure 无法做到的事情吗?或者有没有人为他们进行过这种类型的设置工作?

我正在考虑放弃应用服务计划,只在虚拟机上运行 Kubernetes 并收工。

【问题讨论】:

使用混合连接对您有用吗? docs.microsoft.com/en-us/azure/azure-functions/… 和 stefanroth.net/2019/01/13/… 这个问题你能解决吗? 我们没有使用混合连接或专用端点。我们需要访问我们所有的本地资源,并且真的没有时间来管理和维护数百个私有端点。 【参考方案1】:

我建议您可以根据您目前的描述检查以下几个方面。

使用 Azure Functions Premium 计划或专用计划(需要 Standard、Premium、PremiumV2、PremiumV3 或 Elastic Premium 定价计划。)

在本机 Windows 应用中,ping、nslookup 和 tracert 工具无法通过应用控制台运行,您可以使用 tcpping.exe hostnameorPrivateIPaddress [optional: port] 测试与主机和端口组合的 TCP 连接。

将应用设置 WEBSITE_VNET_ROUTE_ALL 设置为值 1,以确保您的所有出站呼叫从您的应用到您的 VNet。如果使用 Azure DNS 专用区域,还需要将 WEBSITE_DNS_SERVER 设置为值 168.63.129.16

使用 Azure VNet 中的空子网(不是部署在子网内的其他资源)或专用子网与函数应用集成。为避免子网容量出现​​任何问题,您应该使用具有 64 个地址的 /26

您正在尝试使用区域 VNet 集成功能访问非 RFC 1918 地址。

您的本地网关是否配置为将流量路由回 Azure?

是否有 NSG 阻止来自您的集成子网的出口?

如果您有任何疑虑,请告诉我。

【讨论】:

我们已经确认了这一切。我在 MS 支持上花了很多时间,我们得出的结论与我们配置 VNET 的顺序有关。我们用虚拟机创建了 VNET,然后连接了我们的 S2S 隧道。相信(我们将在本周晚些时候对此进行测试)如果我们拆除 S2S 隧道,并在将专用功能子网添加到 VNET 后重建它,连接过程将正确配置路由。由于子网是在 S2S 之后添加的,因此我们这边没有正确创建路由。

以上是关于VNET 上的 Azure Functions 无法与本地资源通信的主要内容,如果未能解决你的问题,请参考以下文章

Azure Vnet Blob 存储

是否可以在 VNET 上使用公共 IP 访问服务配置 Azure API 管理

Azure基础:何时使用Azure Functions无服务器计算(11)

Azure vNet

Azure vNet

Azure SQL 槽 VNet 的 Azure 函数连接字符串