使用NetworkManager替换当前网络管理器

在Linux中,网络配置通常是由网络管理器来进行,我们可以通过网络管理器配置网络连接,例如有线网络连接乃至IPv4地址等配置。而NetworkManager作为更加直观的网络管理器,已被绝大多数桌面发行版采用。今天就分情况讲解一下如何使用NetworkManager替换已有的网络管理器。

需要注意的是:NetworkManager虽然好用,但并非适合我们去无脑替换,仅有你需要替换网络管理器的时候,才建议根据本文进行操作。如果你使用的是云服务器或网络不怎么需要经常配置的服务器,就保持其默认的网络管理器即可,无需进行替换;而如果你是在个人电脑或服务器使用Linux,需要频繁配置网络或需要无线网卡支持,想要更高效配置、切换网络,或者是从无图形界面环境下安装桌面环境后需要手动配置,则可以考虑替换网络管理器为NetworkManager

1,认识常见网络管理器

常见的网络管理器有下列几款:

  • ifupdown 以静态配置为主的基础网络管理器,一般Debian的无图形化界面安装或老版本Ubuntu Server等通常使用该网络管理器,其配置文件通常在/etc/network/目录下
  • systemd-networkdsystemd的一部分,支持更高级的网络配置管理,同时支持桥接和虚拟化场景,其配置文件通常在/etc/systemd/networkd.conf.d/目录下
  • NetworkManager 更加现代化的网络管理器,支持使用nmclinmtui命令直观地管理网络配置,且对无线网卡、虚拟化、桥接等场景都支持非常地好

此外,还有netplan工具很容易被误认为是网络管理器,事实上该工具是一个网络配置门面,它支持用户使用统一的YAML格式配置网络,并将其转换为特定的网络管理器的配置。通过该工具,可以实现仅使用统一的YAML语法就能配置网络,而无需关心底层的网络管理器是哪个。

2,替换网络管理器

下面,将介绍不同情况下替换网络管理器为NetworkManager的方法,大家根据自己的情况选其一即可。

一般情况下,如果你是用的是有图形界面的Linux(例如选择了图形界面的Debian,Ubuntu Desktop等),则通常默认就是使用的NetworkManager无需进行替换,可通过下列命令确认:

bash 复制代码
# 查看NetworkManager服务
sudo service NetworkManager status

如果有这个服务且在运行,则说明你已经使用的是NetworkManager网络管理器了。

反之,如果你安装的是无图形界面的Linux,例如安装Debian时未选择桌面环境,或Ubuntu Server,则通常不会默认使用NetworkManager,继续往下操作即可。

替换过程中会短暂断网 ,建议不要使用SSH远程进行,而是直接在服务器/电脑上操作或使用云服务厂商提供的VNC等方式。

(1) 使用ifupdown的情况

一般来说,无图形界面的Debian系统或老版本Ubuntu等,会默认采用ifupdown作为网络管理器,可以使用下列命令确认:

bash 复制代码
# 查看是否安装了ifupdown
apt list ifupdown

# 查看是否有ifupdown的服务及其状态
sudo service networking status

如果显示已安装,且服务存在并运行,说明当前使用的是ifupdown网络管理器。

要进行替换,首先安装NetworkManager,直接使用命令安装即可:

bash 复制代码
# 安装NetworkManager (Debian/Ubuntu/Linux Mint/Pop!_OS)
sudo apt install network-manager

然后,我们需卸载ifupdown并清除其配置文件,建议清除之前备份配置:

bash 复制代码
# 卸载ifupdown
sudo apt purge ifupdown
# 清除配置,建议先备份配置文件
sudo rm /etc/network/interfaces
sudo rm -r /etc/network/interfaces.d/

此时,系统会断开网络,重启NetworkManager即可:

bash 复制代码
sudo service NetworkManager restart

到此,替换完成。

(2) 使用netplan+systemd-networkd的情况

新版本的Ubuntu Server默认采用的是netplan配置前端和systemd-networkd网络管理器进行网络管理的,可以使用下列命令验证一下:

bash 复制代码
# 查看netplan是否安装
apt list netplan.io

# 查看systemd-networkd状态
sudo service systemd-networkd status

如果显示服务正在运行,说明当前使用的是systemd-networkd网络管理器。

要进行替换,首先还是安装NetworkManager管理器:

bash 复制代码
sudo apt install network-manager

然后需要修改netplan的配置,配置其后端指向NetworkManager,其配置文件在/etc/netplan目录下,且默认情况下 只会有一个名为50-cloud-init.yaml的配置文件,编辑该文件:

bash 复制代码
sudo vim /etc/netplan/50-cloud-init.yaml

将其中内容全部删除或注释掉,并写入下列配置内容:

yaml 复制代码
network:
  version: 2
  renderer: NetworkManager

如果该目录下有别的文件 ,建议全部删除 防止干扰(可以先备份)。如果该目录下没有任何文件,则手动创建一个即可:

bash 复制代码
# 文件名可以自定义
sudo touch /etc/netplan/01-network-manager.yaml

# 配置正确权限
sudo chmod 600 /etc/netplan/01-network-manager.yaml

再编辑该文件,写入上述配置内容即可。

配置完成后,应用配置:

bash 复制代码
sudo netplan generate
sudo netplan apply

最后,我们需要启用NetworkManager,并禁用掉原有的systemd-networkd服务:

bash 复制代码
# 启用NetworkManager
sudo systemctl enable --now NetworkManager

# 禁用systemd-networkd
sudo systemctl disable --now systemd-networkd
sudo systemctl disable --now systemd-networkd-wait-online

此时网络会断开,但是服务并未完全切换过来,重启系统即可。

3,NetworkManager网络配置

一般情况下完成上述替换操作后,NetworkManager会自动检测我们的网络设备并生成默认的可用配置,可以使用下列命令分别查看网络设备网络配置列表:

bash 复制代码
# 查看网络设备列表
sudo nmcli d

# 查看网络配置列表
sudo nmcli c

正常情况下会显示设备已连接,如图:

nmcliNetworkManager的管理命令,上述也涉及到了两个关键概念:

  • 网络设备 :也就是我们的物理/虚拟网络设备,例如有线网卡、无线网卡、本地回环虚拟网卡lo等,这些都属于网络设备,使用nmcli d命令可列出网络设备
  • 网络配置 :网络配置定义了特定的网络设备如何进行联网,例如配置动态IPv4或特定的静态IPv4地址,使用什么样的DNS服务器等配置,这些就属于网络配置,网络配置需应用到特定的网络设备上,当然也可以定义多套网络配置,在需要时一个设备可灵活切换至不同配置,使用nmcli c命令可列出网络配置

如果 重启后并未自动生成网络配置 ,仍无法联网 ,则需要手动创建配置,下面给出创建网络配置命令示例,大家根据实际情况自行选择创建动态IP配置还是静态IP配置,选择其一即可:

bash 复制代码
# 物理网卡名称为enp2s0

# 添加一个DHCP连接配置,使用自定义DNS且关闭IPv6
# con-name 指定网络配置名称
# ifname 指定网络设备(网卡)名称
# 名称均可自定义
sudo nmcli c add type ethernet \
	con-name "Main" ifname enp2s0 \
	ipv4.method auto \
	ipv4.dns "114.114.114.114 114.114.115.115" \
	ipv4.ignore-auto-dns yes \
	ipv6.method disabled

# 或者,添加静态IP连接
# 假设宿主机所在局域网内IP网段为:192.168.122.xxx,实际情况请以自己的为准
# ip4 指定IP地址
# gw4 指定网关地址
# ipv4.dns 指定DNS服务器,多个使用空格隔开
sudo nmcli c add type ethernet \
	con-name "Main" ifname enp2s0 \
	ipv4.method manual \
	ip4 192.168.122.100/24 \
	gw4 192.168.122.1 \
	ipv4.dns "114.114.114.114 114.114.115.115" \
	ipv6.method disabled

到此,所有配置就完成了!

相关推荐
MinterFusion1 小时前
如何在开放麒麟(openKylin)下安装FTP服务器(v0.1.0)
运维·服务器·网络·vsftpd·开放麒麟·明德融创·openkylin
爱网安的monkey brother2 小时前
Linux自用文档
linux
xlq223222 小时前
30.进程池IPC
linux·运维·服务器
nuomigege2 小时前
beagleboneblack刷入官方IOT镜像后无法运行nodered问题的处理
linux·运维·服务器
huaxiu53 小时前
ubuntu下应用打不开
linux·运维·ubuntu
m0_683124793 小时前
Ubuntu服务设置开机自启
linux·运维·ubuntu
BestOrNothing_20153 小时前
(1)双系统中Ubuntu22.04启动盘制作与启动盘恢复全过程
linux·ubuntu·双系统·启动盘制作·启动盘恢复
AI成长日志3 小时前
【实用工具教程】Linux常用命令速查与实战场景:文件操作、进程管理与网络调试高频命令解析
linux·php
落叶花开又一年3 小时前
检验检测机构资质认定远程评审工作程序
linux·运维·服务器