解决宿主机Mac不能访问虚拟机中CentOS的Tomcat服务器
程序员文章站
2024-03-21 09:46:58
...
情况描述
虚拟机中的系统为CentOS,充当服务器,但是开启Tomcat后,在宿主机Mac中无法访问,显示请求被拒接,如下:
除此之外,但是可以使用ssh,也可以ping通。
分析
初步认为就是防火墙的问题,但是参考iptables的一些停用方法,直接显示没有iptables这个服务;后面想验证到底是宿主机还是虚拟机的问题,在5000端口,跑了一个简单的Flask服务器(在虚拟机中可通过本机ip地址+端口号进行访问),在宿主机中仍然无法访问,同时也通过其他的一些设备来访问相应的服务器,都无法访问,从这里看来,问题还是出在了虚拟机中;后面又在宿主机mac中开启了一个服务器,在虚拟机和其它局域网设备中都可以访问,因此断定还是虚拟机的问题。那么,没有安装iptables的CentOS,究竟是出了什么问题呢?
解决办法
因为我使用的是CentOS 7,使用iptables的版本是7以前的,CentOS 7使用firewall作为防火墙。
查看已经开放的端口:firewall-cmd --list-ports
开启端口:firewall-cmd --zone=public --add-port=80/tcp --permanent
命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
重启、停止、禁用、查看防火墙
firewall-cmd --reload #重启firewall
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
因此结合上述命令来看,需要将8080端口添加到防火墙的开放端口中,然后重新载入防火墙的配置即可。如下:
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports
最后面来一张成功访问的截图:
上一篇: GreenDao数据库