一、准备工作
1. VirtualBox 版本: 5.1.22 r115126 (Qt5.6.2)
2. Ubuntu 版本:ubuntu-16.04.2-desktop-amd64
二、实现目标
1. 目标一:从主机可以通过静态IP访问到每一个虚拟机,从虚拟机中可以访问主机(主机也有一个固定的静态IP)
2. 目标二:虚拟机之间组成一个由静态IP构成的网络,而且虚拟机之间可以互相访问
3. 目标三:主机和虚拟机都可以访问internet
三、基本思路
为了实现上面的三个目标,我准备在虚拟机里面加三个网卡来完成,思路如下:
1. 网卡1:使用仅主机(Host-Only)适配器的连接方式,完成目标一,即:在主机中可以通过一个静态IP访问到每一个虚拟机,在虚拟机中可以访问主机(主机也有一个固定的静态IP)
2. 网卡2:使用内部网络的连接方式,完成目标二,即:虚拟机之间组成一个由静态IP构成的网络,而且虚拟机之间可以互相访问
3. 网卡3:使用网络地址转换(NAT)的连接方式,完成目标三,即:主机和虚拟机都可以访问internet
四、配置主机的内网静态IP
打开VirtualBox管理器,从菜单中选择VirtualBox – 偏好设置;在弹出的窗口中选择网络,然后再选择 仅主机(Host-Only)网络 标签页,双击 vboxnet0,修改里面的IP地址,如下图所示:
接着,关闭DHCP服务器,如下图所示:
也就是说,现在主机由一个静态IP:192.168.1.100。之后,虚拟机就可以通过这个IP地址来访问主机了。上述设定完成后,查看主机的地址,可以看到如下的信息:
五、配置虚拟机的网卡
加入第一块网卡,配置成如下图的方式:
加入第二块网卡,配置成如下图的方式:
加入第三块网卡,配置成如下图所示:
保存,启动虚拟机。
六、在虚拟机内部配置网卡
在虚拟机里使用 ifconfig 命令查看所有的网卡,如下图所示:
接下来我们来配置各个网卡的IP,使用命令 vim /etc/network/interfaces 打开网络配置文件,配置后的文件如下图所示:
auto lo
iface lo inet loopback
auto enp0s3
iface enp0s3 inet static
address 192.168.1.101
gateway 192.168.1.0
netmask 255.255.255.0
auto enp0s8
iface enp0s8 inet static
address 192.168.0.101
netmask 255.255.255.0
auto enp0s9
iface enp0s9 inet dhcp
在保存的过程中可能会提示没有权限,可以使用命令 :w !sudo tee % 来保存,保存后重启机器。
也就是说,现在这台虚拟机有三个IP:
- 192.168.1.101: 和主机通信使用
- 192.168.0.101: 和其他的虚拟机通信使用
- 10.0.4.15: 是自动获取的,通过VirtualBox的地址转换功能,用来访问外网internet
如果再新建一台虚拟机,还是需要参考上面的步骤,为每个虚拟机都设置三块网卡。
七、验证
通过 ping 命令看是否能够相互 ping 通就可以验证。
八、参考文献
VirtualBox下虚拟机和主机内网互通+虚拟机静态IP的网络配置
ssh 错误 ssh: connect to host 192.168.1.106 port 22: Connection refused
MAC安装Securecrt破解
VirtualBox下为Ubuntu虚机添加第二块网卡
CentOS 7.0系统安装配置图解
Centos防火墙设置与端口开放的方法
linux下多个节点ssh互相免密码连接详解
九、Linux 命令
service firewalld status; #查看防火墙状态
service firewalld start; 或者 #systemctl start firewalld.service;#开启防火墙
firewall-cmd --permanent --add-port=8080/tcp #添加对外开放端口
firewall-cmd --reload #重启防火墙
service firewalld stop; 或者 #systemctl stop firewalld.service;#关闭防火墙