首页 > 技术文章 > NetworkManager 介绍

my-show-time 2020-12-31 21:53 原文

NetworkManager是2004年RedHat启动的项目,皆在能够让Linux用户更轻松的处理现代网络需求,尤其是无线网络,能够自动发现网卡并配置IP地址。

RHEL7上同时支持network.service和NetworkManager.service(简称NM)。默认情况下这2个服务都有开启,但是因为NetworkManager.service当时的兼容性不好,有时会造成ip地址无法生效或网络不通问题,大部分人都会将其关闭NM。

但是在RHEL 8/Centos 8上已废弃network.service(默认不安装),只能通过NetworkManager进行网络配置。

NetworkManager主要管理2个对象: Connection(网卡连接配置) 和 Device(网卡设备),他们之间是多对一的关系,但是同一时刻只能有一个Connection对于Device才生效。

在RHEL 8/Centos 8有三种方法配置网络:

  • 通过nmcli connection add命令配置,会自动生成ifcfg文件。
  • 手动配置ifcfg文件,通过nmcli connection reload来加载生效。
  • 手动配置ifcfg文件,通过传统network.service来加载生效。

NetworkManager 命令#

1 $ nmcli connection 网络连接管理
2 $ nmcli connection show # 查看所有网卡配置
3 $ nmcli connection reload # 重新加载网卡配置,不会立即生效
4 $ nmcli connection down ens160 && nmcli connection up ens160 # 立即生效Connection配置
5 $ nmcli connection add type ethernet con-name ens160-con ifname ens160 ipv4.addr 1.1.1.2/24 ipv4.gateway 1.1.1.1 ipv4.method manual # 为device创建connection
6 $ nmcli connection add type ethernet con-name ens160-con ifname ens160 ipv.method auto # dhcp
7 $ nmcli connection modify ens160-con ipv.addr 1.1.1.3/24 && nmcli connection up ens160-con # 修改IP地址并立即生效

交互方式修改IP

1 $ nmcli connection edit ens160-con
2 $ nmcli device 网卡设备管理
3 $ nmcli device status # 查看所有网卡设备状态
4 $ nmcli device show ens160 # 查看网卡配置
5 $ nmcli device reapply ens160 # 立即生效网卡配置

/etc/resolv.conf被重置问题#

RHEL 8/Centos 8上废弃了network,官方也建议使用NetworkManager来管理网络。在刚开始使用时难免各种各样的问题,下面是我遇到的 /etc/resolv.conf 被重置的问题。

手工设置 /etc/resolv.conf 里的DNS,重新OS发现被系统重新覆盖或者清除了。那么该如何配置DSN呢?

1、使用全新的命令行工具 nmcli 来设置[#](https://www.cnblogs.com/my-show-time/p/14218751.html# 1、使用全新的命令行工具-nmcli-来设置)

显示当前网络连接

#nmcli connection show
NAME UUID TYPE DEVICE
eno1 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 802-3-ethernet eno1

修改当前网络连接对应的DNS服务器,这里的网络连接可以用名称或者UUID来标识

#nmcli con mod eno1 ipv4.dns "223.5.5.5 8.8.8.8" 

将dns配置生效

nmcli con up eno1

2、使用传统方法,手工修改 /etc/resolv.conf#

  • 修改 /etc/NetworkManager/NetworkManager.conf 文件,在main部分添加 “dns=none” 选项:
[main]
plugins=ifcfg-rh
dns=none
  • NetworkManager重新装载上面修改的配置
# systemctl restart NetworkManager.service
  • 手工修改 /etc/resolv.conf 添加你的DNS SERVER

nameserver 223.5.5.5
nameserver 8.8.8.8

推荐阅读