记一次使用NetworkManager管理Ubuntu网络无效问题分析

时间:2025-04-22 07:46:57

我们都知道CentOS、Redhat系列网络配置比较连贯,要么在/etc/sysconfig/network-scripts/ifcfg-网络设备名,文件中编辑后,重启网络服务;要么使用nmtui或者nmcli进行配置。但是,Ubuntu变动就比较大:

早期版本的Ubuntu,配置网络在/etc/network/interfaces下,后面这个文件就被遗弃了,需要通过nmcli或者nmtui配置,配置信息保存在/etc/NetworkManager/system-connections/下;但是Ubuntu的网络设备默认不是被NetworkManager服务管理的,如果想使用NetworkManager管理网络设备还比较麻烦主要因为Netplan引入和对Ubuntu不太熟悉

Netplan Ubuntu 18.04 及以后版本的默认网络配置工具,用于配置网络接口的基本设置,如静态 IP 地址、DHCP、DNS 等。

Ubuntu22.04安装时,配置网络信息会通过Subiquity 网络配置工具,写入/etc/netplan/ 配置文件。

备注:Subiquity 专门用于服务器安装。它是 Ubuntu Server 安装过程中的一部分,用于帮助管理员配置服务器的网络连接和其他基本设置。

cat /etc/netplan/ 
# This is the network config written by 'subiquity'
network:
  ethernets:
    ens160:
      addresses:
      - 192.168.1.116/24
      gateway4: 192.168.1.1
      nameservers:
        addresses:
        - 223.5.5.5
        - 8.8.8.8
        search: []
  version: 2

如上配置后,无论如何你也无法通过NetworkManager进行设备管理,所有device都是unmanned状态,即便你修改了/etc/NetworkManager/文件下的managed=fasle为true

~# nmcli d
DEVICE   TYPE      STATE      CONNECTION 
docker0  bridge    unmanaged  --         
ens160   ethernet  unmanaged  --         
lo       loopback  unmanaged  --         
~# nmcli c show

~#     

通过sudo nmcli con add type ethernet ifname ens160 con-name ens160命令,手动添加connect对象,connect也无法绑定device(ens160)。

如果你使用nm习惯了,可以如下配置,使用NetworkManager管理网络设备:

cat /etc/netplan/ 
# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

此时,通过nmcli d查看网络上设备的状态为connected (externally),不再是unmanned,需要被nmcli或nmtui编辑一次网络配置,再次生效后(externally)就可以去掉了。

# nmcli d
DEVICE   TYPE      STATE                   CONNECTION 
ens160   ethernet  connected (externally)  ens160     
docker0  bridge    connected (externally)  docker0    

不然,使用netplan挺好的:~_~

1、修改/etc/netplan/文件

2、netplan try检查格式是否有错

~# netplan try                    
Do you want to keep these settings?


Press ENTER before the timeout to accept the new configuration


Changes will revert in 117 seconds
Configuration accepted.

3、netplan apply 应用修改后的配置