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

宿主机: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. Eclipse 运行内存不足情况

    在debug或者run 时 在VM arguments 处添加  -Xms512m -Xmx512m 

  2. 507 Perfect Number 完美数

    对于一个 正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为“完美数”.给定一个 正整数 n, 如果他是完美数,返回 True,否则返回 False示例:输入: 28输出: True解释: ...

  3. 生产环境中使用脚本实现tomcat start|status|stop|restart

    一.在实际生产环境中tomcat启动是在bin目录下采用自带脚本startup.sh启动:使用shutdown.sh关闭.如下图: 再如果对于新手来讲在不知道路径情况下重启是一件头痛的事情(注意没有r ...

  4. salt-stack系列报错

    master启动报错 实验环境为: [root@master salt]# cat /proc/version Linux version 3.10.0-327.el7.x86_64 (mockbui ...

  5. [转]ASP.NET MVC Bootstrap极速开发框架

    本文转自:http://www.cnblogs.com/smartbooks/p/3814927.html 前言 每次新开发项目都要从头开始设计?有木有一个通用的快速开发框架?并且得是ASP.NET ...

  6. 享元模式及php实现

    享元模式: 享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度对象的复用.系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用.由于享元模式要求 ...

  7. 滚动字幕Marquee

    基本语法  <marquee>滚动文字 </marquee> 文字移动属性的设置  方向 <direction=#> #=left, right,up,down 方 ...

  8. General mistakes in parallel computing

    这是2013年写的一篇旧文,放在gegahost.net上面  http://raison.gegahost.net/?p=97 March 11, 2013 General mistakes in ...

  9. Apache的HttpClient的使用

    Apache的HttpClient可以被用于从客户端发送HTTP请求到服务器端,其中封装了客户端发送http的get和post请求 使用Apache的HttpClient发送GET和POST请求的步骤 ...

  10. Docker Hello World容器运行报错的解决办法

    费了好大力气从Docker官网下载了Docker Community Editor的安装镜像,Docker.dmg, 总共将近500MB,双击进行安装: 命令行里使用docker version查看版 ...