我在Azure的CentOS虚拟机上运行Tomcat。主机上没有防火墙。 wget localhost:8080和私有IP地址上的相同请求一样返回页面。我可以使用公共IP地址SSH服务器,但是wget public_IP_address:8080不会路由到主机。
我为端口8080启用了入站安全规则,该规则看起来与允许通过端口22的SSH相同。
我一直在研究这个问题。似乎所有关于在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?我真的看不出这应该怎么做。任何指导赞赏!
答案 0 :(得分:0)
除非您需要创建端口转换,否则您应该只能使用Portal公开该端口。 Check this
如果您使用新的资源管理器(通过门户网站或通过ARM脚本)创建了VM,则Endpoint的概念不再存在。相反,您有一个与NIC关联的IP地址。并且该NIC位于网络安全组(NSG)内。在NSG中,您可以定义入站和出站端口规则。点击几下,但是......
首先查看您的VM设置并导航到网络接口:
然后导航到网络安全组:
最后,编辑入站规则:
答案 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)。
希望这有帮助! :)