virtualbox虚拟机centos7设置固定IP,并保证主机宿主机通信与虚拟机访问外网 电脑版发表于:2022/6/11 11:51 **视频演示地址:** https://www.tnblog.net/edu/play?des=sjqkecmklq [视频演示](https://www.tnblog.net/edu/play?des=sjqkecmklq) ### 修改网卡设置(这样设置ip可以固定但是虚拟机无法连接外网,不测试可以直接跳过) vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 **原有的内容:** ``` TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="dhcp" 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" UUID="02486f35-b451-4b4b-8b10-6ac3650e4d14" DEVICE="enp0s3" ONBOOT="yes" ``` **修改成如下的方式:**  tn2>ONBOOT=yes #开机启用网络配置。 BOOTPROTO=static #static,静态ip,默认是dhcp,动态分配ip。 IPADDR=192.168.1.188 #设置固定静态ip,保持和主机在同一网段。 NETMASK=255.255.255.0 #子网掩码,和主机一致。 GETWAY=192.168.1.1 #保持和主机一致。 DNS1=192.168.31.1 #DNS1,也可以写其他地址,如谷歌地址8.8.8.8。或者114.114.114.114 DNS2=192.168.1.1 #DNS2。 **设置的内容win下可以使用ip config查看**  更多详细信息,可以在网络下的详细信息中看到。(右键想看的网络-->状态--详细信息)  **设置完成后,重启网关服务。** ``` systemctl restart network ``` ### 上面那样设置后ip是固定了,宿主机和虚拟机也能相互访问,但是虚拟机访问不到外网,可以考虑使用两张网卡来同时满足这两个需求 一直尝试不使用两个网卡,使用一个网卡去完成主机与虚拟机的访问,虚拟机与外网的访问。但是如果我们选择桥接模式时,配置文件中的BOOTPROTO=dhcp时,配置了静态IP,可以访问外网本地不能访问,当BOOTPROTO=static时,本地可以访问,外网不能访问。所以我们需要使用两个网卡。 tn2> 1.NAT网络地址转换(可以上外网) 2.桥接模式(可外网,可主机访问,但是不能在一个网卡中实现) 3.仅主机模式(可以主机访问) 使用的是(Virtual Box Host-Only) 这里我们使用NAT + 桥接模式设置静态ip,并可以互相ping通,连接外网 NAT模式:给虚拟机配置一个上网的网卡,让虚拟机可以连接外网。 桥接模式:给虚拟机设置一个固定IP,让主机与虚拟机网络相通 这种方式设置同一个局域网里边其他电脑也能访问到另外一台电脑的虚拟机 tn3> 这里其实也可以使用Host-only+NAT(网络地址转换)来实现这个功能 Host-Only模式给虚拟机设置一个固定IP,让主机与虚拟机网络相通 NAT模式是为虚拟机配置一个上网的网卡,让虚拟机可以连接外网。 **配置网卡** 网卡一:设置成网络地址转换NAT模式:  网卡二:设置成桥接网卡  **查看网卡** 开机后,输入 ip addr 会有两个网卡,因为选择开启了两个网卡  进入到 etc/sysconfig/network-scripts/ 目录 ,如果只有一个网卡名称的文件,则复制这个网卡文件到当前为置,并与第二网卡名称保持一致 复制网卡(如果没有第二个网卡): ``` cp ifcfg-enp0s3 ifcfg-enp0s8 ``` **第一个网卡配置文件,改开机自启配置就行** ``` vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 ```  ``` ONBOOT="yes" ``` 一般默认都是yes **第二个网卡设置**  名字也要注意修改一下,修改成你第二个网卡的名字:  tn2>ONBOOT=yes #开机启用网络配置。 BOOTPROTO=static #static,静态ip,默认是dhcp,动态分配ip。 NAME = "enp0s8" # 注意名字也修改一下,修改为网卡的名字 DEVICE = "enp0s8" # 注意名字也修改一下,修改为网卡的名字 IPADDR=192.168.1.188 #设置固定静态ip,保持和主机在同一网段。 NETMASK=255.255.255.0 #子网掩码,和主机一致。 GETWAY=192.168.1.1 #保持和主机一致。 DNS1=192.168.31.1 #DNS1,也可以写其他地址,如谷歌地址8.8.8.8。或者114.114.114.114 DNS2=192.168.1.1 #DNS2。 tn2>1.net网络地址转换(可以上外网) 2.桥接模式(可外网,可主机访问,但是不能在一个网卡中实现) 3.仅主机模式(可以主机访问) 使用的是(Virtual Box Host-Only)<br> 这里使用NAT + 桥接模式设置静态ip,并可以互相ping通,连接外网。 NAT:为虚拟机配置一个上网的网卡,让虚拟机可以连接外网。 桥接模式:实现固定IP,让主机与虚拟机网络相通。 **设置好后使用如下命令重启网络:** ``` systemctl restart network ``` 如果重启后发现ip地址有多个,获取不是刚刚设置的,把虚拟机关闭后重新打开即可! **还要注意,如果防火墙没有关,你需要把防火墙关闭一下** ``` systemctl stop firewalld systemctl disable firewalld ``` **一个网卡用于虚拟机访问外网,一个网卡用于宿主机连接虚拟机** #### 注意,如果更换了网络环境,例如办公地点发生改变,可能出线网卡变化,也就是UUID发生变化,这个时候需要注意调整。 查看网卡UUID命令 ``` nmcli con | sed -n '1,2p' ```  如上图,获取了新的NAME和UUID。 根据获取的新网卡内容,复制/etc/sysconfig/network-script下的ifcfg-enp0s3文件,新文件名使用新网卡名为ifcfg-enp0s17。 ``` cp /etc/sysconfig/network-script/ifcfg-enp0s3 /etc/sysconfig/network-script/ifcfg-docker0 ``` 修改新网卡文件配置 ``` vi /etc/sysconfig/network-script/ifcfg-docker0 ``` 调整UUID为新的UUID 调整NAME=‘docker0’ 调整DEVICE=‘docker0’ 设置完成后,重启服务即可生效。 ``` systemctl restart network ```