azure - 有关 Azure 虚拟网络上的转发流量的问题
问题描述
我有一个路由问题,我正在 Azure 云平台中努力解决,该问题涉及需要通过另一个 vnet 和两个 VPN 隧道从一个 vnet 路由到另一个 vnet 的流量。
这是设置的描述:我确实有两个 Azure 虚拟网络(VNET1 和 VNET2),每个都有自己的基于路由的 Azure VPN 网关和一个连接到第一个 Azure 的第 3 方虚拟网络(VNET3)通过 IPsec VPN 隧道的虚拟网络 VNTE1。以下是所有 3 个虚拟网络的地址空间。
- VNET1 10.20.0.0/16 (Azure vnet)
- VNET2 10.30.0.0/16 (Azure vnet)
- VNET3 10.0.0.0/12(第 3 方 vnet)
这是我能做的:
- VNET1 通过 IPsec VPN 隧道与 VNET3 连接。因此,我可以从 VNET1 10.20.10.5 中的 VM ping VNET3 10.0.0.1 中的 VM,他们可以 ping 我回来。
- VNET1 通过 IPsec VPN 隧道与 VNET2 连接。因此,我能够从 VNET1 10.20.10.5 中的 VM ping VNET2 10.30.10.5 中的 VM
这是我不能做的:
- 我无法从 VNET2 10.30.10.5 中的 VM ping VNET3 10.0.0.1 中的 VM。
到目前为止,这是我试图解决问题但没有成功的方法:
- 我的假设是网络 VNET2 不知道如何将流量路由到网络 VNET3。因此,我创建了一个 Azure 路由表,并将该路由表分配给子网 10.30.10.0/24,并创建了所有到网络 10.0.0.0/12 的流量都应该路由到 VNTE2 的 VPN GateWay 的规则。我的期望是,一旦流量到达 GW,它将到达知道如何将其路由到 VNET3 的 VNET1。这没有用。
- 虽然我认为不需要,因为 VNET1 已经知道如何将流量路由到 VNET3,但我还为 10.0.0.0/12 创建了一个类似于上面的路由表。这也没有帮助。
我是否错过了某处的路线,如果有,是哪条规则和在哪里?或者我什至需要一个虚拟机作为路由器?(我希望不是)
解决方案
我认为您的问题是 Azure 虚拟网关的限制:
使用这种机制通过基于策略的VPN设备连接的本地网络只能连接到Azure虚拟网络;它们无法通过同一 Azure VPN 网关传输到其他本地网络或虚拟网络。
https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-connect-multiple-policybased-rm-ps
因此,即使您使用同一个 VPN 网关连接 VNET 3 和 VNET 2,根据设计,VNET 3 和 VNET 2 也无法通信。
要解决此问题,我建议使用对等互连。您的配置类似于经典的 Hub-Spoke 拓扑。您的 VNET1 是 Hub,VNET2 是 Spoke,VNET3 是一种“本地”。
无需更改 VNET1 和 VNET3 之间的配置。您需要在 VNET1 和 VNET2 之间以及向后建立对等互连并应用以下配置:
- 在集线器中配置对等连接以允许网关传输。
- 将每个辐条中的对等连接配置为使用远程网关。
- 配置所有对等连接以允许转发流量。
在这种情况下,VNET3 将能够与 HUB (VNET1) 和所有辐条(VNET2 和任何其他连接到 VNET1)进行通信。当隧道启动时,VNET2 可以与 HUB (VNET1) 和本地 (VNET3) 通信。
警告:如果没有 HUB 中的转发网关,辐条之间无法相互通信,即如果您添加 VNET4 与 VNET1 对等,VNET4 将无法 ping VNET2 中的虚拟机。但是他们可以在没有任何额外设备的情况下与 HUB 和本地通信。
推荐阅读
- kubernetes - 如何将与服务的连接限制为 Kubernetes 中的 pod 列表?
- javascript - 使用 Firebase 数据库进行分页/延迟加载
- asp.net-core - GraphQL Mutation 有关于变量的问题
- r - biplot R中特定点的文本标签
- python - 有没有办法使用 Mayavi 填充陀螺仪表面的一侧?
- reactjs - 如何不显示重复的元素?
- c# - System.Data.MissingPrimaryKeyException:“表没有主键。”
- android - Jetpack compose 中的可组合中心
- google-sheets - 如何使用 Google 财经检查股市是否开市(表格)
- c++ - C++ ABI changes