前提条件:
电脑A能够ping通电脑B,电脑B的虚拟机已搭建好Tomcat服务。
关于在VMware中用CentOS搭建Tomcat服务,见 CentOS下安装Tomcat环境 。
一、因素分析
当服务搭建好,虚拟机中的CentOS能访问自己的Tomcat服务时,电脑A并不能访问电脑B的虚拟机中的Tomcat服务。
原因在于CentOS的防火墙出入站规则和VMware的NAT端口转发,以及电脑B的防火墙出入站规则,三方因素所致。
二、CentOS的防火墙开放8080端口
搭建Tomcat服务时,你改为某某端口,此处就开放某某端口。Tomcat默认为8080端口。
用root账户连接centos7服务器,如果没有
可以在终端输入
sudo -i;
然后输入当前用户的密码;
或者打开终端输入
su root;
然后输入root用户密码;
这两种方式都能获取root权限。
或者用root用户登陆系统。
root用户只能存在一个。
其他用户只能通过刚说的两个方法获取root权限。
查看防火墙是否开启的状态:
systemctl status firewalld;
绿色active(running)代表防火墙已开启;
开启8080端口,输入命令:
firewall-cmd --zone=public --add-port=8080/tcp --permanent;
让我们来解释一下上上一个命令:
--zone=public:表示作用域为公共的;
--add-port=8080/tcp:添加tcp协议的端口8080;
--permanent:永久生效,如果没有此参数,则只能维持当前服务生命周期内,重新启动后失效;
输入命令重启防火墙:
systemctl restart firewalld.service;
输入命令重新载入配置:
firewall-cmd --reload;
查看端口是否开放:
firewall-cmd --query-port=8080/tcp;
至此开放端口8080完成。
其他防火墙常用命令:
firewall-cmd --state ; ##查看防火墙状态
systemctl start firewalld.service; ##开启防火墙
systemctl stop firewalld.service; ##关闭防火墙
firewall-cmd --zone=public --list-ports ; ##查看所有已开放的端口
firewall-cmd --remove-port=8080/tcp --permanent ##永久移除8080端口
更多Firewall命令。
三、VMware的NAT端口转发配置。
在局域网中,可以把本局域网的其他电脑看成是外网的主机,其实,虚拟机采用NAT联网的方式,可以把我们的主机看成是一部路由器,然后虚拟机就是处在一个局域网中的一台主机,共享路由器一个端口的地址对外网进行访问,但是外网要访问这部主机,就需要在路由器上做端口映射。于是乎,我们要做的就是在VMware上做端口映射,将主机的一个端口映射到虚拟机的ip地址,那么外网访问虚拟机,只要输入主机的ip:port就可以访问到虚拟机了。
首先,设置虚拟机网络:选择:编辑 --> 编辑虚拟网络,如下图所示:
得到如下的设置窗口(由于NAT的联网方式是使用VMnet8这个网卡的,所以我们编辑这个网卡,点击“VMnet8”):
可以看到,我的虚拟机是在192.168.184.0这个网段,我们点击NAT 设置(如上述红框2所示),出现如下界面:
点击上图红色框的“添加”,可以设置主机端口与虚拟机ip和端口的映射,点击之后会出现下面的设置界面:
我将主机(电脑B)的8082端口映射到虚拟机的“192.168.184.128”的8080端口了,因为TomCat服务自动开放的端口是8080,即虚拟机端口为8080,而主机端口可以自定义。所以,只要我们访问“http://主机IP:8082”,就可以访问到虚拟机的8080端口了。
至此,VMware的NAT端口转发设置完毕。
注意以下两点:
1、虚拟机的网络适配器为:NAT模式
2、在编辑NAT设置前先点击更改设置(如果可以直接编辑请忽略)
四、电脑B本机的防火墙入站规则设置:
1.打开电脑B本机的.控制面板-》windows防火墙-》高级设置;
2.右键“入站规则”,点击“新建规则”,选择端口,点击下一步;
3.选择“tcp”,勾选“特定本地端口”,这里填写的端口号是在VMware做NAT转发时填写的主机端口,上面填的主机端口为8082,这里就填8082,下一步;
4.点击“允许连接”,点击下一步,下一步;
5.名称随便填写,方便阅读即可,比如填写tomcat,点击完成;
至此主机(电脑B)的防火墙入站规则也配置完毕。
五、现在你可以用局域网的电脑A访问电脑B上的TomCat项目了,当然局域网中的手机等其他设备也能访问。