将TCP流量路由到Azure VM上的端口8080

时间:2016-01-19 22:37:49

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

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

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

Inbound security rules

我一直在研究这个问题。似乎所有关于在Azure中的Linux主机上运行Tomcat的文章都是使用Classic Virtual Machine管理UI编写的。他们讨论了指定端点,这在现代Azure UI中不可用。我同样看到info about establishing an "ILPIP,",但这似乎需要powershell,而不是我的CentOS主机。

我同样找不到任何关于修改上述文章中所说的“VIP”的内容。

在Azure中的CentOS虚拟机上启用对我的Tomcat服务器的TCP访问,以及在端口8080上进行TCP访问时,我缺少什么?

更新

根据@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

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

我还注意了@MichaelB关于在安全组中禁用SSH入站规则的建议。果然,SSH访问持久存在于这个VM!所以,当我导航时:

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

那些并不真正控制对我的虚拟机的访问。见下面的截图。需要跳出什么箍来将此网络安全组策略应用到我的VM?我真的看不出这应该怎么做。任何指导赞赏!

Network Security Group Screenshot

3 个答案:

答案 0 :(得分:0)

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

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

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

NIC

然后导航到网络安全组:

Network Security Group

最后,编辑入站规则:

inbound rules

答案 1 :(得分:0)

这对我有用inbound rule。确保使用VM刀片" Essentials"中列出的公共IP地址。部分。

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

注意:Azure有两种不同的部署模型:Resource Manager and classic。 ILPIP仅与经典部署模型相关。

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

答案 2 :(得分:0)

2个想法:

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

2)你说你可以从VM中找到localhost:8080并且它可以工作,对吧?这让我觉得也许你的tomcat正在监听127.0.0.1而不是你的公共ip(或简称为0.0.0.0)。

希望这有帮助! :)