解决宿主机MAC不能访问虚拟机中CENTOS的TOMCAT服务器

/ 默认分类 / 没有评论 / 160浏览

情况描述

虚拟机中的系统为CentOS,充当服务器,但是开启Tomcat后,在宿主机Mac中无法访问,显示请求被拒接,如下:

截屏2022-05-04 下午6.45.15

除此之外,但是可以使用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 #永久生效,没有此参数重启后失效123

重启、停止、禁用、查看防火墙

firewall-cmd --reload #重启firewall
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)1234

因此结合上述命令来看,需要将8080端口添加到防火墙的开放端口中,然后重新载入防火墙的配置即可。如下:

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports123

最后面来一张成功访问的截图:截屏2022-05-04 下午6.46.22