VMware Ubuntu 22.04 虚拟机设置桥接模式 并指定固定ip

一、在 VMware 中设置虚拟机的网络连接为桥接模式

步骤:

  1. ​关闭 Ubuntu 虚拟机​​(如果正在运行)。
  2. 打开 ​​VMware Workstation / VMware Player​​。
  3. 在左侧虚拟机列表中,​​右键点击你的 Ubuntu 22.04 虚拟机​​,选择 ​​“设置”(Settings)​​。
  4. 在弹出的窗口中,选择 ​​“网络适配器”(Network Adapter)​​。
  5. 在右侧的 ​​“网络连接”(Network connection)​​ 部分,选择:✅ ​​桥接模式(Bridged)​
  6. 如果有选项 ​​“复制物理网络连接状态”(Replicate physical connection state)​​,可以勾选也可以不勾选,一般不影响。
  7. 点击 ​​“确定”​​ 保存设置。

桥接模式的作用:虚拟机会像局域网中的一台独立物理设备一样,直接连接到你的物理网络(和你的主机在同一个网段),可以从路由器获取 IP 或手动设置固定 IP。

二、在 Ubuntu 22.04 中配置固定 IP(桥接模式下)

Ubuntu 22.04 默认使用 ​​Netplan​​ 来管理网络配置,我们需要编辑 Netplan 的配置文件来设置固定 IP。

步骤:

1. 首先确定你的网络接口名称

打开终端,运行:

ip a

或者:

ifconfig

找到你的网络接口名称,通常是类似:

  • ens33
  • enp0s3
  • eth0(较少见,在较新版本中一般不用)

📌 记下这个名称,比如我们假设它是 ens33


2. 找到并编辑 Netplan 配置文件

Netplan 的配置文件通常位于 /etc/netplan/目录下,文件名可能是:

  • 00-installer-config.yaml
  • 01-network-manager-all.yaml
  • 或者类似的 .yaml文件

运行以下命令查看有哪些配置文件:

ls /etc/netplan/

注意如果文件为:50-cloud-init.yaml 则需要手动创建00-installer-config.yaml文件

说明:

在 Ubuntu 22.04 中,尤其是使用 ​​官方镜像(如 Ubuntu Server 或 Desktop ISO 安装)​​ 时,系统可能默认启用了 ​​cloud-init​​ 工具。

⭐ 什么是 cloud-init?
• cloud-init是 Ubuntu(尤其在云环境、虚拟机镜像中)用来 ​​自动化初始化系统配置​​ 的工具。

• 它会在 ​​系统首次启动或每次启动时​​,根据某些配置来源(比如网络元数据、内置配置、ISO 镜像默认设置等)​​自动配置网络、用户、SSH 密钥等​​。

• 在很多 ​​Ubuntu 官方云镜像 / 虚拟机镜像​​ 中,cloud-init默认会 ​​接管网络配置​​,并且将网络配置写回到 /etc/netplan/50-cloud-init.yaml文件。

❗ 所以问题出在这里:
• 你手动修改了 /etc/netplan/50-cloud-init.yaml文件,设置了静态 IP 或桥接模式相关配置;

• 但是 ​​cloud-init在系统启动时再次运行,检测到它应该管理网络,于是覆盖了你手动修改的内容​​;

• 导致你每次重启后,你的 Netplan 配置又被还原成 cloud-init的默认配置(比如又变成 DHCP);


继续:

假设文件是:/etc/netplan/00-installer-config.yaml

使用 nano(或其他编辑器)编辑它:

sudo nano /etc/netplan/00-installer-config.yaml

3. 修改配置文件以使用桥接模式并设置固定 IP

​注意:​​ 桥接模式下,虚拟机和物理机在同一局域网,因此你需要:

  • 设置一个和你的局域网同网段的 ​​静态 IP​
  • 设置正确的 ​​子网掩码(CIDR,如 /24)​
  • 设置正确的 ​​网关(通常是路由器的 IP,如 192.168.1.1)​
  • 设置正确的 ​​DNS(如 8.8.8.8, 114.114.114.114 或你路由器的 IP)​

下面是一个示例配置(请根据自己的网络环境修改):

network:
  version: 2
  renderer: networkd  # 或者 NetworkManager(如果使用 GUI,通常用 NetworkManager)
  ethernets:
    ens33:  # 你的网卡名称,根据 ip a 命令结果填写
      dhcp4: no         # 关闭 DHCP
      addresses:
        - 192.168.1.100/24  # 设置你的固定 IP,/24 表示子网掩码 255.255.255.0
      routes:
        - to: default
          via: 192.168.1.1  # 你的网关,通常是路由器的 IP
      nameservers:
        addresses:
          - 8.8.8.8         # Google DNS
          - 114.114.114.114 # 国内常用 DNS
          # 或者使用你路由器的IP,如 192.168.1.1

🎯 请务必根据你实际的局域网情况修改如下内容:

  • ens33→ 你的实际网卡名
  • 192.168.1.100→ 你想设置的固定 IP(确保该 IP 没有被其他设备占用)
  • 192.168.1.1→ 你的网关(通常是路由器管理地址)
  • 255.255.255.0(即 /24)→ 子网掩码

4. 应用 Netplan 配置

保存文件后(在 nano 中按 Ctrl + O保存,Ctrl + X退出),运行以下命令使配置生效:

操需提前要对文件授权

chmod 600 /etc/netplan/*.yaml

注意: 如果文件权限过大也会报错

sudo netplan apply

出现如下警告可以忽略:

WARNING:root:Cannot call Open vSwitch: ovsdb-server.service is not running.

如果出现错误,可以尝试:

sudo netplan --debug apply

或者先测试配置:

sudo netplan try

(按回车确认,若网络中断会在 120 秒后恢复原配置)


5. 验证 IP 是否设置成功

运行以下命令查看 IP 地址:

ip a

你应该能在 ens33(或你设置的网络接口)上看到你设置的固定 IP,如 192.168.1.100

测试网络连通性:

ping 192.168.1.1   # 网关
ping 8.8.8.8       # Google DNS
ping www.baidu.com # 测试 DNS 解析

如果 ping www.baidu.com不通,可能是 DNS 配置有问题,请检查 Netplan 中的 nameservers部分。

重启后会提示提示 A start job is running for wait for netword to be configured

需要修改网络检测的超时时间

编辑 systemd 的配置,​​缩短或禁用 “等待网络在线” 的超时时间​

sudo systemctl edit systemd-networkd-wait-online.service

你遇到的问题是:

在 VMware 中为 Ubuntu 22.04 虚拟机设置了 ​​桥接模式(Bridged)​​ 后,​​可以正常联网​​,但 ​​重启系统后卡在以下提示:​

A start job is running for Wait for Network to be Configured

并且可能要等很久(比如 1 分 30 秒 或更久),然后才能进入系统。


🧩 问题原因分析

这个提示:

A start job is running for Wait for Network to be Configured

是由 ​​systemd 的一个服务​​ 触发的,它的目的是:

​等待网络配置完成(通常是获取到 IP 地址,尤其是通过 DHCP)后,再继续启动系统。​

在 Ubuntu 22.04 中,这个服务是:

systemd-networkd-wait-online.service​ 或者与 ​​NetworkManager​​ 相关的等待服务

它通常会在以下情况下触发等待:

  • 你的 Netplan 配置中 ​​启用了 DHCP(dhcp4: yes)​​,并且系统等待一个 ​​有效的 IP 地址分配(比如来自路由器)​
  • 或者你设置了 renderer: networkd,并且 ​​网络接口没有在 systemd 等待的时间内成功获取 IP​
  • 或者你使用的是 ​​桥接模式​​,但 ​​虚拟机启动时,物理网络尚未就绪(比如宿主机网络还没连接 / 路由器还没启动)​
  • 或者你的网络配置 ​​依赖外部 DHCP 服务器,但获取超时​

✅ 解决方法

禁用 “等待网络配置” 的启动等待(推荐,如果你不需要依赖网络启动)

这是 ​​最常见、最推荐的解决方法​​,特别是对于 ​​单机虚拟机、不需要开机就连外网、或者桥接网络可能延迟启动的场景​​。

步骤:

编辑 systemd 的配置,​​缩短或禁用 “等待网络在线” 的超时时间​

运行以下命令编辑配置:

sudo systemctl edit systemd-networkd-wait-online.service

如果你用的是 ​​NetworkManager​​ 而不是 networkd,则服务名可能是:

NetworkManager-wait-online.service

可以同样方式禁用或调整。

在打开的编辑器中(比如 nano),输入以下内容:

[Service]
ExecStart=
ExecStart=/lib/systemd/systemd-networkd-wait-online --timeout=10

📌 这里我们把默认的等待时间(通常是 2 分钟左右)​​缩短为 10 秒​​,如果 10 秒内网络没就绪,也不再阻塞启动,系统会继续启动。

如果你 ​​完全不想等待网络​​,可以直接禁用该服务:

sudo systemctl mask systemd-networkd-wait-online.service

重新加载 systemd 配置并重启服务​​

sudo systemctl daemon-reload

即可解决

三、补充说明

1. 关于桥接模式的网络要求

  • 桥接模式下,虚拟机直接接入你的物理网络,因此:
    • 它会从路由器获取 IP(如果用 DHCP)
    • 或者你可以手动设置一个 ​​与局域网同网段​​ 的固定 IP
    • 要保证该 IP 没有被其他设备占用
    • 网关和 DNS 一般与你的主机一致(通常是路由器的 IP,如 192.168.1.1

2. 如果你希望使用 DHCP 自动获取 IP(非固定)

那只需要在 Netplan 中设置 dhcp4: yes即可,无需指定 IP。

3. ping 时候提示 -bash: ping: command not found
如果在 Ubuntu 22.04 终端中输入 ping命令时提示:

-bash: ping: command not found

这意味着 ​ping命令没有安装或者路径未包含在环境变量中​​,不过在 ​​Ubuntu 22.04 默认情况下,ping应该是预装了的​​。如果提示找不到,通常是:

​原因:iputils-ping包未安装(可能被精简版系统或最小化安装移除了)​


✅ 解决方法:安装 iputils-ping

请按以下步骤操作:

1. 使用 sudo权限安装 iputils-ping

打开终端,运行:

sudo apt update
sudo apt install iputils-ping

📌 这个包提供了 pingping6等网络测试工具。


2. 安装完成后,再次尝试 ping

比如测试网关是否可达:

ping 192.168.1.1

或者测试外网:

ping 8.8.8.8

如果想测试域名解析 + 网络连通性,可以运行:

ping www.baidu.com

🎯 如果 ping www.baidu.com提示找不到域名,可能是 ​​DNS 配置有问题​​,可以检查 /etc/resolv.conf或 Netplan 中的 nameservers配置。


🔍 附加说明

为什么 Ubuntu 里没有默认提供 ping

• 但在标准的 Ubuntu Desktop 或 Server 安装中,iputils-ping一般是默认安装的。如果你的 Ubuntu 是通过某些精简脚本或自定义镜像安装的,有可能被移除了。

• 从安全策略角度,某些最小化安装的 Linux 发行版(或 Docker 最小镜像等)可能不包含 ping,因为它需要 CAP_NET_RAW 权限,且有可能被滥用。

Previous Post Next Post

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注