要确认系统当前使用的是 networkd(systemd-networkd)还是 NetworkManager 作为网络渲染器(renderer),可以通过以下方法检查:


方法 1:查看 Netplan 配置文件

Netplan 的配置文件(通常在 /etc/netplan/ 目录下)中会明确指定 renderer 字段。例如:

cat /etc/netplan/*.yaml
  • 如果显示 renderer: networkd → 使用 systemd-networkd
  • 如果显示 renderer: NetworkManager → 使用 NetworkManager
  • 如果未指定 renderer,默认根据系统类型选择:
    • Ubuntu Server:默认 networkd
    • Ubuntu Desktop:默认 NetworkManager

方法 2:检查活跃的网络管理服务

运行以下命令查看哪个服务正在管理网络:

systemctl status systemd-networkd NetworkManager --no-pager

结果解读

  1. systemd-networkd 活跃

    • 会显示 active (running),且可能标注为 enabled(开机自启)。
    • 对应的日志会显示接口管理记录。
    ● systemd-networkd.service - Network Service
         Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled; vendor preset: enabled)
         Active: active (running) since Thu 2024-02-01 12:00:00 UTC; 1h ago
    
  2. NetworkManager 活跃

    • 会显示类似 active (running) 的状态。
    • 桌面环境通常强制使用 NetworkManager。
    ● NetworkManager.service - Network Manager
         Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
         Active: active (running) since Thu 2024-02-01 12:00:00 UTC; 1h ago
    
  3. 两个服务均未运行

    • 可能是手动配置了网络(如直接编辑 /etc/network/interfaces),或系统未正确初始化。

方法 3:通过网络接口管理工具确认

如果是 networkd

  • 使用 networkctl 命令查看接口状态:
    networkctl list
    
    输出示例:
    IDX LINK    TYPE     OPERATIONAL SETUP   
    1   lo      loopback carrier     unmanaged 
    2   eth0    ether    routable    configured
    

如果是 NetworkManager

  • 使用 nmcli 命令查看连接:
    nmcli device status
    
    输出示例:
    DEVICE  TYPE      STATE      CONNECTION 
    eth0    ethernet  connected  Wired-connection-1
    lo      loopback  unmanaged  --
    

方法 4:检查日志

  • 查看 networkd 的日志:
    journalctl -u systemd-networkd -n 20
    
  • 查看 NetworkManager 的日志:
    journalctl -u NetworkManager -n 20
    
    日志中会显示哪个服务在管理接口的 IP 分配和路由。

总结判断

特征networkdNetworkManager
配置文件指定renderer: networkdrenderer: NetworkManager
活跃服务systemd-networkd 运行NetworkManager 运行
管理工具networkctlnmcli
适用场景服务器(无图形界面)桌面环境(图形界面支持)

注意事项

  1. 不要同时启用两者: 如果两个服务均被激活,可能导致网络配置冲突(如重复获取 IP)。通常由 Netplan 的 renderer 决定优先级。

  2. 强制切换渲染器: 如果需要切换,编辑 Netplan 配置文件后执行:

    sudo netplan apply
    

    然后重启相关服务:

    • 切换到 networkd
      sudo systemctl stop NetworkManager
      sudo systemctl disable NetworkManager
      sudo systemctl enable systemd-networkd
      
    • 切换到 NetworkManager
      sudo systemctl stop systemd-networkd
      sudo systemctl disable systemd-networkd
      sudo systemctl enable NetworkManager
      
  3. 桌面环境的特殊情况: 即使手动配置为 networkd,部分桌面环境(如 GNOME)可能仍会强制启动 NetworkManager。此时需卸载 NetworkManager 或修改其配置。