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

添加評論