我正在测试一种场景,我们需要将所有流量转发到一台虚拟机,然后这台虚拟机应该将流量转发到目标机器。(不能说“为什么”)。
- 创建了
Vnet "VN"
、、Subnet "SN"
3NICs
和 3VMs
(使用:Standard_DS1_v2
大小和最新的Win 2022 image
)。 - 所有内容均位于同一帐户和订阅下的同一个 Azure 区域内。
- 创建
routing table "RT"
并添加了两个routes
。 - 使
VM2
的 IP 变为静态。 IP Forwarding
已启用VM2
。- 在所有虚拟机上禁用 Windows 防火墙。
IP 包括:
VM | IP
----------------------
VM1 | 10.3.1.4
VM2 | 10.3.1.5
VM3 | 10.3.1.6
RT 路线:
Name | Address Prefix | Next Hop Type | Next Hop Address
----------------------------------------------------------------------------
VM1-VM3 | 10.3.1.6/32 | Virtual Appliance | 10.3.1.5
VM3-VM1 | 10.3.1.4/32 | Virtual Appliance | 10.3.1.5
在将路由表附加RT
到SN
子网之前,网络正常,我可以ping
从任何地方到任何地方。
附加到 后RT
,SN
从任意位置 ping 任意消息“ Request timed out
”。
我尝试过的:
- 不同的子网:也不起作用。
- 添加
nsg
和允许ICMP
。 - 添加
nsg
并允许所有流量(any
至any
)。 - 重现整个事情。
- 不同的帐户和订阅。
- 问AI是否可能。它回答“是的”。
- 尝试了许多 YouTube 视频,结果相同。唯一的区别是他们使用真实的(付费)Azure 帐户。
- 我甚至尝试安装路由和远程访问服务 (RRAS),将其配置为 LAN 路由,并添加以主机网关为网关的静态路由。
我别无选择,也毫无头绪。
怎么了?
经过几周的彻底故障排除后,
我终于能够让它工作了。
同一子网内的 IP 转发:
看起来 IP 转发在同一个子网内不起作用。虽然我找不到这种行为的官方确认,但我的发现表明它不是这样工作的,这对我来说是有道理的。然而,这一观察结果应该得到独立验证。
话虽如此,连接应该按预期运行。但是,由于路由表和用户定义路由 (UDR) 中的 CIDR 条目不正确,无法建立连接。问题解决后,设置按预期运行,绕过所有路由表和 UDR。
在子网和 VNet 上进行测试
在跨不同子网和虚拟网络 (VNet) 测试设置时,路由表配置正确。但是,我最初使用包含以下命令的脚本部署了设置:
默认情况下,对等虚拟网络禁用 IP 转发。要启用此功能,需要以下附加交换机:
添加此开关后,IP 转发即可正常运行。