专栏首页Tuzei的笔记手把手教你设置局域网访问虚拟机内服务器

手把手教你设置局域网访问虚拟机内服务器

如果我们在虚拟机内搭建好服务器后,希望可以在局域网内的设备上都能访问到这个虚拟服务器,就可以参照以下步骤来操作。其中包括了很多遇到的坑。先说说我的环境是

宿主机:windows 8.1 虚拟机:vmware+linux centos6.5 服务器:nginx

1.搭建局域网

我是利用笔记本wifi热点搭建的局域网。win7及以下版本应该有搭建临时无线网络的功能可以直接用这个功能,而win8开始这个功能就被隐藏了,可以在命令行输入netsh wlan set hostednetwork mode=allow ssid=热点名称 key=密码(8位及以上) 然后netsh wlan start hostednetwork 开启。

或者直接用connectify。我用上面这个方式不知道为什么手机连热点的时候获取不到ip地址,用connectify就可以。

无论用哪个方法都会多出一个这样的托管网络虚拟适配器的本地连接

如果不打算连接互联网在connectify的设置>NAT选项把无Internet时暂停连接的选项取消选中就好。

2.虚拟机设置

虚拟机的网络连接方式大致是三种,(1)桥接模式,在这种模式下,虚拟机相当于与所在物理机同一IP段的独立计算机,与局域网内的其他计算机是没有区别的;(2)NAT模式,这种模式下,虚拟机与所在的物理机单独组成了一个新的局域网,他们共享接入物理机的IP段;(3)host—only模式,在这种模式下物理机下所属的所有虚拟机共同组成一个局域网,他们与物理机之间是断开的,也就是说物理机和虚拟机之间是无法访问的。 如果局域网想要访问虚拟机的服务怎么办呢?这时候基本上有两种思路,一种是将虚拟机的网络连接设置成桥接模式,因为这时候虚拟机相当于所在物理机同一IP段的独立计算机,这时候其他的局域网内的计算机当然可以访问虚拟机内的服务,一般在虚拟机的设置里面找到网络设置,将其设置为桥接模式,借助虚拟机的IP就可以实现访问,但是这么做访问速度会非常慢。另外一种比较好的方式就是将虚拟机的网络连接设置成NAT模式,注意,直接这么设置局域网内的其他计算机是无法访问虚拟机中的服务的,因为局域网内的其他计算机相对于虚拟机和物理机新组的局域网来说属于外网,这时候还需要在物理机中对其进行端口映射,这个与局域网中利用路由器对其中某个IP端口进行映射的原理是一样的,通过这种也可以实现局域网访问虚拟机内的服务。(来源http://blog.csdn.net/jiangdianqin/article/details/50365988

我们这里选用的是NAT模式。

①我们发现宿主机网络连接里有一个VMnet8

查看它的IP(直接在属性里查看或者ipconfig都行)

这个ip就是在宿主机在以后新建出来的虚拟机与宿主机之间的局域网里的ip地址。记住这个ip地址。

②打开虚拟机>编辑>虚拟网络编辑器

选择VMnet8那个选项,最下面子网ip改成和刚刚那个ip处于同一网段内。

比如我这里是192.168.139.1 就把虚拟机的改成192.168.139.0

DHCP设置里还可以设置分配给虚拟机的开始和结束ip

③点击 NAT设置

网关ip设为①里看的那个ip地址

确定 然后回到虚拟机系统里查看虚拟机的ip地址(记得联网 我用的是linux的centos6.5 网络连接里只有eth0我就连了这个)

linux可以输入ifconfig查看ip地址

我这里就是192.168.139.128

确定在虚拟机里服务器可以访问,确定端口(我的是nginx服务器直接设在80端口)

关闭虚拟机防火墙!!

我之前各种配置都设置好了也可以ping的通然而在宿主机里就是访问不了虚拟机的服务器,最后发现就是防火墙的锅。

centos6.5

防火墙(Iptables)重启系统生效

开启: chkconfig iptables on 关闭: chkconfig iptables off

防火墙(Iptables) 即时生效,重启后失效

开启: service iptables start 关闭: service iptables stop

windows可以添加出入站规则什么的,可以自己去百度。

⑥添加端口转发

这是为了可以让局域网里的其他设备访问的到虚拟机

编辑>虚拟网络编辑器>vmnet8>nat设置>端口转发 添加

主机端口填的是你希望在宿主机访问哪个端口就可以访问到虚拟机

这里是8080 我在宿主机输入 localhost:8080 或者http://192.168.139.1:8080/都可以访问到虚拟机

虚拟机ip地址和端口就是上上一步看的那个

这样就可以在宿主机器访问虚拟机服务器了

在宿主机器里输入虚拟机的ip地址也可以访问。

3.宿主机配置

现在宿主机可以访问虚拟机服务器了,但局域网里其他设备还不可以。

①共享VMnet8

打开那个托管网络虚拟适配器的本地连接的属性

勾选这两个选项,家庭网络连接里选择虚拟机VMnet8那个网络连接

如果这里没有选项可以选择,可以先连接互联网。然后点开这个连接的属性里的共享标签,勾选两个选项之后选择VMNET8.

然后再去看托管网络虚拟适配器的本地连接的属性的共享里就会出现VMNET8了

②其他设备连接上局域网,查看本机在局域网里的ip

如果是用connectify开出来的热点可以在软件里看到连接的设备在局域网里的ip

查看宿主机在这个宿主机-其他设备的局域网里的ip可以用类似第2步的方法,查看托管网络虚拟适配器的本地连接的属性,或者ipconfig。

我这里就是192.168.141.1

③设置宿主机防火墙入站规则!!!

这也是我遇到的坑

局域网里的设备可以ping通宿主机的ip但是就是访问不了服务器。

我们在 控制面板>(系统安全)>windows防火墙>左边入站规则>右边新建规则

选择端口

特定本地端口里输入3.6里你设置的那个端口,我这里是8080

设置好之后就可以访问了,在其他设备输入宿主机在宿主机-其他设备局域网的地址:端口

我这里是192.168.141.1:8080

就可以了

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [前端]vue中打包后-webkit-box-orient: vertical消失(超出省略号失效)

    之前写代码的时候遇到一个问题,就是用了下面这段css代码来让文字超出范围隐藏并显示省略号。

    Tuzei
  • Angular2打包遇到的问题与解决方法

    angular2最后想打包放到服务器,需要在文件目录运行 ng build 命令,运行完会生成一个 dist 目录,将这个目录放到服务器上就可以了。但是这一过程...

    Tuzei
  • [前端]一个空格引发的血案

    是用flex布局,中间是grow等于1,内容是铺满整个container的 但是却出现了这种情况

    Tuzei
  • Vmware Centos7 配置静态 ip 和 使宿主机和虚拟机互相 ping 通

    NAT 方式 1. 配置静态 ip Vmware 安装 Centos7 可以参考 https://blog.csdn.net/guo_ridgepole/art...

    hankleo
  • Hadoop学习12-配置集群环境

    由于之前虚拟机都是用的桥接方式,有时候没有网络可用,想学习的时候,就狠不方便。 于是研究了一下,希望搭建一个多台虚机组成一个局域网的集群,即host-only方...

    小端
  • ESXI网络中虚拟机的克隆和快照

    L宝宝聊IT
  • 如何应对云网络中存在的问题与挑战(附DeepFlow白皮书下载链接)

    在全球数字化转型的浪潮下,“上云”已成为企业数字化转型的主流选择,在赋能业务创新、弹性服务的同时,新场景给网络运维、网络运营、网络安全等方面也带来了全新的挑战。...

    SDNLAB
  • 在前端性能优化中应用HTTP缓存的三部曲|洞见

    Spike先生是Best Experience公司的IT运营部门主管,他的团队成功地利用Http Cache优化了前端工程。 Spike将通过三个Scenari...

    ThoughtWorks
  • 视野前端(二)V8引擎是如何工作的

    许多同学在阅读了基础进阶系列文章之后,对JS代码的执行顺序理解得更清晰了。可也有不少好学的大佬在此基础上进一步思考,JS引擎到底是如何工作的?什么时候解析?什...

    用户6901603
  • 试用openstack

    jeremyxu

扫码关注云+社区

领取腾讯云代金券