[linux]主机访问虚拟机web服务(CentOS)
目的为了实现主机和虚拟机的通信,访问虚拟机中架设的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)的更多相关文章
- 主机访问 虚拟机web注意事项
在这里, 我通过NAT的方式, 通过主机访问虚拟机. 需要做的是, 将主机中访问的端口, 映射为虚拟机的'编辑->虚拟网络编辑器->vmnet8', 如下图 在弹出的'映射传入端口'界面中 ...
- 主机连接虚拟机 web服务
主机上安装了个VM centeros 首先通过 终端:ifconfig eth0 查看虚拟机的Ip地址 这样就能在主机上通过浏览器http://192.168.150.128/a.php 访问虚拟机的 ...
- 通过公网ip访问虚拟机web服务
工作中有需要进行通过外网ip访问虚拟机上的web服务,通过查阅资料,将配置过程整理如下: 思路:通过路由器的端口映射访问虚拟机上的web服务 1. 前提是在虚拟机上的web服务已经部署好,并且可以通过 ...
- 主机不能访问虚拟机web服务的问题
虚拟机是CentOs 7 iptables -Fiptables -P INPUT ACCEPT 参考:http://blog.csdn.net/abnereel/article/details/41 ...
- centos7无法访问虚拟机web服务
第一种: 先看下防火墙状态:firewall-cmd --state 关闭防火墙再试试:systemctl stop firewalld.service 第二种,不想关闭防火墙 放开http服务 fi ...
- 外网主机访问虚拟机下的Web服务器_服务器应用_Linux公社-Linux系统门户网站
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- 在虚拟机上搭建物理机可访问的web服务(IIS)
0x0 前言 安装webug4.0的时候突发奇想,想学下如何在虚拟机里搭建网站,然后让主机像访问互联网的网站一样访问虚拟机的网站,为以后渗透测试搭建环境做准备 0x1 虚拟机安装win2003[以防万 ...
- 主机访问虚拟机centos7的服务器
一.虚拟机开启桥梁接 1.编辑-->虚拟网络编辑器 2.虚拟机-->设置 二.Centos的配置---关闭防火墙下的服务器接口 Centos7.0 默认使用firewall作为防火墙,这里 ...
- 外网主机访问虚拟机下的web服务器(NAT端口转发)
主机:系统win7,ip地址172.18.186.210 虚拟机:VMware Workstation 7,虚拟机下安装了Centos操作系统,ip地址是192.168.202.128,部署了LAMP ...
随机推荐
- 修改已有git仓库的远程仓库指向
$ git remote set-url origin git@github.com:test/thinkphp.git 或者 $ git config -e 直接编辑其中origin的url就行了, ...
- FreeNAS插件打造ownCloud私有云网盘
ownCloud 是一个自由开源的个人云存储解决方案,可以自由获取无需付费,但用户需要自行架设服务器,好在FreeNAS可以通过插件轻松的构建ownCloud服务器. ownCloud 分为服务器端和 ...
- halcon+WinForm显示rgb图并灰度化
1.halcon代码,并导出成C# read_image (Demo, 'C:/Users/user/Pictures/demo.jpg') dev_display (Demo) rgb1_to_gr ...
- C++回顾day02---<运算符重载>
一:运算符重载的限制 (一)可以重载的运算符: + - * / % ^ & | ~ ! = < > += -= *= /= %= ^= &= |= << > ...
- 第十一节:Bundles压缩合并js和css及原理分析
一. 简介 1.背景:浏览器默认一次性请求的网络数是有上限的,如果你得js和css文件太多,就会导致浏览器需要多次加载,影响页面的加载速度, MVC中提供Bundles的方式压缩合并js和css,是M ...
- Spring Security 之基本概念
Spring Security 是一个安全框架, 可以简单地认为 Spring Security 是放在用户和 Spring 应用之间的一个安全屏障, 每一个 web 请求都先要经过 Spring S ...
- Karma (Test runner)
Karma https://baike.baidu.com/item/%E7%BE%AF%E7%A3%A8/7618552?fromtitle=Karma&fromid=878453 1,意译 ...
- Centos7 安装 tree
Centos7 安装 tree 用命令 yum 安装 tree yum -y install tree
- IIS命令行静默安装脚本-python
#coding=utf8 import platform from subprocess import Popen,PIPE,STDOUT import sys,os def run_cmd(cmd, ...
- Js的那些事
先说说 var array = new Array(10); 和 var array = Array.apply(null, {length:10});这两个有啥区别,乍一看两个都是生成长度是10的 ...