在搭建开发环境或者测试服务器时,很多人会用到虚拟机。比如你在本地用 VMware 或 VirtualBox 装了个 Ubuntu 系统,想让它能上网,或者让主机能访问它运行的网站,这时候就得给虚拟机分配一个 IP 地址。
虚拟机网络模式决定IP分配方式
常见的虚拟机软件都提供几种网络模式,不同的模式下,IP 分配机制不一样。最常用的有三种:NAT、桥接(Bridged)和仅主机(Host-Only)。
NAT 模式是默认设置。在这种模式下,虚拟机会通过主机“共享”网络,就像家里的多个设备通过路由器上网一样。虚拟机会自动获取一个私有 IP,通常是 192.168.x.x 这类地址,能上网,但主机不能直接通过这个 IP 访问虚拟机的服务。
如果你希望主机能方便地访问虚拟机,比如测试一个 Web 应用,桥接模式更合适。启用桥接后,虚拟机会像一台独立设备一样接入局域网,从路由器那里拿到一个和主机同网段的 IP。比如主机是 192.168.1.100,虚拟机可能就是 192.168.1.101。这样两者可以直接互通,手机连同一个 Wi-Fi 也能访问这个虚拟机。
仅主机模式则更封闭,虚拟机和主机组成一个小局域网,外部设备无法访问。适合做隔离测试,IP 通常由虚拟机软件内置的 DHCP 自动分配。
手动设置静态IP也很常见
有时候自动分配的 IP 不稳定,重启后变了,配置好的服务就访问不了。这时候可以手动设个静态 IP。以 Linux 虚拟机为例,在 Ubuntu 中修改 netplan 配置文件:
# 编辑配置文件
sudo nano /etc/netplan/01-network-manager-all.yaml
# 内容示例
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
addresses: [192.168.1.200/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
保存后应用配置:
sudo netplan apply
注意 IP 地址要和当前网络环境匹配。如果是桥接模式,必须使用局域网内未被占用的地址,否则会 IP 冲突。
Windows 虚拟机也类似,在“网络和共享中心”里找到对应网卡,手动填写 IP、子网掩码、网关和 DNS 就行。
查看虚拟机IP地址
不管哪种方式分配,想知道当前 IP 是多少,Linux 下执行:
ip addr show
或者简写:
ip a
找对应网卡那一段,比如 ens33 或 eth0,inet 后面的就是 IP。Windows 则用:
ipconfig
命令行一敲,IPv4 地址就出来了。
有些虚拟机平台还能在管理界面直接看到 IP,比如 VMware Workstation 的右下角网络图标点开就能看,省得进系统查。