使用 vagrant + virtualbox 搭建的虚拟机需要桥接网络供其他机器连接。
目前我使用的虚拟机是使用 vagrant + virtualbox 搭建的。
vagrant创建虚拟机会默认创建192.168.56.x网段的适配网络,也就是虚拟机的ip得设置在192.168.56.x这个网段。
这是我用vagrant的Vagrantfile。
Vagrant.configure("2") do |config|
config.vm.box_url = "https://mirrors.ustc.edu.cn/centos-cloud/centos/7/vagrant/x86_64/images/CentOS-7.box"
# 设置虚拟机的Box
config.vm.box = "centos/7"
# 设置虚拟机的主机名
config.vm.hostname="centos7"
# 设置虚拟机的IP,每次创建的时候,注意ip不能相同,都在192.168.56.x段
config.vm.network "private_network", ip: "192.168.56.101"
# 设置主机与虚拟机的共享目录
# config.vm.synced_folder "~/Documents/vagrant/share", "/home/vagrant/share"
# VirtaulBox相关配置
config.vm.provider "virtualbox" do |v|
# 设置虚拟机的名称,这个会在VirtualBox中显示的
v.name = "centos7"
# 设置虚拟机的内存大小
v.memory = 4096
# 设置虚拟机的CPU个数
v.cpus = 4
end
end
vagrant up
启动后,会默认创建两个网卡,一个是网络地址转换(NAT)
,另一个是仅主机网络
,在virtualbox中可以看到,右键虚拟机->设置->网络
。
比如说现在我的电脑主机的ip是192.168.2.x,虚拟机的网络是192.168.56.101。
此时主机和虚拟机之间是可以直接互连的,比如我在虚拟机中搭建mysql,redis等,本地主机都是可以直接连上的,只需要虚拟机暴露端口和关闭防火墙就行了。
但是如果此时,局域网中有其他机器也在192.168.2.x网段,就连不上192.168.56.x的机器了,因为他们不在一个网段。
这时需要设置桥接网络,需要设置虚拟机也在192.168.2.x网段内。
以下是设置步骤:
正常搭建的ip地址为192.168.56.101的虚拟机,可以先用xshell连接,然后修改网络配置文件:
# 我这里的文件是ifcfg-eth1,根据自己的来,可能名字不同
vi /etc/sysconfig/network-scripts/ifcfg-eth1
修改ip地址,添加网关地址,dns等。
# VAGRANT-BEGIN
# The contents below are automatically generated by Vagrant. Do not modify.
NM_CONTROLLED=yes
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.2.101
NETMASK=255.255.255.0
GATEWAY=192.168.2.1
DNS1=192.168.2.1
DEVICE=eth1
PEERDNS=no
#VAGRANT-END
重启网络服务
systemctl restart network.service
在virtualbox中添加网络
右键虚拟机->设置->网络,设置网卡1配置为桥接,网卡2的适配网络为上面添加的网络
到电脑网络设置那里,网络适配器配置那,设置下192.168.2.x网络的网关为192.168.2.1。
设置好后,重启虚拟机,使用xshell连接192.168.2.101,看是否连接成功。
评论区