【问题标题】:Routing TCP traffic to port 8080 on Azure VM将 TCP 流量路由到 Azure VM 上的端口 8080
【发布时间】:2016-01-19 22:37:49
【问题描述】:

我在 Azure 的 CentOS 虚拟机上运行 Tomcat。主机上没有防火墙。 wget localhost:8080 会返回一个页面,就像对私有 IP 地址的相同请求一样。我可以使用公共 IP 地址通过 SSH 连接到服务器,但是 wget public_IP_address:8080 不会路由到主机。

我为端口 8080 启用了入站安全规则,它看起来与允许通过端口 22 进行 SSH 的规则相同。

我已经研究了好几个小时。似乎所有关于在 Azure 中的 linux 主机上运行 Tomcat 的文章都是使用经典虚拟机管理 UI 编写的。他们谈论指定一个终结点,这在现代 Azure UI 中不可用。我也看到了info about establishing an "ILPIP,",但这似乎需要 powershell,它不在我的 CentOS 主机上。

我同样找不到任何关于修改上面文章中说明的所谓“VIP”的信息。

在 Azure 的 CentOS 虚拟机上启用 TCP 访问侦听端口 8080 上的 Tomcat 服务器时,我缺少什么?

更新:

根据@MichaelB 的建议,我在 Mac OS X 上安装了 Azure 命令行工具。

$ azure vm show minimalfalcon
info:    Executing command vm show
+ Getting virtual machines                                                     
warn:    No VMs found
info:    vm show command OK

在当前 Portal UI 中,单击“虚拟机(经典)”不会显示任何实例。当我单击“虚拟机”时,这就是我访问 VM 的所有设置的方式。我怀疑 Azure CLI 工具正在连接到经典 API,而不是当前门户使用的任何东西。而且该门户不提供对我的 VM 的经典访问。

我还遵循了@MichaelB 的建议,即在安全组中禁用 SSH 的入站规则。果然,SSH 访问持续到这个虚拟机!所以,当我导航时:

虚拟机 >> minimumfalcon >> 设置 >> 网络接口 >> minimumfalcon447 >> 网络安全组 (minimalfalcon) >> 设置 >> 入站安全规则

这些并不能真正控制对我的虚拟机的访问。请参见下面的屏幕截图。需要跳过什么环节才能将此网络安全组策略应用于我的 VM?我真的看不出这不应该被应用。任何指导表示赞赏!

Network Security Group Screenshot

【问题讨论】:

  • 您确定该安全组已应用于该计算机吗?即,如果您阻止端口 22,您的 SSH 访问是否会停止。 (您可以使用 Azure Xplat 工具,它们的功能基本相同)

标签: tomcat azure routing centos azure-virtual-machine


【解决方案1】:

除非您需要创建端口转换,否则您应该只能使用 Portal 公开该端口。 Check this

如果您使用新的资源管理器(通过门户或通过 ARM 脚本)创建了 VM,则端点的概念不再存在。相反,您有一个与 NIC 关联的 IP 地址。该 NIC 位于网络安全组 (NSG) 中。在 NSG 中,您定义入站和出站端口规则。再点击几下,但是...

首先查看您的虚拟机设置并导航到网络接口:

然后导航到网络安全组:

最后,编辑入站规则:

【讨论】:

  • 提供的链接是指经典虚拟机管理,而不是当前门户。现代 Azure 门户中没有“端点”选项。
  • 提供的链接包括两个例子,第一段是经典的,但其余的响应是手臂。
【解决方案2】:

这个inbound rule 对我有用。确保使用 VM 刀片的“基本”部分中列出的公共 IP 地址。

创建入站安全规则时,请确保:

注意:Azure 有两种不同的部署模型:Resource Manager and classic。 ILPIP 仅适用于经典部署模型。

注意:当从门户(ARM 模型)创建 VM 时,它会自动关联到虚拟网络 (vnet)、vnet 中的特定子网和网络安全组。

【讨论】:

    【解决方案3】:

    2 个想法:

    1) 默认情况下,ARM 上的所有端口都是打开的(除非您有防火墙等)。这就是为什么您的 ssh 即使没有入站规则也能通过的原因。如果要阻止对端口的访问,则必须明确执行此操作。因此,如果这是出于测试目的,您可以完全删除 NSG;这可以帮助确定问题是 NSG 还是其他原因。

    2) 你说你可以从虚拟机 wget localhost:8080 并且它可以工作,对吧?这让我觉得也许你的 tomcat 正在监听 127.0.0.1 而不是你的公共 ip(或 0.0.0.0 为简单起见)。

    希望这会有所帮助! :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-20
      • 1970-01-01
      • 2022-07-09
      • 2021-02-16
      相关资源
      最近更新 更多