systemd 系统管理器版本 243

经过五个月的开发 提交 系统管理器发布 systemd 243。 在这些创新中,我们可以注意到将系统内存不足的处理程序集成到 PID 1 中,支持附加您自己的 BPF 程序来过滤单元流量,systemd-networkd 的许多新选项,一种用于监视网络带宽的模式接口,默认在 64 位系统上启用 22 位 PID 号而不是 16 位,过渡到统一的 cgroups 层次结构,包含在 systemd-network-generator 中。

主要变化:

  • PID 1 处理程序中添加了对内核生成的有关内存不足(Out-Of-Memory、OOM)信号的识别,以将已达到内存消耗限制的单元传输到特殊状态,并可选择强制其终止或停止;
  • 对于单元文件,新参数 IPIngressFilterPath 和
    IPEgressFilterPath,它允许您将 BPF 程序与任意处理程序连接,以过滤与该单元关联的进程生成的传入和传出 IP 数据包。 建议的功能允许您为 systemd 服务创建一种防火墙。 写作范例 一个基于BPF的简单网络过滤器;

  • systemctl 实用程序中添加了“clean”命令,用于删除缓存、运行时文件、状态信息和日志目录;
  • systemd-networkd 添加了对 MACsec、nlmon、IPVTAP 和 Xfrm 网络接口的支持;
  • systemd-networkd 通过配置文件中的“[DHCPv4]”和“[DHCPv6]”部分实现 DHCPv4 和 DHCPv6 堆栈的单独配置。 添加了 RoutesToDNS 选项,以将单独的路由添加到从 DHCP 服务器接收到的参数中指定的 DNS 服务器(以便通过与从 DHCP 接收到的主路由相同的链路发送到 DNS 的流量)。 为 DHCPv4 添加了新选项:MaxAttempts - 获取地址的最大请求数、BlackList - DHCP 服务器黑名单、SendRelease - 启用在会话结束时发送 DHCP RELEASE 消息;
  • 新命令已添加到 systemd-analyze 实用程序中:
    • “systemd-analyze timestamp” - 时间解析和转换;
    • “systemd-analyze timespan”——时间段的分析和转换;
    • “systemd-analyze condition” - 解析和测试 ConditionXYZ 表达式;
    • “systemd-analyze exit-status” - 解析退出代码并将其从数字转换为名称,反之亦然;
    • “systemd-analyze unit-files” - 列出单元和单元别名的所有文件路径。
  • 选项 SuccessExitStatus、RestartPreventExitStatus 和
    RestartForceExitStatus 现在不仅支持数字返回代码,还支持其文本标识符(例如“DATAERR”)。 您可以使用“sytemd-analyze exit-status”命令查看分配给标识符的代码列表;

  • Networkctl 实用程序中添加了“delete”命令来删除虚拟网络设备,以及“—stats”选项来显示设备统计信息;
  • Networkd.conf 中添加了 SpeedMeter 和 SpeedMeterIntervalSec 设置,用于定期测量网络接口的吞吐量。 测量结果获得的统计数据可以在‘networkctl status’命令的输出中查看;
  • 添加了新的实用程序 systemd-network-generator 用于生成文件
    .network、.netdev 和 .link 基于通过 Linux 内核命令行以 Dracut 设置格式启动时传递的 IP 设置;

  • 64位系统上的sysctl“kernel.pid_max”值现在默认设置为4194304(22位PID而不是16位),这减少了分配PID时发生冲突的可能性,增加了同时进行的数量限制运行进程,并对安全性产生积极影响。 该更改可能会导致兼容性问题,但实践中尚未报告此类问题;
  • 默认情况下,构建阶段切换到统一层次结构 cgroups-v2(“-Ddefault-hierarchy=unified”)。 以前,默认为混合模式(“-Ddefault-hierarchy=hybrid”);
  • 系统调用过滤器 (SystemCallFilter) 的行为已更改,在禁止的系统调用的情况下,现在会终止整个进程,而不是单个线程,因为终止单个线程可能会导致不可预测的问题。 仅当您拥有 Linux 内核 4.14+ 和 libseccomp 2.4.0+ 时,这些更改才适用;
  • 通过为整个组范围(对于所有进程)设置 sysctl“net.ipv4.ping_group_range”,非特权程序能够发送 ICMP Echo (ping) 数据包;
  • 为了加快构建过程,默认情况下已停止生成 man 手册(要构建完整的文档,对于 html 格式的手册,需要使用选项“-Dman=true”或“-Dhtml=true”)。 为了更方便地查看文档,包含了两个脚本:build/man/man 和 build/man/html,用于生成和预览感兴趣的手册;
  • 要处理包含国家字母表字符的域名,默认使用 libidn2 库(要返回 libidn,请使用“-Dlibidn=true”选项);
  • 对 /usr/sbin/halt.local 可执行文件的支持已停止,该文件提供的功能在发行版中并未广泛分布。 为了组织关闭时命令的启动,建议使用 /usr/lib/systemd/system-shutdown/ 中的脚本或定义一个依赖于 Final.target 的新单元;
  • 在关闭的最后阶段,systemd 现在会自动增加 sysctl“kernel.printk”中的日志级别,这解决了当常规日志守护进程已经完成时在关闭的后期阶段发生的日志事件中显示的问题;
  • 在journalctl和其他显示日志的实用程序中,警告以黄色突出显示,审计记录以蓝色突出显示,以在视觉上突出显示它们;
  • 在 $PATH 环境变量中,bin/ 的路径现在位于 sbin/ 的路径之前,即如果两个目录中的可执行文件名称相同,则执行 bin/ 中的文件;
  • systemd-logind 提供 SetBrightness() 调用,以在每个会话的基础上安全地更改屏幕亮度;
  • “udevadm info”命令中添加了“--wait-for-initialization”标志,用于等待设备初始化;
  • 在系统启动期间,PID 1 处理程序现在显示单元名称,而不是一行及其描述。 要恢复到过去的行为,您可以使用 /etc/systemd/system.conf 中的 StatusUnitFormat 选项或 systemd.status_unit_format 内核选项;
  • 在 /etc/systemd/system.conf 中为看门狗 PID 1 添加了 KExecWatchdogSec 选项,该选项指定使用 kexec 重新启动的超时时间。 旧设置
    ShutdownWatchdogSec 已重命名为 RebootWatchdogSec,并定义关闭或正常重启期间作业的超时;

  • 为服务添加了一个新选项 执行条件,它允许您指定将在 ExecStartPre 之前执行的命令。 根据命令返回的错误代码,决定进一步执行该单元 - 如果返回代码 0,则单元启动继续,如果从 1 到 254,它会静默结束而没有失败标志,如果返回代码 255,则以 XNUMX 结束失败标志;
  • 添加了新服务systemd-pstore.service,用于从sys/fs/pstore/中提取数据并保存到/var/lib/pstore以供进一步分析;
  • timedatectl 实用程序中添加了新命令,用于为 systemd-timesyncd 配置与网络接口相关的 NTP 参数;
  • “localectl list-locales”命令不再显示 UTF-8 以外的语言环境;
  • 如果变量名以字符“-”开头,确保忽略 sysctl.d/ 文件中的变量赋值错误;
  • 服务 systemd-随机种子.service 现在完全负责初始化Linux内核伪随机数生成器的熵池。 需要正确初始化 /dev/urandom 的服务应在 systemd-random-seed.service 之后启动;
  • systemd-boot 引导加载程序提供了支持的可选功能 种子文件 EFI 系统分区 (ESP) 中具有随机序列;
  • bootctl 实用程序中添加了新命令:“bootctl random-seed”用于在 ESP 中生成种子文件,“bootctl is-installed”用于检查 systemd-boot 引导加载程序的安装。 bootctl 还进行了调整,以显示有关启动项配置不正确的警告(例如,当删除内核映像,但留下加载它的条目时);
  • 当系统进入睡眠模式时提供交换分区的自动选择。 根据为其配置的优先级来选择分区,如果优先级相同,则根据可用空间量来选择;
  • 在 /etc/crypttab 中添加了 keyfile-timeout 选项,用于设置具有加密密钥的设备在提示输入密码以访问加密分区之前等待的时间;
  • 添加了 IOWeight 选项来设置 BFQ 调度程序的 I/O 权重;
  • systemd-resolved 为 DNS-over-TLS 添加了“严格”​​模式,并实现了仅缓存正向 DNS 响应的功能(resolved.conf 中的“缓存非负向”);
  • 对于 VXLAN,systemd-networkd 添加了 GenericProtocolExtension 选项来启用 VXLAN 协议扩展。 对于VXLAN和GENEVE,增加了IPDoNotFragment选项,用于设置传出数据包的分片禁止标志;
  • 在 systemd-networkd 的“[Route]”部分中,FastOpenNoCookie 选项似乎启用了与各个路由相关的快速打开 TCP 连接的机制(TFO - TCP Fast Open,RFC 7413)以及 TTLPropagate 选项配置TTL LSP(标签交换路径)。 “Type”选项提供对本地、广播、任播、组播、任意和xresolve路由模式的支持;
  • Systemd-networkd 在“[Network]”部分提供了 DefaultRouteOnDevice 选项,可以自动为给定的网络设备配置默认路由;
  • Systemd-networkd 添加了 ProxyARP 和
    ProxyARPWifi 用于设置代理 ARP 行为,MulticastRouter 用于在组播模式下设置路由参数,MulticastIGMPVersion 用于更改组播的 IGMP(互联网组管理协议)版本;

  • Systemd-networkd 为 FooOverUDP 隧道添加了 Local、Peer 和 PeerPort 选项,用于配置本地和远程 IP 地址以及网络端口号。 对于TUN隧道,添加了VnetHeader选项来配置GSO(通用分段卸载)支持;
  • 在systemd-networkd中,在[Match]部分的.network和.link文件中,出现了一个Property选项,它允许您通过udev中的特定属性来识别设备;
  • 在systemd-networkd中,为隧道添加了AssignToLoopback选项,该选项控制隧道的末端是否分配给环回设备“lo”;
  • 如果通过 sysctl disable_ipv6 阻止,systemd-networkd 会自动激活 IPv6 堆栈 - 如果为网络接口定义了 IPv6 设置(静态或 DHCPv6),则激活 IPv6,否则已设置的 sysctl 值不会更改;
  • 在 .network 文件中,CriticalConnection 设置已被 KeepConfiguration 选项取代,该选项提供了更多方法来定义 systemd-networkd 应该使用的情况(“yes”、“static”、“dhcp-on-stop”、“dhcp”)启动时不触及现有连接;
  • 漏洞修复 CVE-2019-15718,由于缺乏对 D-Bus 接口 systemd-resolved 的访问控制而导致。 该问题允许非特权用户执行只有管理员才能执行的操作,例如更改 DNS 设置和将 DNS 查询定向到恶意服务器;
  • 漏洞修复 CVE-2019-9619与不为非交互式会话启用 pam_systemd 相关,这允许欺骗活动会话。

来源: opennet.ru

添加评论