周行文 2025-08-13 13:05 采纳率: 98.4%
浏览 81
已采纳

问题:Ubuntu 20.04 使用 netplan apply 报错常见原因及解决方法

在Ubuntu 20.04中,使用`netplan apply`命令时出现报错是常见的网络配置问题。常见原因包括:1)YAML格式错误,如缩进不正确或使用了Tab键;2)网络设备名称与系统实际网卡名称不符;3)IP地址、网关或DNS配置不合法;4)未正确关闭NetworkManager或其他网络服务冲突。解决方法包括:使用`netplan try`命令测试配置;检查`/etc/netplan/`目录下的配置文件语法;使用`ip a`确认网卡名称;确保配置文件中`renderer`字段正确设置为`networkd`或`NetworkManager`。通过逐步排查这些常见问题,可以有效修复`netplan apply`报错。
  • 写回答

1条回答 默认 最新

  • 关注

    Ubuntu 20.04 中使用 netplan apply 报错的常见原因与排查方法

    1. YAML 格式错误

    YAML 是一种对缩进非常敏感的配置格式。常见的错误包括:

    • 使用 Tab 键代替空格
    • 缩进层级不一致
    • 冒号后未添加空格

    示例错误配置:

    network:
      version: 2
      ethernets:
       enp0s3:
         addresses:
           -192.168.1.10/24  # 错误:'-'后应有空格

    推荐使用 netplan try 命令进行测试,避免配置错误导致断网:

    sudo netplan try

    2. 网络设备名称不匹配

    Ubuntu 20.04 中的网卡名称可能为 enp0s3ens33eth0 等,具体取决于系统。

    使用以下命令查看当前网卡名称:

    ip a

    若配置文件中设备名称与实际不符,会导致 netplan apply 失败。

    3. IP、网关或 DNS 配置非法

    常见错误包括:

    • IP 地址格式错误(如缺少子网掩码)
    • 网关地址不在同一子网中
    • DNS 服务器地址无效

    正确配置示例:

    network:
      version: 2
      ethernets:
        enp0s3:
          addresses:
            - 192.168.1.10/24
          gateway4: 192.168.1.1
          nameservers:
            addresses:
              - 8.8.8.8
              - 8.8.4.4

    4. 网络服务冲突(如 NetworkManager)

    Ubuntu 20.04 支持使用 networkdNetworkManager 作为网络渲染器。

    若配置文件中设置了错误的 renderer 字段,可能导致冲突:

    network:
      version: 2
      renderer: networkd  # 或 NetworkManager

    使用以下命令查看当前运行的网络服务:

    systemctl list-units | grep network

    若存在多个网络管理服务,建议禁用其中一个:

    sudo systemctl stop NetworkManager
    sudo systemctl disable NetworkManager

    5. 检查 Netplan 配置文件语法

    Netplan 提供了内置的语法检查命令:

    sudo netplan apply --debug

    该命令会输出详细的调试信息,帮助定位错误。

    也可以使用 netplan try 来测试新配置,系统会在10秒内回滚到旧配置,防止断网。

    6. 排查流程图

          graph TD
            A[开始] --> B[检查配置文件格式]
            B --> C{YAML语法是否正确?}
            C -->|是| D[检查网卡名称]
            C -->|否| E[修正缩进和格式]
            D --> F{网卡名称是否匹配?}
            F -->|是| G[检查IP/网关/DNS]
            F -->|否| H[修改网卡名称]
            G --> I{配置是否合法?}
            I -->|是| J[检查NetworkManager冲突]
            I -->|否| K[修正配置]
            J --> L{是否存在冲突服务?}
            L -->|是| M[禁用冲突服务]
            L -->|否| N[应用配置]
        

    7. 小结与建议

    在处理 netplan apply 报错时,应按照以下顺序进行排查:

    1. 检查 YAML 格式是否正确
    2. 确认网卡名称是否匹配
    3. 验证 IP、网关、DNS 配置是否合法
    4. 排除 NetworkManager 或其他服务冲突
    5. 使用 netplan try--debug 模式辅助调试
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 8月13日