目的为了实现主机和虚拟机的通信,访问虚拟机中架设的web服务。
按理说通过虚拟机ip + web服务端口,即可在浏览器访问虚拟机的web服务。
但是由于CentOS的防火墙问题,对应web端口无法访问。通过配置CentOS防火墙来解决。

CentOS 7使用firewalld来管理防火墙,firewalld的配置不了解,切换为比较通用的iptables配置。
关闭firewalld并启用iptables服务:
  systemctl mask firewalld
  systemctl stop firewalld
  yum install iptables-services
  systemctl enable iptables
  systemctl start iptables

通过systemctl status firewalld.service可以查看firewalld处于dead状态。此时防火墙由iptables接管。

iptables的配置详情参考这里:
http://www.cnblogs.com/JemBai/archive/2009/03/19/1416364.html
  • 查看iptables端口列表:
  iptables -L -n
  • iptables开放80端口:
  iptables -A INPUT -p tcp --dport 80 -j ACCEPT
之前碰到过在命令行添加端口开放,但查看iptables -L -n却发现没有生效的问题。于是直接修改配置文件/etc/sysconfig/iptables。文件中有开放ssh 22端口的配置,复制相关命令行,将端口部分变更为80.
修改之后重启iptables: service iptables restart

通过主机telnet虚拟机,验证端口是否开放。
我的vmware虚拟机网络配置为NAT。
首先查看虚拟机分配到的ip地址:ifconfig

此处虚拟机的地址为192.168.151.131.
首先确认主机ping虚拟机能ping通: ping 192.168.151.131.
如果ping不通,说明地址或网络有问题。导致不通的原因很多,请自行搜索解决。

然后在主机telnet 虚拟机端口: telnet 192.168.151.131 80
如果有提示telnet命令不存在的情况,表示主机没有开启telnet服务。
在控制面板->程序->启用或关闭Window功能,找到telnet客户端,勾选之后提示重启生效。保存相关环境,然后重启。
现在win10的控制面板入口十分隐蔽,我一般通过资源管理器左侧,[此电脑]图标右键,选择属性,在弹出的窗口中找到控制面板。

如果telnet成功,则cmd会进入一个空白的界面,按ESC键退出会显示一些错误信息。表示虚拟主机是可连接的,配置成功。通过浏览器访问ip+端口,应该可以进入web服务。

如果telnet不成功,原因依然很多。
有一种说法是selinux本身也有防火墙, 通过setenforce 0命令关闭。个人实测selinux的开启/关闭并不影响端口接通。
另一种说法是主机防火墙问题,可以自行开关主机防火墙确认。在我的案例中,问题也与主机防火墙无关。
我的问题在于没有启动监听80端口的web服务。
这里我的疑问是,如果端口没有服务监听,为什么是拒绝连接,而不是操作系统返回信息提示端口背后无服务?

我配置的是nginx+uwsgi的Flask web,通过nginx启动服务。
如果配置正确,通过netstat -ntpl可以查看到端口80和nginx服务的相关信息。
再次在主机telnet 虚拟机地址端口, 进入空白终端,esc退出有HTTP 400提示。表示端口服务OK。
尽管我并没有使用uwsgi app.py来运行虚拟机的app, web服务依然OK。所以推测在启动nginx服务后,nginx已经通过配置,调用uwsgi启动了对应的app服务,无需手动开启。
通过浏览器访问ip+端口,返回我配置好的Hello World。大功告成。

[linux]主机访问虚拟机web服务(CentOS)的更多相关文章

  1. 主机访问 虚拟机web注意事项

    在这里, 我通过NAT的方式, 通过主机访问虚拟机. 需要做的是, 将主机中访问的端口, 映射为虚拟机的'编辑->虚拟网络编辑器->vmnet8', 如下图 在弹出的'映射传入端口'界面中 ...

  2. 主机连接虚拟机 web服务

    主机上安装了个VM centeros 首先通过 终端:ifconfig eth0 查看虚拟机的Ip地址 这样就能在主机上通过浏览器http://192.168.150.128/a.php 访问虚拟机的 ...

  3. 通过公网ip访问虚拟机web服务

    工作中有需要进行通过外网ip访问虚拟机上的web服务,通过查阅资料,将配置过程整理如下: 思路:通过路由器的端口映射访问虚拟机上的web服务 1. 前提是在虚拟机上的web服务已经部署好,并且可以通过 ...

  4. 主机不能访问虚拟机web服务的问题

    虚拟机是CentOs 7 iptables -Fiptables -P INPUT ACCEPT 参考:http://blog.csdn.net/abnereel/article/details/41 ...

  5. centos7无法访问虚拟机web服务

    第一种: 先看下防火墙状态:firewall-cmd --state 关闭防火墙再试试:systemctl stop firewalld.service 第二种,不想关闭防火墙 放开http服务 fi ...

  6. 外网主机访问虚拟机下的Web服务器_服务器应用_Linux公社-Linux系统门户网站

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  7. 在虚拟机上搭建物理机可访问的web服务(IIS)

    0x0 前言 安装webug4.0的时候突发奇想,想学下如何在虚拟机里搭建网站,然后让主机像访问互联网的网站一样访问虚拟机的网站,为以后渗透测试搭建环境做准备 0x1 虚拟机安装win2003[以防万 ...

  8. 主机访问虚拟机centos7的服务器

    一.虚拟机开启桥梁接 1.编辑-->虚拟网络编辑器 2.虚拟机-->设置 二.Centos的配置---关闭防火墙下的服务器接口 Centos7.0 默认使用firewall作为防火墙,这里 ...

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

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

随机推荐

  1. Oracle Database 快捷版 安装 连接

    Oracle Database 快捷版 11g 第 2 版 下载地址:http://www.oracle.com/technetwork/cn/database/database-technologi ...

  2. 越光后端开发——ygapi(2.新建Model)

    1.新建Model 1.users数据 1.在apps/users/models.py中: from datetime import datetime from django.db import mo ...

  3. 版本控制工具之git

    git存储区域详解 命令快速总结 初始化 git init 当前文件夹初始化 代码提交 git add file/. 自动检测工作区修改的内容提交到暂存区 git status 查看当前文件夹工作区的 ...

  4. Linux 命令详解(十三)如何启动、关闭和设置ubuntu防火墙

    sudo  ufw enable|disable 由于LInux原始的防火墙工具iptables过于繁琐,所以ubuntu默认提供了一个基于iptable之上的防火墙工具ufw. ubuntu 9.1 ...

  5. 第二节:如何正确使用WebApi和使用过程中的一些坑

    一. 基本调用规则 1. 前提 WebApi的默认路由规则为:routeTemplate: "api/{controller}/{id}", 下面为我们统一将它改为 routeTe ...

  6. ArcGis地理坐标系转投影坐标系问题的思考与处理

    博主又不知道标题该咋写了,凑合看吧. 国庆前帮人处理了这样一个问题:Shapefile数据,加载到ArcMap后呈懵逼状态,缩放功能完蛋.求助者希望对数据进行投影,由CGCS2000的GCS坐标系投影 ...

  7. oldboy s21day12.设计商城系统,主要提供两个功能:商品管理、会员管理。

    #!/usr/bin/env python# -*- coding:utf-8 -*- # 1.写出三元运算的基本格式及作用?'''a if a>b else b''' # 2.什么是匿名函数? ...

  8. Groovy 设计模式 -- 责任链模式

    Chain of Responsibility Pattern http://groovy-lang.org/design-patterns.html#_chain_of_responsibility ...

  9. ve2.0 v-for循环报错的解决方案

    <li v-for="(item,index) in mokeData" class="page" :key="index"> ...

  10. Python爬虫从入门到进阶(1)之Python概述及爬虫入门

    一.Python 概述 1.计算机语言概述 (1).语言:交流的工具,沟通的媒介 (2).计算机语言:人跟计算机交流的工具 (3).Python是计算机语言的一种 2.Python编程语言 代码:人类 ...