我在 Azure 中有一个 VNet,其中包含一些虚拟机。VNet 有一个站点到站点 VPN 连接,连接到我的场所。从本地客户端,我可以成功连接到虚拟机的私有 IP 地址。但是,本地客户端无法连接到虚拟机的公共 IP 地址。另一方面,如果我尝试从不同的互联网连接(手机上的 3g 或家里)连接到虚拟机,那么我可以毫无问题地连接到公共地址。本地网络设备上没有可以阻止此流量的网络 ACL(实际上,到公共 IP 地址的跟踪路由在 ntwk.msn.net 地址处中断)。您对问题可能是什么有什么看法?
更新 2:我已在单独的 IP 范围内启动了新的虚拟网络,并启动了具有公共 IP 的新虚拟机。连接到此虚拟机的公共 IP 工作正常。原始虚拟网络的 VPN/路由中的某些内容似乎是问题的一部分,因为没有 VPN 一切都很好。
更新:我开始认为这与虚拟机上的 NIC 有关。Azure NIC 在同一个 NIC 上具有私有 IP 和公共 IP,但虚拟机看不到公共 IP 地址。现在,NIC 所在的 vNet 具有某些路由规则,这些规则指定某些流量应通过我们的 VPN 路由到本地。我认为来自本地的请求通过公共互联网成功到达虚拟机的公共 IP,但回复是从私有 IP 通过 VPN 发送的,客户端会丢弃它,因为它来自不同的 IP。由于虚拟机上的操作系统不知道公共 IP 地址,我不知道如何解决这个问题。
更新 3:我使用 Wireshark 嗅探虚拟机上的数据包,发现当我从本地连接到外部 IP 时,虚拟机没有收到任何数据包。因此问题可能出在 VNet、公共 IP 的 SNAT 或虚拟机本身的路由上。
答案1
您的问题可能是由您的客户端或本地组织内网边缘设备(如防火墙、代理、NAT)引起的。我认为可能是由本地防火墙或本地防火墙引起的。
但是,您仍然应该检查一些要点。以下示例步骤适用于 Windows VM(故障排除思路也适用于 Linux VM):
- 您的客户端访客或公网防火墙是否已经阻止RDP流量。
检查组织内部网边缘设备是否存在以下情况:
a. 内部防火墙阻止 HTTPS 连接或 RDP 到互联网的连接。
bA 代理服务器阻止远程桌面连接。
c. 在边缘网络设备上运行的入侵检测或网络监控软件阻止了远程桌面连接。
您的 NSG 阻止来自互联网的 RDP 流量。
有关连接到 Azure 中的 Windows VM 的问题的详细 RDP 故障排除步骤,请参阅此文档。
有关连接到 Azure 中的 Linux VM 的问题的详细 SSH 故障排除步骤,请参阅此文档。