RHEL 9 新特性及技术演示

image-20240325023617906

预览

  • RHEL 9 新特性与演示:

  • OpenSSH:新增禁止 root 的密码登录

  • Cockpit:RHEL 的 Web 控制台

  • DNF-3:软件安装方法

  • NetworkManager:网络管理的主要组件

  • Nftables:默认的用户空间防火墙

  • WireGuard:快速、安全的 VPN 隧道(技术预览

  • Podman & Skopeo:新一代容器运行时与镜像搬运工具

  • LVM-VDO:以逻辑卷形式使用 VDO

RHEL 9 新特性与演示 – OpenSSH

  • RHEL 9.0 中的 OpenSSH 套件版本:

    • openssh-8.7p1-8.el9.x86_64

    • openssh-clients-8.7p1-8.el9.x86_64

    • openssh-server-8.7p1-8.el9.x86_64

  • OpenSSH server:

    • 默认禁止 root 的密码登录

    • PermitRootLogin prohibit-password

image-20240325023639104

RHEL 9 新特性与演示 – Cockpit

  • Cockpit:RHEL 的 Web 控制台

  • Cockpit 自 RHEL 8 开始加入系统中作为 Web 图形化控制台,可帮助系统管理员快速查看系统状态,并对系统实施简易的运维工作。

  • RHEL 9 中的 Cockpit 增强:

    • 单个 Web 控制台中添加多个主机
    • KVM 虚拟机的管理:cockpit-machines 插件
    • 原生容器镜像与容器的管理:cockpit-podman 插件
    • PCP (Performance Co-Pilot) 的支持:cockpit-pcp 插件
  • 启动 cockpit 服务并设置开机自启动

image-20240325023721085

image-20240325023847847

$ sudo systemctl enable --now serial-getty@ttyS0.service:

虚拟机中启用串口控制台连接服务

RHEL 9 新特性与演示 – DNF-3

  • 自 RHEL 8 开始使用 dnf-3 用于安装 RPM 软件包。

  • RHEL 8 与 RHEL 9 中原有的 yum 安装工具依然可继续使用,yum 为 dnf-3 的软链接。

RHEL 9 的软件源管理:

  • 采用 BaseOS 与 AppStream 软件仓库分开管理

  • 支持模块流(module stream)可同时安装相同软件的不同版本

image-20240325024004211

RHEL 9 新特性与演示- NetworkManager

  • RHEL 7 中可使用 network.service 与 NetworkManager.service 两个服务用于网络管理。

  • RHEL 8 中默认使用 NetworkManager.service,而不再默认安装 network.service (network-scripts 软件包提供),但是可手动安装该组件。

  • 可通过 nmcli 命令行或 /etc/sysconfig/network-scripts/ifcfg-* 配置文件进行配置。

image-20240325024049070

  • RHEL 9 中不再提供 network-scripts 软件包,只能使用 NetworkManager.service。

  • RHEL 9 网络配置工具:

    • 命令行:nmcli

    • 图形化:nm-connection-editor、nmtui、nmtui-connect、nmtui-edit

  • RHEL 8 中兼容的 ifdown 与 ifup 命令在 RHEL 9 中已弃用。

  • RHEL 9 网口配置文件路径:

    • /etc/NetworkManager/system-connections/*.nmconnection

    • /etc/sysconfig/network-scripts/ifcfg-* 配置文件依然可用,但是建议使用上述配置文件!

image-20240325024122613

RHEL 9 新特性与演示 – NetworkManager

  • RHEL 8 与 RHEL 9 网口配置对比:

image-20240325024150855

image-20240325024349025

image-20240325024424400

RHEL 9 新特性与演示 – Nftables

  • RHEL 7 中使用 firewalld 服务作为用户配置防火墙规则的工具,iptables 作为实现防火墙规则的用户空间实现,因此通过 firewall-cmd 与 iptables 命令行均可实现防火墙的配置。

  • RHEL 8 中也使用 firewalld 服务,但其后端默认通过 nftables 实现防火墙规则,iptables 也可作为其后端,但为非默认配置可通过手动生效。

image-20240325024516788

  • firewalld、iptables 与 nftables 之间的联系与区别:

image-20240325024545693

image-20240325024605921

  • nftables 和 iptables 一样,由表(table)、链(chain)和规则(rule)组成,其中表包含链,链包含规则,规则是真正的 action。

  • 与 iptables 相比,nftables 主要有以下几个变化:

    • iptables 规则的布局是基于连续的大块内存的,即数组式布局;而 nftables 的规则采用链式布局(数组和链表的区别)。

    • iptables 大部分工作在内核态完成,如果要添加新功能,只能重新编译内核;而 nftables 的大部分工作是在用户态完成,添加新功能不需要改内核。

  • iptables 有内置的链,即使只需要一条链,其他的链也会跟着注册;而 nftables 不存在内置的链,可以按需注册。

  • 由于 iptables 内置了一个数据包计数器,所以即使这些内置的链是空的,也会带来性能损耗。

  • 简化了 IPv4/IPv6 双栈管理

  • 原生支持集合(IPset)、字典和映射

  • 示例:nftables 添加 SNAT 规则使 KVM 虚拟机访问外网

  • KVM 虚拟机与宿主机的网络状态:

image-20240325024702459

  • KVM 宿主机的 nft 命令示意:

  • nftables 不存在内置链,关闭 firewalld 服务后,原先由 firewalld 创建的规则也将置空。

  • 添加 nftables 的 SNAT 规则

$ sudo nft list table ip nat

  • 查看 nftables 的 NAT 表规则

image-20240325024741173

  • 若发现在 nftables 中无任何表,需从头创建 nat 表、POSTROUTING 基本链与 SNAT 规则,如下所示:

image-20240325024813953

RHEL 9 新特性与演示 – WireGuard

image-20240325024849706

RHEL 9 中 Linux kernel 为 5.14.0,kernel 已支持 WireGuard 功能,但还处于技术预览阶段,不推荐在生产环境中使用。

WireGuard 是由 Jason Donenfeld 等人用 C 语言编写的一个开源 VPN 协议,被视为下一代 VPN 协议,旨在解决许多困扰 IPSec/IKEv2、OpenVPN 或 L2TP 等其他 VPN 协议的问题。它与 Tinc 和 MeshBird 等现代 VPN 产品有一些相似之处,即加密技术先进、配置简单。从 2020 年 1 月开始,它已经并入了 Linux 内核的 5.6 版本,这意味着大多数 Linux 发行版的用户将拥有一个开箱即用的 WireGuard。

  • WireGuard 与其他 VPN 协议的性能测试对比:

image-20240325024906182

  • WireGuard 优点:

    • 配置精简,可直接使用默认值。

    • 只需最少的密钥管理工作,每个主机只需要 1 个公钥和 1 个私钥。

    • 就像普通的以太网接口一样,以 Linux 内核模块的形式运行,资源占用小。

    • 能够将部分流量或所有流量通过 VPN 传送到局域网内的任意主机。

    • 能够在网络故障恢复之后自动重连,戳到了其他 VPN 的痛处。

    • 比目前主流的 VPN 协议,连接速度要更快,延迟更低(见上图)。

    • 使用了更先进的加密技术,具有前向加密和抗降级攻击的能力。

    • 支持任何类型的二层网络通信,例如 ARP、DHCP 和 ICMP,而不仅仅是 TCP/HTTP。

    • 可以运行在主机中为容器之间提供通信,也可以运行在容器中为主机之间提供通信。

  • WireGuard 功能示例:

    • 由于 RHEL 9 中 kernel 已支持 WireGuard,因此只需安装 wireguard-tools 软件包即可。

    • 创建 client 端与 server 端的 vpn 通信。

Ubuntu 20.04.3 LTS:

WireGuard Server(Peer) 192.0.2.1/24, 192.168.110.208/24

image-20240325024941693

  • RHEL 9.0 Beta:

    • WireGuard Client(Peer) 192.0.2.2/24, 172.25.10.11/24, gateway: 192.168.110.1

image-20240325025014423

image-20240325025035557

RHEL 9 新特性与演示 – Podman & Skopeo

  • Podman 作为下一代容器运行时自 RHEL 8 开始正式在 RHEL 中替代 Docker,红帽官方不再使用 Docker,并且还提供两个强大的容器镜像操作工具 Skopeo 与 Buildah。

  • Podman 在 RHEL 9 中版本为 4.0.x,其功能得到增强且更加稳定。

  • Podman 4.0.x 在兼容 CNI 的基础上又新增原生的网络模式 Netavark 与 Aardvark-DNS 以更好的支持 IPv6、单容器接入多个容器网络与提供更好的性能。

  • Podman 的以下特性:

    • CLI 与 Docker 命令行相互兼容,可平滑过度。

    • 同样支持 Dockerfile 构建容器镜像,并且兼容 Containerfile。

    • 无守护进程运行,采用 fork/exec 模型运行容器。

    • 可运行 rootfull 与 rootless 容器

    • 可以实现容器随操作系统启动而启动

  • 虽然 Podman 可执行部分容器镜像相关操作,但在执行效率上与 Skopeo 相比相差甚远,因此,若对容器镜像执行操作可使用 Skopeo 与 Buildah 替换。

  • 有关 Podman 与 Skopeo 的详细内容可参阅最后的 Alberthua Blog 参考链接。

  • Podman & Skopeo 命令示例:

image-20240325025154265

image-20240325025220569

image-20240325025239938

  • Podman 各特征比较:

image-20240325025254980

RHEL 9 新特性与演示 – LVM-VDO

  • RHEL 9 在存储方面增加了较多特性,如已支持 exfat 文件系统、LVM-VDO 卷存储等。

  • 单纯使用 VDO 卷功能已从 RHEL 9 中移除。

  • 注:RHEL 9.0 Beta 中 kmod-kvdo 内核模块当前仍存在 bug,该模块所需的内核版本与系统当前版本无法匹配。

image-20240325025315776

参考链接

Views: 17