我有两个 VNET(VNET1 和 VNET2)。VNET1 允许多个站点到站点和指向站点的连接。VNET2 包含一个内部负载均衡器和一组用于该负载均衡器后端池的虚拟机。我已成功在 VNET1 和 VNET2 之间设置了 VNET 对等,这允许 VNET1 中的本地客户端访问 VNET2 中的内部负载均衡器,但也允许它们访问 VNET2 中的虚拟机,而我想避免这种情况。
我正在尝试限制连接到 VNET1 的本地客户端,以便它们只能看到 VNET2 上的内部负载均衡器(而不是后端池中的虚拟机)。我尝试通过创建以下规则在虚拟机所在的子网上设置 NSG(请注意,负载均衡器位于 VNET2 内的不同子网上,没有应用 NSG)。
- 规则 1:允许 LoadBalancer IP 到 VM 子网(后端 VM 池)。
- 规则 2:拒绝所有其他 VnetInBound 流量(这将覆盖默认的 AllowVnetInBound)。
上述规则阻止 VNET1 看到 VNET2 中的任何内容,但也因某种原因阻止发送到负载均衡器。有人知道如何实现此配置吗?
答案1
我已成功在 VNET1 和 VNET2 之间设置了 VNET 对等,这允许 VNET1 中的本地客户端访问 VNET2 中的内部负载均衡器,但也允许它们访问我想要避免的 VNET2 中的虚拟机。
当您从 Vnet1 访问位于 Vnet2 上的内部 LB 时,LB 不会更改数据包中的源 IP 地址,它只会将目标 IP 地址(LB IP 地址)更改为位于后端池上的 VM 的特定 IP 地址。这是内部 LB 的功能,因此我们不应拒绝 Vnet1 中的客户端访问 Vnet2 中的 VM。
上述规则阻止 VNET1 看到 VNET2 中的任何内容,但也因某种原因阻止发送到负载均衡器。有人知道如何实现此配置吗?
这是预期的行为,正如我上面所解释的,我们需要在该 NSG 中添加另一条入站规则,以允许 Vnet1 中客户端的源 IP 地址,或允许任何源。至于端口,您可以在该规则中添加一些特定端口。