文章目录

  • 步骤
  • 1、虚机访问端口
  • 2、vmware端口映射
  • 3、在宿主机上访问虚机中hadoop服务
  • 问题
  • 1、宿主机ping虚机
  • 2、抓包
  • 3、检查虚机防火墙



需求:在win10系统上安装了VMware,在VMware上安装了centos7操作系统,现在需要在win10宿主机上访问虚机centos7中的50070端口。由于宿主机不能直接访问虚机中的端口,需要通过vmware把虚机中的端口映射到宿主机未被占用的端口上,然后宿主机就可以访问虚机端口了。

步骤

1、虚机访问端口

在虚机中启动hadoop服务,可以通过50070端口访问HDFS的文件系统,访问界面如下:

kvm虚拟机使用端口映射 虚拟机设置端口映射_端口映射

2、vmware端口映射

把虚机中的50070端口映射到主机的50070端口上。操作步骤如下:

设置vmware,编辑 -> 虚拟网络编辑器,弹出虚拟网络编辑器界面

kvm虚拟机使用端口映射 虚拟机设置端口映射_kvm虚拟机使用端口映射_02


首先点击“更改配置”获取管理员权限,然后选中VMnet8模式,然后点击"NAT设置",弹出映射端口界面

kvm虚拟机使用端口映射 虚拟机设置端口映射_firewall_03


把虚机192.168.85.137映射到主机的50070端口上,设置完毕,点击确认。

3、在宿主机上访问虚机中hadoop服务

在宿主机上打开浏览器,发送127.0.0.1:50070请求,访问页面如下:

kvm虚拟机使用端口映射 虚拟机设置端口映射_端口映射_04


通过以上步骤成功在宿主机上访问虚机50070端口。

问题

最开始按如上设置后,并没有成功,最后发现是防火墙的问题。当你也碰到相同问题时,有可能是网络或防火墙问题。解决方法如下:

1、宿主机ping虚机

ping 192.168.85.137
发现可以ping的通,网络没有问题

2、抓包

在虚机中抓包,抓取宿主机发送127.0.0.1:50070的包,查看是否抓取到。在虚机中启动抓包命令:tcpdump -i eth0 -nn 'host xxx.xxx.x.xxx',其中xxx.xxx.x.xxx为楼主宿主机ip地址,发现抓取包失败,说明虚机并没有收到宿主机的请求。

3、检查虚机防火墙

检查虚机的防火墙状态,执行

systemctl status firewalld.service

kvm虚拟机使用端口映射 虚拟机设置端口映射_防火墙_05


如果红色框起的active状态为running状态,表示防火墙在启动中。

下面关闭防火墙,执行

systemctl stop firewalld.service

kvm虚拟机使用端口映射 虚拟机设置端口映射_端口映射_06


从图中可以看出active的状态变成了inactive(dead)状态,说明虚机防火墙已关闭。

经过以上三步的验证和设置,然后从新在宿主机中访问50070端口,成功。