【问题标题】:Azure virtual network hybrid connectionAzure 虚拟网络混合连接
【发布时间】:2018-03-19 23:13:28
【问题描述】:

我在网络中有一个 Azure 虚拟网络设置和一个 VM 设置。我已经在 VM 上安装了混合连接管理器应用程序。

我还有一个 Azure 应用服务,我在它和虚拟机之间创建了一个混合连接,他们都声称他们很高兴地相互连接。

我还在虚拟机上安装了一个正在监听http://localhost:1234的应用

谁能告诉我我使用什么 IP 从我的应用服务中与 VM 上的http://localhost:1234 交谈?例如是 [VM internal IP]:1234 还是 [VM public IP]:1234,还是别的什么。目前没有任何消息,所以我想确保 IP 地址不是问题。

【问题讨论】:

  • 尝试为您的虚拟机分配一个 dns 名称并使用应用服务中的名称,因为如果您使用的是动态 IP,则使用 IP 并不总是合适的解决方案。

标签: azure azure-virtual-network


【解决方案1】:

只需使用 VM 的计算机名称即可。例如,从应用服务中的代码调用 SQLSRV009:1234。门户中的混合连接定义应反映相同的名称(与计算机名称相同,与您从代码中调用的名称相同)。

查看这篇写得很好的指南以获取完整的图片 - https://docs.microsoft.com/en-us/azure/biztalk-services/integration-hybrid-connection-create-manage

可以将混合连接端点设置为 IP 地址。 如果您使用 IP 地址,您可能会也可能不会访问本地资源,具体取决于您的客户。

混合连接依赖于客户端进行 DNS 查找。在大多数情况下,客户端是您的应用程序代码。 如果客户端不执行 DNS 查找,(它不会尝试将 IP 地址解析为域名 (x.x.x.x)),则不会通过 Hybrid 发送流量连接。

例如(伪代码),您将 10.4.5.6 定义为您的本地主机: 以下场景有效:
Application code -> GetHostByName("10.4.5.6") -> Resolves to 127.0.0.3 -> Connect("127.0.0.3") -> Hybrid Connection -> on-prem host

以下方案不起作用:
Application code -> Connect("10.4.5.6") -> ?? -> No route to host

还要让您的应用在 0.0.0.0 或私有 IP 上监听,因为我不太确定 localhost 是否可以与 HC 一起使用。

为什么不对 Web 应用使用 VNET 集成?您需要做的就是在 VNET 中创建一个基于路由的 (IKEv2) VPN 网关,如下所示 - https://docs.microsoft.com/en-us/azure/app-service/web-sites-integrate-with-vnet

【讨论】:

  • 感谢您的信息,我正在阅读链接。我试过公共IP、本地IP和计算机名,似乎都没有通过。我尝试打开所有防火墙,然后可以使用浏览器导航到公共 IP,但是通过混合连接的路由仍然不成功。我没有通过 IKEv2 使用 VNET-VNET,因为我已经在 VNET 上设置了一个 IKEv1 连接来与需要 IKEv1 的第三方服务通信,
  • 删除所有 HC 设置并重新开始。这通常可以解决它。这项技术已经存在了一段时间并且它有效,我在输入这个时有很多 HC 正在生产中。您无需打开任何防火墙端口(入站),因为来自 VM 的所有 HC 连接都是出站启动的。
  • 还有另一种选择,将您的服务公开为 VM 和 NSG 上的公共端点,只允许来自应用服务计划的出站 IP 地址的流量 - blogs.msdn.microsoft.com/waws/2017/02/01/… 重要!不只是您使用这些 IP,因此如果您这样做,请确保在您的服务之上有一个 authN/authZ 层。
  • 应用服务本身位于具有自己的 DNS 服务器的 ASE 中。我已将 VM 计算机名/IP 添加到 DNS 条目(不确定这是正确的做法)并创建了一个出站 NSG 规则以允许所有 :1234 流量流出。但是路由仍然没有运气。
  • 我已经修好了。这是因为我使用了混合连接端点的 IP 地址而不是计算机名称(我使用计算机名称实际将我的应用程序连接到 VM 上托管的服务),但是当我创建混合连接时,我输入了此时主机的 IP。
【解决方案2】:

你应该使用VM host name,感谢evilSnobu 的link。

如果您使用 IP 地址,您可能会也可能不会访问本地 资源,取决于您的客户。

如果您使用VM public IP,流量数据包将通过 Internet 传输到您的 VM,而不是 VPN 隧道。 localhost 只能在虚拟机内部使用。

此外,如果您的应用正在侦听 localhost(127.0.0.1),则该服务只能在您的 VM 内部访问。正如 evilSnobu 所说,您需要修改您的服务监听 0.0.0.0 或 private IP(like 10.0.0.4)。您可以使用以下命令进行检查。

适用于 Linux

netstat -ant|grep 1234

对于 Windows

netstat -ant|findstr 1234

【讨论】:

猜你喜欢
  • 2020-01-23
  • 2021-02-24
  • 2013-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-03
  • 2023-03-13
  • 2014-11-25
相关资源
最近更新 更多