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

我们都知道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/00-installer-config.yaml 配置文件。

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

cat /etc/netplan/00-installer-config.yaml 
# 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/NetworkManager.conf文件下的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/01-network-manager-all.yaml 
# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

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

1、修改/etc/netplan/xxx.yaml文件

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 应用修改后的配置

你可能感兴趣的:(操作系统,Netplan,NetworkManager,Ubuntu)