「Linux」- 作为系统管理员,应该如何进行操作系统网络配置

  CREATED BY JENKINSBOT

问题描述

创建这篇笔记,是因为我们遇到一个问题,这个问题与 CentOS Stream 发行版有关。自从出现 CentOS Stream 版本之后,我们直接跳过 CentOS 8 版本,便开始选择其他 Linux 发行版。我们认为短期之内不能指望使用 Rocky Linux 来替代 CentOS 发行版。最后经过一番权衡,我们选择 Ubuntu Server TLS 系列发行版。我们安装 Ubuntu 18.04 TLS 发行版,以完成相关工作任务。然而,在配置网络时,我们便遇到问题:Ubuntu 没有使用 NetworkManager 管理网络配置?

不同于 CentOS 6.x 发行版,在 CentOS 7.x 中,开始使用 NetworkManager 进行网络管理。在 RHCE 的官方课程中,也是力推 NetworkManager 进行管理管理,取代以往修改配置文件的网络管理方式。而使用 NetworkManager 进行网络管理,需要使用 nmctl 命令来操纵 NetworkManager.service 实现网络配置。但是,在 Ubuntu 18.04 TLS 中,没有 nmctl 命令,也没有 NetworkManager.service(network-manager.service) 在运行。经过官方文档查找,我们发现在 Ubuntu 18.04 TLS 中使用 Netplan 进行网络管理,而 Netplan 是个前端程序,它会调用 NetworkManager 或者 systemd-networkd 完成网络配置。哦,原来 Ubuntu 使用其他管理工具来管理网络。

然后,我们便开始回忆其他 Linux 发行版,我们逐渐发现:现在,工具越来越多,每个发行版都有自己的管理方法,都有自己的管理工具。比如 RHEL/CentOS 开始使用 firewalld 管理防火墙,而在 Ubuntu 中,采用 ufw 管理防火墙。还有文件系统,各个发行版默认采用不同的文件系统,那么管理工具也不相同。这些便催生这篇笔记,我们需要汇总各个发行版中管理网络的工具,否则将来维护系统时将无从下手(虽然底层原理没有过多变化,但是这些五花八门的工具的用法已经足够让人焦头烂额)。

该笔记将记录:概述各种 Linux 发行版的默认配置网络的工具、相关的学习资料,以及要面对的问题。

解决方案

网络管理的方式

在 Linux 中,管理网络方式分为两种:

1)通过修改配置文件(废弃)

在以前维护 CentOS 6.x 网络配置时,主要通过修改 /etc/sysconfig/network-scripts/ 配置文件,然后 service network restart 便可完成网络配置。现在情况已经发生改变,很多 Linux 发行版开始提供网络管理工具,比如 CentOS/RHEL/Debian 的 NetworkManager、Ubuntu 的
Netplan、systemd-networkd (networkctl) 等等,这些工具屏蔽网络配置的存储方式,以后将越来越难以通过修改配置文件的方式来完成网络设置。所以,我们很早就开始使用 NetworkManager 进行网络配置,紧跟发行版的步伐,彻底放弃通过修改配置文件的方式。

题外话:在 Linux 中,很多服务的管理,多数是通过修改配置,重载配置完成的,这绝对是种快捷、高效、清晰的方法。但是,操作系统的网络配置过于复杂,而非简单的修改配置既可完成,所以才会出现这些配置及管理网络的工具。

2)通过网络管理工具

比如 NetworkManager、systemd-networkd、
Netplan 等等。这也是我们正在积极学习的工具,我们紧跟 Linux 发行版的步伐,以后将通过这些工具完成网络管理任务。但是,这也是我们积极推荐给别人的方法,毕竟在我们这个行业里,知识要及时更新 :-)

管理网络的工具

在 Linux 中,现有的常见网络管理工具:

1)NetworkManager

在 2004 时,Red Hat 启动 NetworkManager 项目,为了简化网络管理。截至目前(03/28/2021),功能丰富,能满足我们所有的网络配置需求。

2)systemd-networkd

systemd 也属于 Red Hat 公司,其中的 systemd-networkd 用于管理网络服务。systemd-networkd 首次集成到 systemd 209 中,但是功能有限,仅支持静态地址分配、基本的桥接设置。在 systemd 215 时,加入 ipv4 DHCP、VXLAN 支持。通过命令 networkctl 来操作 systemd-networkd 服务,实现网络配置。

3)Netplan

Netplan 是 Ca’non’i’cal 公司的产品,而 Ubuntu 属于 Canonical 公司,所以 Ubuntu 使用
Netplan 配置网络也不足为其。
Netplan 是个前端程序,我们编写配置网络的 YAML 文件,然后
Netplan 解析该配置,最后它将调用后端的 systemd-networkd 或者 NetworkManager 来完成网络配置。在 Ubuntu 18.04 中,
Netplan 将调用 systemd-networkd 完成网络配置。

发行版默认工具

CentOS 7.x

在 CentOS 7.x 中,使用 NetworkManager 管理网络。现在官方保证 NetworkMangaer 稳定可用,我们就紧跟步伐。将来无论 NetworkManager 是否被其他工具替代,都不太可能回到直接修改配置文件的管理方式。

Ubuntu 18.04 LTS

使用 Netplan 管理,默认后端为 systemd-networkd 服务。而配置 systemd-networkd 的 networkctl 命令版本为 systemd 237,还不支持网络配置。

配置网络的详细过程,官方手册已给出详细说明,参考 Network – Configuration | Ubuntu 文档。

Debian GNU/Linux 8.10 (jessie)

Debian 就是 Debian,一如既往,将选择权交由用户,让用户选择自己的工具:
1)我们能够通过修改配置文件的方式(/etc/network/interfaces)
2)亦能自行安装网络管理工具(比如 NetworkManager、systemd-networkd 等等)

关于 Debian 的网络配置,参考官方文档:
1)Chapter 5. Network setup
2)Network Configuration

# 03/28/2021 目前,对于 Debian 发行版,我们选择 NetworkManager 进行网络管理。但是,按照目前的态势,将来采用 systemd-networkd 的概率比较大。

参考文献

Debian/Chapter 5. Network setup
systemd-networkd – ArchWiki
NetworkManager – Wikipedia
systemd – Wikipedia
Red Hat resets CentOS Linux and users are angry | ZDNet