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

宿主机: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

就可以了

作者:江湖游医黄半仙
链接:http://www.jianshu.com/p/db488f0ae3c0
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

局域网虚拟机端口映射访问apache的更多相关文章

  1. 用端口映射在Apache中对每个项目分配端口,实现一个端口访问一个网站

    映口映射的功能主要就是实际互联网可以访问当前进行映射的电脑,首先我们要进行路由器的端口映射,常见的开放端口有80,21,3389等,80是网站常用端口,21是FTP服务器常用端口,3389是远程桌面连 ...

  2. Windows10环境配置nat123端口映射访问mysql

    背景:因工作需要,在宽带路由器内部设置一个台式机(可上网),配置成数据库服务器.分散各处的多台外网机可以通过jdbc连接该数据库服务器进行开发.要进行端口映射. 环境: 宽带通 Windows10企业 ...

  3. Python 3 虚拟机端口映射 VMware

    编程语言(以Python 3 为例子) 编程语言最开始就是机器语言(低级语言,计算机能认识:0101... 最底层的指令代码),学习很困难.现在用机器语言的很少,芯片厂商的技术人员来编程之外:发展下来 ...

  4. 配置多层NAT和端口映射实现外网访问内网

    配置多层NAT和端口映射实现外网访问内网 背景和原理 通过配置NAT可以实现内网中不能直接访问外网的主机通过NAT代理访问内网,配置方法这里不再赘述(前文有介绍).本文以两层的NAT代理做模拟,通过端 ...

  5. VMware NAT端口映射 外网可以访问内网虚拟机

    我想尝试的是利用本机的ip+port来访问虚拟机上的web服务器,因为这样的话,我就能够将我的web服务器部署成为一个能让外网访问的服务器了,首先说下我的环境: 主机:系统win7,ip地址172.1 ...

  6. 外网主机访问虚拟机下的web服务器(NAT端口转发)-----端口映射

    主机:系统win7,ip地址172.18.186.210 虚拟机:VMware Workstation 7,虚拟机下安装了Centos操作系统,ip地址是192.168.202.128,部署了LAMP ...

  7. internet访问局域网内部方法之----------路由器端口映射

    很多人每天都问为什么要端口映射?例如:通过路由器上网的,网站自己可以访问,但是别人就不能:输入127.0.0.1可以访问,别人还是看不到:输入localhost可以看到,但是别人就是看不到,气人啊-没 ...

  8. VMware NAT端口映射外网访问虚拟机linux

    本文目的: 一. SSH连接 二. 访问HTTP VMware Workstation提供了两种虚拟机上网方式,一种bridge,一种NAT,bridge可以获得公网地址,而NAT只能是内网地址了. ...

  9. NAT ------ 为什么手动设置NAT端口映射(转发)不成功,导致访问不了局域网服务器

    手动设置端口映射成功的条件是路由器WAN口接的是外网IP,而不是网络提供商的路由器NAT之后的IP.假如有个外网的客户端,连的服务器IP一定要是外网IP(假设IP_A),如果自己的路由器WAN口接的是 ...

随机推荐

  1. windows密码长度最小值改不了

    控制台输入gpedit.msc或者在“开始→控制面板→管理工具→本地安全策略→账户策略→密码策略→密码长度最小值”中修改不了,是灰色的,不让修改 用命令行可以修改开始-->运行-->输入& ...

  2. 为页面添加favicon

    <link rel="shortcut icon" href="favicon.ico" /> 还有另一种写法,但是IE对它的支持不够好: < ...

  3. DNS练习之反向解析

    环境同正向解析一样. 切换到/var/named/chroot/etc目录下: 编辑named.rfc1912.zones文件,在末尾添加如下内容: [root@sishen63 etc]# vim ...

  4. linux/centos系统如何使用yum安装vi/vim?

    yum安装vim最简单的命令, yum -y install vim* 然后就可以使用vi命令了. 网上的文章: 要使用vim, 使用yum看了一下,发现有4个 vim-common.i386     ...

  5. 【C#】枚举

    枚举 public static class CommonEnums { public enum people { /// <summary> ///男人 /// </summary ...

  6. 通用mapper的generator

    <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-genera ...

  7. scrollTop、offsetTop、clientTop

    1.offsetTop: obj.offsetTop 指 obj 相对于版面或由 offsetParent 属性指定的父坐标的计算上侧位置. 2.clientTop: 这个返回的是元素周围边框的厚度, ...

  8. struct和union

    struct的小秘密 C语言中的struct可以看做变量的集合,struct的问题: 空结构体占用多大内存? 例子1:空结构体的大小 #include<stdio.h> struct ST ...

  9. 借助tween.js小球沿div四边跑的动画效果

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  10. C++#pragma pack指令

    微软官方文档说#pragma pack 指令的作用是为结构.联合和类成员指定 pack 对齐.的主要作用就是改变编译器的内存对齐方式,这个指令在网络报文的处理中有着重要的作用,#pragma pack ...