Linux 虚拟机绑定静态 IP
环境介绍
- Machine: NUC8i5BEK
- OS: macOS Catalina 10.15.6
- VirtualBox: 6.1.12 r139181 (Qt5.6.3)
- CentOS: 8.2.2004-x86_64
虚拟机连网方式
VirtualBox 虚拟机设置 -> 网络 -> 网卡 1 -> 连接方式,常用的连接方式有 4 种,这里不赘述它们的原理,只是简单介绍一下它们在实际使用中的区别。
- 网络地址转换(NAT):「网络地址转换是一种 IP 数据包在通过路由器或事防火墙的时重写来源 IP 地址或是目的 IP 地址的技术」[1]。连接方式设置为 NAT 后,虚拟机可以访问到宿主机和外部网络,但是宿主机和外部网络访问不到虚拟机。即实现的是单向访问:虚拟机 -> 宿主机 -> 外部网络。
- 桥接网卡:桥接的作用是把两个不同局域网的网络通过一个“桥”连接起来。连接方式设置为桥接网卡后需要指定一张桥接的网卡,桥接后的虚拟机和宿主机一样都处在这张网卡下的同一个网段。对外部网络来说,此时的宿主机和虚拟机是一样的。由于处在同一张网卡的同一个网段中,外部网络和虚拟机之间、宿主机和虚拟机之间都可以双向访问:外部网络 <-> 宿主机 <-> 虚拟机 <-> 外部网络。
- 内部网络:内部网络指的是 VirtualBox 内部的网络,也就是虚拟机和虚拟机之间的网络。连接方式设置为内部网络后,宿主机和虚拟机、外部网络和虚拟机之间都不能够访问,只有虚拟机和虚拟机之间可以互相访问。
- 仅主机(Host-Only)网络:顾名思义,仅主机和虚拟机之间可以互相访问。
以上 4 种连接方式中,不管如何设置,虚拟机和虚拟机之间使用的都是同一张网卡,因此它们之间都是可以互相访问的。从虚拟机的视角来看,4 种方式的访问范围大小排序为:内部网络 < 仅主机(Host-Only)网络 < 网络地址转换(NAT) < 桥接网卡。
配置步骤
修改网卡配置文件
以 CentOS 8 为例,网卡的配置文件在 /etc/sysconfig/network-scripts
目录下,我选择的连接方式为桥接网卡,我的网卡名为“enp0s3”,因此配置文件的名称为“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="9d1c8bf7-ee45-436a-90c1-873d43e3cb65"
DEVICE="enp0s3" # 网卡名称
ONBOOT="yes" # 开机自动启用网卡
其中需要修改的部分是 BOOTPROTO="dhcp"
,由于我们需要固定 IP 地址,所以需要将其设置为 BOOTPROTO="static"
。固定 IP 之后需要自己手动指定 IP 地址、网关、子网掩码、DNS 等信息,在配置文件中加入相应项:
...
IPADDR=192.168.37.142 # 静态 IP 地址
GATEWAY=192.168.37.1 # 网关
NETMASK=255.255.255.0 # 子网掩码
DNS1=119.29.29.29 # DNS:这里我选择的是 DNSPod
...
重启网络服务
systemctl restart network
故障排查
宿主机不能访问虚拟机
-
检查 IP、网关是否配置正确。
-
检查防火墙是否关闭:
systemctl status firewalld
,如未关闭,关闭防火墙,并取消开机自启:systemctl stop firewalld systemctl disable firewalld
虚拟机不能访问外部网络
- 检查 IP、网关是否配置正确。
- 检查 DNS 是否设置正确,更换 DNS 为“114.114.114.114”或“8.8.8.8”试试。
本文来自博客园,作者:六开箱,转载请注明原文链接:https://www.cnblogs.com/lkxed/p/linux-vbox-bind-ip.html