【Azure API 管理】APIM集成内网虚拟网络后,启用自定义路由管理外出流量经过防火墙(Firewall),遇见APIs加载不出来问题

使用 Azure 虚拟网络,Azure APIM 可以管理无法通过 Internet 访问的 API,达到以保护企业内部的后端API的目的。在虚拟网络中,启用网络安全组(NSG:Network Security Group)来控制出站,入站的端口,我们可以形象的把它比喻成一道门,需要满足条件的流量才能通过这道安全的大门。

通过安全大门以后,我们就需要有路,才能达到目的。而默认的网络路径由Azure的骨干网络控制,如果需要通过公司自己的防火墙(Azure Firewall或企业自己的防火墙)。在虚拟网络中,通过路由表(Route Table)来指定下一跳(Next Pod),通过使用0.0.0.0/0的配置方式(UDRs:user-defined routes),把虚拟网络中的所有流量都导入并经过防火墙。实现企业级的安全保护。

以上两句总结起来就是:NSG是门,UDR是路。解决方案架构图为:

【Azure API 管理】APIM集成内网虚拟网络后,启用自定义路由管理外出流量经过防火墙(Firewall),遇见APIs加载不出来问题

但是,在搭建APIM VNET时候,却遇见了各种各样的错误。

1)因为NSG的缘故,必须的端口不通。导致APIM的网络连接状态“Network connectivity status”页面中状态显示为 Error

【Azure API 管理】APIM集成内网虚拟网络后,启用自定义路由管理外出流量经过防火墙(Firewall),遇见APIs加载不出来问题

 

2)因为配置了自定义路由(UDR), 导致了APIM页面中的APIs,Repository等页面错误,且门户一直弹出Failed to connect to management endpoint错误消息

【Azure API 管理】APIM集成内网虚拟网络后,启用自定义路由管理外出流量经过防火墙(Firewall),遇见APIs加载不出来问题

 

问题分析

首先:以上的两个问题,都可以在"  "一文中找到答案。

问题一端口问题:添加上文档中所列出的所有必要端口,就可以实现网络连接状态全部Success的状态。

API 管理所需的端口:可以使用 网络安全组控制其中部署了 API 管理的子网的入站和出站流量。 如果其中的任一端口不可用,API 管理可能无法正常工作且不可访问。 将 API 管理与 VNET 配合使用时,另一个常见的错误配置问题是阻止了这些端口中的一个或多个。

VNET 中托管 APIM服务实例时,将使用下表中的端口。

源/目标端口 方向 传输协议
源/目标 目的 (*) 虚拟网络类型
* / [80], 443   入站   TCP   INTERNET/VIRTUAL_NETWORK   客户端与 API 管理的通信   外部  
* / 3443   入站   TCP   ApiManagement / VIRTUAL_NETWORK   Azure 门户和 PowerShell 的管理终结点   外部和内部  
* / 443   出站   TCP   VIRTUAL_NETWORK / Storage   与 Azure 存储的依赖关系   外部和内部  
* / 443   出站   TCP   VIRTUAL_NETWORK / AzureActiveDirectory   Azure Active Directory 和 Azure KeyVault 依赖项   外部和内部  
* / 1433   出站   TCP   VIRTUAL_NETWORK / SQL   访问 Azure SQL 终结点   外部和内部  
* / 443   出站   TCP   VIRTUAL_NETWORK / AzureKeyVault   访问 Azure KeyVault   外部和内部  
* / 5671, 5672, 443   出站   TCP   VIRTUAL_NETWORK / EventHub   事件中心策略日志和监视代理的依赖项   外部和内部  
* / 445   出站   TCP   VIRTUAL_NETWORK / Storage   与适用于 GIT 的 Azure 文件共享的依赖关系   外部和内部  
* / 443, 12000   出站   TCP   VIRTUAL_NETWORK / AzureCloud   运行状况和监视扩展   外部和内部  
* / 1886、443   出站   TCP   VIRTUAL_NETWORK / AzureMonitor   发布诊断日志和指标、资源运行状况和 Application Insights   外部和内部  
* / 25、587、25028   出站   TCP   VIRTUAL_NETWORK/INTERNET   连接到 SMTP 中继以发送电子邮件   外部和内部  
* / 6381 - 6383   入站和出站   TCP   VIRTUAL_NETWORK/VIRTUAL_NETWORK   访问 Redis 服务以获取计算机之间的缓存策略   外部和内部  
* / 4290   入站和出站   UDP   VIRTUAL_NETWORK/VIRTUAL_NETWORK   同步用于计算机之间的策略的计数器   外部和内部  
* / *   入站   TCP   AZURE_LOAD_BALANCER/VIRTUAL_NETWORK   Azure 基础结构负载均衡器   外部和内部  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwdzpx.html