问题描述
使用Azure Batch Account服务(批处理),所访问的资源受防火墙保护。
现在需要把Batch Account服务池中的实例地址IP加入到防火墙白名单中,但是由于Batch Account被没有指定的出口访问IP地址,所以需要把Batch Account服务的全部IP地址加入到白名单中,但是,它的范围的确太多了!
如下全部都是,并且还有可能变动!
(参考:Azure IP Ranges and Service Tags – China Cloud )
{ "name": "BatchNodeManagement", "id": "BatchNodeManagement", "properties": { "changeNumber": 5, "region": "", "regionId": 0, "platform": "Azure", "systemService": "BatchNodeManagement", "addressPrefixes": [ "40.72.73.0/27", "40.73.32.87/32", "40.73.37.246/32", "40.73.98.39/32", "40.73.100.179/32", "40.73.141.64/27", "40.73.172.128/27", "42.159.9.44/32", "42.159.134.233/32", "42.159.234.9/32", "52.130.1.192/27", "52.130.9.0/27", "52.130.17.0/27", "52.131.17.32/27", "52.131.145.32/27", "139.217.1.207/32", "139.217.51.128/27", "139.217.171.128/27", "2404:7940:1::300/122", "2404:7940:101::300/122", "2404:7940:201::300/122", "2404:7940:301::300/122", "2406:e500:2402::5c0/122", "2406:e500:2602::5c0/122" ], "networkFeatures": [ "API", "NSG" ] } }
那么,是否有方案可以固定Batch服务的出口IP地址呢?
问题解答
答案当然是可以的。
参考文档:创建具有指定公共 IP 地址的 Azure Batch 池
在 Azure Batch 中,可在 Azure 虚拟网络 (VNet) 的子网中创建 Batch 池。 通过 Batch 创建的公共 IP 地址可以访问 Batch 池中的虚拟机 (VM)。 这些公共 IP 地址可以在池的生存期内更改。 如果未刷新 IP 地址,则网络设置可能会过时。
可改为创建静态公共 IP 地址的列表以用于池中的虚拟机。 在某些情况下,你可能需要控制公共 IP 地址的列表,以确保它们不会意外更改。 例如,你可能正在使用外部服务(如数据库),该服务限制对特定 IP 地址的访问。
根据文档创建Public IP后,只需要在创建Pool的时候,设置创建的IP地址就可以了。
但是需要注意两点:
- 请确保没有其他资源使用这些公共 IP 地址,否则池可能会遇到分配失败的情况。 仅对 VM 配置池使用这些公共 IP 地址。
- 该数目必须至少等于池的 targetDedicatedNodes 和 targetLowPriorityNodes 属性之和。
注意:如果只有一个节点,就一个IP地址就可以了。如果有n个节点,则需要n个Public IP.
当创建完成后,远程进入到实例内部,访问 https://whatsmyip.com 验证IP地址是否正确。
参考资料
Azure IP Ranges and Service Tags – China Cloud : https://www.microsoft.com/en-us/download/details.aspx?id=57062
创建具有指定公共 IP 地址的 Azure Batch 池 : https://docs.azure.cn/zh-cn/batch/create-pool-public-ip
当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!