我在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虚拟机上启用对Tomcat服务器的TCP访问侦听端口8080时,我缺少了什么?
更新:
根据@MichaelB的建议,我在MacOSX上安装了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。并且该门户未提供对我的VM的经典访问。
我还按照@MichaelB的建议,在安全组中禁用SSH的入站规则。果然,SSH访问持续到该虚拟机!因此,当我导航时:
虚拟机〉〉minimalfalcon〉〉设置〉〉网络接口〉〉minimalfalcon 447〉〉网络安全组(minimalfalcon)〉〉设置〉〉入站安全规则
这些并不能真正控制对我的虚拟机的访问。请参见下面的屏幕截图。要将此网络安全组策略应用到我的虚拟机,需要跳过哪些环节?我真的看不出这是如何不应该应用的。任何指导都很感谢!
Network Security Group Screenshot
3条答案
按热度按时间e3bfsja21#
除非您需要创建端口转换,否则您应该只能使用Portal公开该端口。
如果您使用新的资源管理器(通过门户或ARM脚本)创建了VM,则端点的概念将不再存在。相反,您将拥有与NIC关联的IP地址。该NIC位于网络安全组(NSG)中。在NSG中,您可以定义入站和出站端口规则。只需再单击几下,即可...
首先查看虚拟机的设置,然后导航到网络界面:
然后导航到网络安全组:
最后,编辑入站规则:
mbzjlibv2#
它对我的inbound rule很有效。请确保使用VM刀片的“Essentials”部分中列出的公共IP地址。
创建入站安全规则时,请确保:
*
nafvub8i3#
2.思想:
1)默认情况下,ARM上所有的端口都是开放的(除非你有防火墙或类似的东西)。这就是为什么你的ssh即使没有入站规则也能通过的原因。如果你想阻止对一个端口的访问,你必须显式地这样做。因此,如果这是为了测试的目的,你可以完全删除NSG;这可能有助于确定问题是NSG还是其他原因。
2)你说你可以从虚拟机中得到localhost:8080,它是有效的,对吗?这让我想到也许你的tomcat正在监听127.0.0.1而不是你的公共ip(为了简单起见,或者0.0.0.0)。
希望这能有所帮助!:)