Ubuntu虚拟机配置静态IP的流程步骤

 更新时间:2025年12月05日 09:08:17   作者:vortex5  
Netplan 是 Ubuntu 18.04 及以上版本默认的网络配置工具,相比传统的 ifupdown 更简洁、易维护,本教程以 VMware 虚拟机(Ubuntu 系统)为例,手把手教你配置静态 IP,解决有内网 IP 但无法联网配置冲突等常见问题,需要的朋友可以参考下

引言

Netplan 是 Ubuntu 18.04 及以上版本默认的网络配置工具,相比传统的 ifupdown 更简洁、易维护。本教程以 VMware 虚拟机(Ubuntu 系统)为例,手把手教你配置静态 IP,解决「有内网 IP 但无法联网」「配置冲突」等常见问题。

一、前置准备

1. 环境说明

  • 宿主机:Windows/Linux/macOS(以 VMware Workstation 为例)
  • 虚拟机系统:Ubuntu 20.04/22.04/24.04(其他版本通用)
  • 网卡名称:ens33(虚拟机默认网卡名,可通过 ip a 确认)
  • 目标:配置静态 IP 192.168.111.22/24,网关 192.168.111.2

2. 关键前提

  • 确认虚拟机网络模式(本教程以「NAT 模式」为例,桥接/仅主机模式配置逻辑一致,仅网段需匹配);
  • 关闭冲突的网络管理工具(如 NetworkManager),避免和 Netplan 争抢网卡管理权;
  • 确保配置文件权限合规(仅 root 可读写)。

二、步骤 1:查看网卡与当前配置

1. 查看网卡状态

打开虚拟机终端,执行以下命令确认网卡名称和状态:

ip a

输出示例(重点关注 ens33 网卡):

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:94:ef:9d brd ff:ff:ff:ff:ff:ff
    altname enp2s1
  • ens33 状态为 DOWN,先执行 sudo ip link set ens33 up 启动网卡。

2. 查看现有 Netplan 配置

Netplan 配置文件默认存放在 /etc/netplan/ 目录,执行以下命令查看:

ls -l /etc/netplan/

输出示例:

-rw------- 1 root root 428 12月  4 17:40 00-installer-config.yaml
-rw-r--r-- 1 root root 102 12月  3 10:00 01-network-manager-all.yaml  # 冲突文件,需删除

三、步骤 2:清理冲突配置

若存在 01-network-manager-all.yaml 等指向 NetworkManager 的配置文件,会和 Netplan 冲突,需删除:

# 删除冲突配置文件
sudo rm /etc/netplan/01-network-manager-all.yaml
# 验证删除结果
ls -l /etc/netplan/

四、步骤 3:编辑 Netplan 静态 IP 配置

1. 编辑配置文件

使用 nano 编辑主配置文件 00-installer-config.yaml(注意 YAML 严格缩进,禁止用 tab,仅用空格):

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

写入以下内容(替换为你的 IP/网关/DNS):

network:
  version: 2  # Netplan 版本,固定为 2
  renderer: networkd  # 明确用 networkd 管理,避免冲突
  ethernets:
    ens33:  # 网卡名称,需和 ip a 输出一致
      dhcp4: false  # 关闭 DHCP,启用静态 IP
      addresses:
        - 192.168.111.22/24  # 静态 IP + 子网掩码
      routes:
        - to: default  # 默认路由
          via: 192.168.111.2  # 网关 IP(必须是虚拟机网段的真实网关)
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]  # DNS 服务器(公共 DNS/内网 DNS)

2. 配置文件关键说明

字段说明
renderer: networkd指定网络渲染器为 networkd,Ubuntu 服务器版默认推荐
dhcp4: false关闭 DHCPv4,若需 IPv6 静态配置,可添加 dhcp6: false
addresses静态 IP 列表,格式为「IP/子网掩码」,支持配置多个 IP
routes.to: default指向默认网关,所有外网流量走该路由
nameservers.addressesDNS 服务器列表,优先用公共 DNS(8.8.8.8/114.114.114.114)

3. 修正配置文件权限

Netplan 要求配置文件仅 root 可读写(权限 600),执行以下命令修正:

# 设置权限为 600(仅 root 可读可写)
sudo chmod 600 /etc/netplan/00-installer-config.yaml
# 设置归属为 root:root
sudo chown root:root /etc/netplan/00-installer-config.yaml
# 验证权限
ls -l /etc/netplan/00-installer-config.yaml

输出示例(权限正确):

-rw------- 1 root root 428 12月  4 17:40 /etc/netplan/00-installer-config.yaml

五、步骤 4:应用配置并验证

1. 测试配置(推荐)

先用 netplan try 测试配置(临时生效,超时自动回滚,按回车确认永久生效):

sudo netplan try

输出说明:

  • 若提示 WARNING:root:Cannot call Open vSwitch:忽略(未使用 OVS 交换机,不影响);
  • 看到 Do you want to keep these settings? 时,按回车键确认保留配置。

2. 永久应用配置

测试无报错后,执行以下命令永久生效:

# 生成配置
sudo netplan generate
# 应用配置
sudo netplan apply
# 重启网卡(可选)
sudo ip link set ens33 down && sudo ip link set ens33 up

3. 验证配置结果

(1)查看静态 IP 是否生效

ip a

输出示例(ens33 已配置静态 IP 192.168.111.22):

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:94:ef:9d brd ff:ff:ff:ff:ff:ff
    altname enp2s1
    inet 192.168.111.22/24 brd 192.168.111.255 scope global ens33
       valid_lft forever preferred_lft forever

(2)查看路由表

ip route

输出示例(默认网关 192.168.111.2 已生效):

default via 192.168.111.2 dev ens33 proto static 
192.168.111.0/24 dev ens33 proto kernel scope link src 192.168.111.22

(3)测试网络连通性

# 测试内网连通性(ping 网关)
ping -c 3 192.168.111.2
# 测试外网 IP 连通性
ping -c 3 8.8.8.8
# 测试域名解析(验证 DNS)
ping -c 3 baidu.com
  • 若能 ping 通网关但无法 ping 外网:检查 VMware NAT 模式网关是否匹配(参考文末「常见问题」);
  • 若能 ping 外网 IP 但无法 ping 域名:检查 DNS 配置是否正确。

六、常见问题解决

1. 配置静态 IP 后无法访问外网

  • 原因:VMware NAT 模式的真实网关和配置的 via 不一致;
  • 解决:打开 VMware → 编辑 → 虚拟网络编辑器 → 选择 VMnet8(NAT 模式)→ NAT 设置 → 查看「网关 IP」,将 Netplan 中的 via 改为该值。

2. YAML 配置语法错误

  • 症状:netplan apply 报错 Error in network definition
  • 解决:
    1. 检查缩进(仅用 2 个空格,禁止 tab);
    2. 检查标点(冒号后需加空格,如 dhcp4: false 而非 dhcp4:false);
    3. sudo netplan try 测试语法,会提示具体错误行。

3. 配置文件权限警告

  • 症状:netplan try 提示 Permissions for /etc/netplan/xxx.yaml are too open
  • 解决:执行 sudo chmod 600 /etc/netplan/xxx.yaml 修正权限。

4. 网卡状态始终 DOWN

  • 解决:执行 sudo systemctl restart systemd-networkd 重启网络服务,再执行 sudo ip link set ens33 up 启动网卡。

七、配置备份与恢复

1. 备份配置文件

sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak

2. 恢复配置(若出错)

sudo cp /etc/netplan/00-installer-config.yaml.bak /etc/netplan/00-installer-config.yaml
sudo netplan apply

总结

Ubuntu 虚拟机配置静态 IP 的核心是:

  1. 清理 NetworkManager 冲突配置;
  2. 编写合规的 Netplan YAML 配置(注意缩进和权限);
  3. 匹配虚拟机网络模式的真实网关;
  4. 先测试再应用,避免配置失效。

按本教程配置后,虚拟机可稳定使用静态 IP,同时保证内网/外网连通性。

以上就是Ubuntu虚拟机配置静态IP的流程步骤的详细内容,更多关于Ubuntu配置静态IP的资料请关注脚本之家其它相关文章!

相关文章

  • 关于linux权限s权限和t权限详解

    关于linux权限s权限和t权限详解

    本文介绍了linux系统内的2个特殊权限s权限和t权限,简单易懂,大家可以详细看看
    2018-03-03
  • Kafka 常用命令行详细介绍及整理

    Kafka 常用命令行详细介绍及整理

    这篇文章主要介绍了 Kafka 常用命令行详细介绍及整理的相关资料,需要的朋友可以参考下
    2016-12-12
  • Linux使用systemd服务和crontab实现Shell脚本开机自动运行过程

    Linux使用systemd服务和crontab实现Shell脚本开机自动运行过程

    在Linux系统中,使用systemd和crontab是实现Shell脚本开机自启动的两种常用方法,首先,需创建一个Shell脚本,将其放置在适当目录,通过编写.service文件并将其移动到/etc/systemd/system/目录下,可以设置为systemd服务
    2024-09-09
  • Deepin下安装神器Pyenv的步骤记录

    Deepin下安装神器Pyenv的步骤记录

    这篇文章主要给大家介绍了关于Deepin下安装神器Pyenv的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Deepin具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-08-08
  • vagrant如何启动虚拟机

    vagrant如何启动虚拟机

    本文介绍了使用Vagrant和VirtualBox快速搭建Linux虚拟机的过程,包括创建Vagrantfile、配置网络、使用SSH连接以及账户配置等步骤
    2024-11-11
  • linux环境下实现固定串口设备号

    linux环境下实现固定串口设备号

    简要说明:通过修改rifd.rules中的设备ID规则,为RFID串口创建符号链接,使用lsusb和udevadm命令定位设备,若ID冲突则需进一步区分,编程时需采用新设备名确保稳定性
    2025-09-09
  • 如何解决Linux环境变量每次要source /etc/profile问题

    如何解决Linux环境变量每次要source /etc/profile问题

    这篇文章主要介绍了如何解决Linux环境变量每次要source /etc/profile问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • CentOS8出现-bash:乱码问题及解决方法

    CentOS8出现-bash:乱码问题及解决方法

    这篇文章主要介绍了CentOS8出现-bash:乱码问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • vi与vim如何修改tab为4个空格方法示例

    vi与vim如何修改tab为4个空格方法示例

    在Vim 中可以很方便的根据不同的文件类型来设置使用 tab 制表符或者空格,还可以设置长度,非常灵活,下面这篇文章主要给大家介绍了关于vi与vim如何修改tab为4个空格的相关资料,需要的朋友可以参考下
    2018-07-07
  • Linux中虚拟机宕机之后解决办法

    Linux中虚拟机宕机之后解决办法

    这篇文章主要介绍了Linux中虚拟机宕机之后解决办法的相关资料,这里提供详细的解决步骤来说明宕机该如何解决,需要的朋友可以参考下
    2017-08-08

最新评论