【发布时间】:2021-12-18 19:08:07
【问题描述】:
我在位于同一虚拟网络中的两个资源之间存在访问问题。
具体来说,我在 VNet“Common”内的 SubNet“Data”上有一个带有 SQL 实例的 VM。
我在“前端”子网上有另一个带有报告服务实例的虚拟机,也在“通用”VNet 内。
这两个虚拟机因此在同一个 VNet 下,但在两个不同的子网下。
当我尝试从 Reporting 实例连接到 SQL 数据库时,我收到一条错误消息,告诉我无法访问它。
我通过在我的子网“数据”的 NSG 中手动添加一条规则来解决该问题,以允许来自 SQL 端口上“报告”VM 的 IP 的通信。
只要我这样做,它就会起作用。我可以从子网“前端”的报告中连接到子网“数据”上的 SQL 数据库。
但我不明白的是,我的子网“数据”已经在其 NSG 上包含一个入站规则,如果呼叫来自虚拟网络,则允许所有入站连接(在所有端口上)。这是默认存在的规则(称为 AllowVnetInBound)。
通常,我不必为我的 VM 报告添加特定规则。特别是因为我的虚拟机有一个动态 IP,所以这个解决方案是不可行的。
我错过了什么?
为什么以“VirtualNetwork”为源的“AllowVnetInBound”规则不够用?
编辑: 这是“数据”子网的 NSG 入站规则。我已经用绿色概述了我必须添加的规则才能使通信正常工作。没有这条规则,沟通就无法进行。
【问题讨论】:
-
你使用的是私网还是公网ip?
-
能否分享您的 NSG 规则截图?
-
@Jul_DW : 我用截图更新了原帖:)
-
能否检查一下虚拟机内部的防火墙是否关闭?
-
您能否在两个虚拟机之间进行 ping 操作或在它们之间调用任何其他协议?还是只有 SQL 无法访问?此外,您可以启用 NSG 流日志来准确分析正在发生的事情。
标签: azure azure-virtual-machine azure-virtual-network