文章目录

  • 背景
  • 1.硬件环境
  • 2.网络连接种类
  • 一、网络选择
  • 二、实施步骤
  • 1.新增 仅主机(Host-Only)网络
  • 2.配置虚拟机网络
  • 3.虚拟机内部设置
  • 4. 防火墙设置
  • 总结



背景

1.硬件环境

  • 使用的虚拟机是VirtualBox,因为这个占用资源更少
  • 安装的机器是Centos7 版本
  • 主机的ip不是固定的,自动分配

2.网络连接种类

由下图可以看到,网络有很多种选择,但是我们常用的是这是三个

网络地址转换(NAT)、桥接网卡、仅主机(Host-Only)网络

VirtualBox Centos7 IP改成自动获取_虚拟机


为什么有这些网络选择呢,因为每种网络有着自己的特点,下面列举下主要特点

模式名称

特点

网络地址转换(NAT)

连接这个网络可以访问外部网络,但是外部网络不可访问虚拟机

桥接网卡

这个网络完全可以共享主机网络,主机网络发生变化时,也跟随变化,ip也随之变动

仅主机(Host-Only)网络

这个网络也可以用来主机访问虚拟机以及虚拟机上web服务,但是虚拟机不可访问外网


一、网络选择

从上面的介绍来看有多种网络可以选择

最简单的就是:选择桥接网卡,直接共享主机网络,主机、虚拟机之间访问都没有问题

但是我们家用或者公司使用,都不会固定ip的,主机随时变化,那么虚拟机的ip也随时变化,很不方便,我们希望虚拟机的ip是固定的,方便我们连接和访问服务使用

所以最终的选择是:网络地址转换(NAT) + 仅主机(Host-Only)网络 的组合

二、实施步骤

1.新增 仅主机(Host-Only)网络

操作步骤:管理 => 主机网路管理器 => 创建网络

VirtualBox Centos7 IP改成自动获取_linux_02

然后就会在 控制面板 => 网络和 Internet => 网络连接

这里看到对应的网络,这样主机(Host-Only)网络的ip就配置好了

VirtualBox Centos7 IP改成自动获取_虚拟机_03

2.配置虚拟机网络

点击安装好的Centos7虚拟机 设置 => 网络

网卡1 启用 选择 仅主机(Host-Only) 这里的网卡顺序也是有意义的,对应内部的设置

VirtualBox Centos7 IP改成自动获取_NAT_04


网卡2 启用 选择 网络地址转换(NAT) 网络

VirtualBox Centos7 IP改成自动获取_虚拟机_05

3.虚拟机内部设置

启动Centos7

执行

ifconfig

得到如下结果

VirtualBox Centos7 IP改成自动获取_网络_06


进入网络配置文件的路径

cd /etc/sysconfig/network-scripts/

可以看到 ifcfg-enp0s3 (网络地址转换(NAT) 对应的配置)

vi ifcfg-enp0s3

VirtualBox Centos7 IP改成自动获取_网络_07

结果参考

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static   #修改为static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
DEVICE=enp0s3
ONBOOT=yes  # 改为yes
IPADDR=192.168.11.11   # 自定义该虚拟机的固定IP ,只要其 IP 在 192.168.11.0 / 24 这个网段就行
UUID=c7695ef6-167b-4589-8c04-4feedef3e203

修改完毕之后,需要重新启动网路

systemctl restart network

到这里就可以 执行 ifconfig 查看了,已经设置成固定ip了
同时 ping www.baidu.com 也是可以联网的

4. 防火墙设置

上面这些操作之后发现,只能通过xshell 连接

如果xshell 不能连接 ,是没有安装sshd

yum list | grep ssh
yum install openssh-clients.x86_64

安装之后就可以了

当只能通过xshell 连接 ,比如启动一个tomcat服务8080端口,发现不能连接,这是就是防火墙问题了

CentOS 7的防火墙默认是firewall而不是之前的iptables,
所以需要确定防火墙是否已经关闭,如果没有安装iptables的话,
只需要通过

systemctl stop firewalld.service  ## 关闭firewall防火墙
systemctl disable firewalld.service  ## 禁止开机启动

然后通过

firewall-cmd --state

可以查看防火墙状态(关闭显示notrunning,开启显示running)。

可以使用关闭iptables防火墙

systemctl stop iptables.service

这样就能通过主机访问虚拟的服务了


总结

本文详细描述了VirtualBox设置静态ip和怎么让主机访问虚拟机内的服务,其中的一些网络配置都可以直接使用,linux指令也可以直接复制使用