# VirtualBox虚拟机设置固定IP

# VB的多种网络接入模式

  • NAT模式:最简单的实现虚拟机上网的方式,无需配置,默认选择即可接入网络。虚拟机访问网络的所有数据都是由主机提供的,虚拟机访问网络是先通过VirtualBox转换后再发送出去的,数据接收也是先由VirtualBox接收后再转换发送到虚拟机上的,访问速度较慢;虚机可以直接访问主机,主机不能直接访问虚拟机。
  • Bridged Adapter模式:即桥接模式,可以为虚拟机模拟出一个独立的网卡,有独立的IP地址,所有网络功能和主机一样,并且能够互相访问,实现文件的传递和共享。被桥接的网卡会开启混杂模式。
  • Internal模式:即内网模式,虚拟机与外网完全断开,只实现虚拟机于虚拟机之间的内部网络模式,和主机之间不能互相访问,就相当于虚拟机之间架设了一个独立的局域网。只有 同一名称(如:intnet)的内部网络模式的虚拟机之间才能互相访问 ,还有一个条件是在同一网段。
  • Host-only Adapter模式:即主机模式,VirtualBox 在宿主机中虚拟一个 host-only 网卡,然后把虚拟主机桥接到 host-only 网卡上,我们可以通过设置 host-only 网卡(共享、桥接)来实现网络连接,是所有接入模式中最复杂的一种,需要有比较扎实的网络基础知识才行。前面几种模式所实现的功能,通过虚拟机及网卡的设置都可以被实现。
Bridged Adapter模式 NAT模式 Internal模式 Host-only Adapter模式
虚拟机与宿主机 处于同一网段,彼此互通 虚拟机能访问宿主机;宿主机不能访问虚拟机 彼此不通 虚拟机能访问宿主机;宿主机不能访问虚拟机
虚拟机与虚拟机 处于同一网段,彼此互通 彼此不通 彼此互通,处于同一网段 彼此互通,处于同一网段
虚拟机与其他主机 处于同一网段,彼此互通 虚拟机能访问其他主机;其他主机不能访问虚拟机 彼此不通 彼此不通;需要设置
虚拟机与互联网 虚拟机可以上网 虚拟机可以上网 虚拟机不能上网 彼此不通;需要设置

# 使用需求

  • 虚拟机能访问网络;
  • 虚拟机的ip需要固定;
  • 虚拟机之间能互相访问,集群/主从架构节点需要互相通信

# 网络连接方式选择

可以访问网络的连接方式:

  • nat(网络地址转换)——NAT不支持静态IP、虚拟机之间不能互相访问
  • 桥接——桥接的话会占用局域网的ip,小团队设备少,可以避开,但是拿到办公环境就容易和其他机器的ip冲突

# 多块网卡 NAT + Host Only

直接用桥接模式,到时能满足需求,但是也不大好; 但是这是用的虚拟机,有多个网卡

img

可以通过多个网卡,设置不同的网络连接方式,达到目标;

  • 第一个网卡选择 NAT 模式使得虚拟机能访问网络
  • 第二个网卡选择 Host Only 使多个虚拟机之间能互相通信并且还能设置静态ip

# 1. 第一块网卡设置NAT

首先 VirtualBox 使用 NAT 模式,需要先开始一个全局设置 (管理 -> 全局设置)

img

img

然后网络连接设置为 NAT

img

ping 一下网络试试

img

# 2. 第二块网卡设置 Host Only

img

# 设置静态IP

进入网卡配置目录 cd /etc/sysconfig/network-scripts

ifcfg- 开头的文件, 由于现在有多个网卡,ifcfg的文件有多个

img

那么编辑哪个呢?网卡有唯一的 mac 地址,看看第二块host only 的网卡mac地址为

img

看看虚拟机网络 ip addr

img

可以看到,第二块网卡mac地址对应的设备为 enp0s8

那么编辑的文件应该是 ifcfg-enp0s8

BOOTPROTO=static  ## 改为static静态ip

IPADDR=192.168.56.104 ##设置静态ip

NETMASK=255.255.255.0 ## 设置子网掩码

注意:IPADDR 和 NETMASK 要和宿主机的网络设置匹配;我自己的笔记本 ip是 192.168.56.1 所以上面虚拟机的ip地址只能设置成 192.168.56.x 这个ip段

img

从笔记本(宿主)ping一下虚拟机试试

img

成功! 其他台虚拟机可以用一样的方式去设置,或者再配置完整个虚拟机环境(网络、基本的java环境、zookeeper节点)后,直接利用virtual box复制后改改ip 更省事