Ubuntu 22.04 虚拟机网络修复:ens33无IP时3步手动配置与防火墙规则

当你在VMware中运行Ubuntu 22.04虚拟机时,可能会遇到ens33网卡无法自动获取IP地址的情况。这种问题在嵌入式开发、跨设备调试等场景中尤为常见。本文将提供一个完整的命令行解决方案,涵盖从基础配置到防火墙规则的全套流程。

1. 网络配置诊断与准备

首先需要确认当前网络状态。打开终端执行以下命令:

ip a

如果ens33网卡没有显示类似 inet 192.168.x.x 的IP地址,说明自动获取IP失败。此时需要检查VMware的桥接设置:

  1. 确保虚拟机设置 → 网络适配器 → 选择"桥接模式"
  2. 在VMware菜单栏选择 编辑 → 虚拟网络编辑器 → 更改设置
  3. 确认VMnet0使用桥接模式,并正确绑定到主机物理网卡

注意:如果主机同时连接有线和无线网络,建议禁用无线网卡再进行桥接配置,避免网络混淆。

常见故障现象包括:

  • ens33 网卡只有MAC地址没有IP
  • 显示 NO-CARRIER 状态
  • IP地址以 169.254 开头(自动分配的无效地址)

2. 三步手动配置网络

2.1 修改Netplan配置文件

Ubuntu 22.04使用Netplan管理网络配置,编辑配置文件:

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

修改为以下内容(根据你的网络环境调整参数):

network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:
      dhcp4: no
      addresses: [192.168.1.100/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]

关键参数说明:

  • addresses : 静态IP地址,末尾/24表示子网掩码255.255.255.0
  • gateway4 : 路由器网关地址
  • nameservers : DNS服务器地址

应用配置:

sudo netplan apply

2.2 重启网络服务

执行以下命令确保配置生效:

sudo systemctl restart systemd-networkd

验证配置:

ip a show ens33

应该能看到类似这样的输出:

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.100/24 brd 192.168.1.255 scope global ens33
       valid_lft forever preferred_lft forever

2.3 测试网络连通性

先ping网关测试本地网络:

ping 192.168.1.1 -c 4

再ping外部地址测试互联网连接:

ping 8.8.8.8 -c 4

如果网关能通但外网不通,可能是DNS问题,尝试:

nslookup google.com

3. 防火墙配置与调试

Ubuntu 22.04默认使用UFW防火墙,可能导致ping不通。需要配置适当规则:

3.1 允许ICMP协议

sudo ufw allow in proto icmp

3.2 开放常用端口

对于开发环境,建议开放以下端口:

sudo ufw allow 22/tcp   # SSH
sudo ufw allow 2049/tcp # NFS
sudo ufw allow 111/udp  # RPC

3.3 防火墙状态检查

查看当前规则:

sudo ufw status numbered

启用/禁用防火墙:

sudo ufw enable  # 启用
sudo ufw disable # 禁用(仅调试时使用)

4. 高级排错技巧

当基础配置完成后仍无法连通时,可以尝试以下方法:

4.1 ARP缓存清理

sudo ip neigh flush all

4.2 路由表检查

ip route

正常应显示类似:

default via 192.168.1.1 dev ens33 proto static 
192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.100

4.3 网络接口重置

sudo ip link set ens33 down
sudo ip link set ens33 up

4.4 多网卡环境处理

如果主机有多个网卡,在VMware虚拟网络编辑器中需明确指定桥接的物理网卡。对于USB网卡等特殊设备,可能需要额外驱动支持。

5. 开发板互通专项配置

当需要与嵌入式开发板通信时,还需注意:

  1. 确保开发板IP与虚拟机在同一子网
  2. 开发板网关指向路由器或虚拟机IP
  3. 如需NFS挂载,虚拟机需安装并配置NFS服务:
sudo apt install nfs-kernel-server
sudo mkdir -p /srv/nfs
sudo chmod 777 /srv/nfs
echo "/srv/nfs *(rw,sync,no_subtree_check)" | sudo tee -a /etc/exports
sudo exportfs -a

配置完成后,在开发板上执行:

mount -t nfs 192.168.1.100:/srv/nfs /mnt -o nolock

6. 持久化与备份建议

为防止配置丢失,建议:

  1. 备份网络配置文件:

    sudo cp /etc/netplan/00-installer-config.yaml ~/netplan-backup.yaml
    
  2. 使用VMware快照功能保存虚拟机状态

  3. 记录关键命令和IP分配表:

设备 IP地址 用途
虚拟机 192.168.1.100 开发环境主机
开发板 192.168.1.200 目标设备
路由器 192.168.1.1 网络网关

更多推荐