Выпуск сістэмнага мэнэджэра systemd 243

Пасля пяці месяцаў распрацоўкі прадстаўлены рэліз сістэмнага мэнэджэра Systemd 243. З навін можна адзначыць інтэграцыю ў PID 1 апрацоўшчыка недахопу памяці ў сістэме, падтрымку прымацавання ўласных BPF-праграм для фільтрацыі трафіку unit-ов, шматлікія новыя опцыі для systemd-networkd, рэжым маніторынгу прапускной здольнасці сеткавых інтэрфейсаў, задзейнічанне па змаўчанні на 64-разрадных. 22-бітных нумароў PID замест 16-бітных, пераход на ўніфікаваную іерархію cgroups, уключэнне ў склад systemd-network-generator.

Асноўныя змены:

  • У апрацоўшчык PID 1 дададзена распазнанне генераваных ядром сігналаў аб недахопе памяці (Out-Of-Memory, OOM) для перакладу юнітаў, якія дасягнулі ліміту ў спажыванні памяці, у адмысловы стан з апцыянальнай магчымасцю іх прымусовага завяршэння ці прыпынкі;
  • Для unit-файлаў рэалізаваны новыя параметры IPIngressFilterPath і
    IPEgressFilterPath, якія дазваляюць падлучыць BPF-праграмы з адвольнымі апрацоўшчыкамі для фільтрацыі ўваходных і выходных IP-пакетаў, генераваных працэсамі, злучанымі з дадзеным unit-ым. Прапанаваныя магчымасці дазваляюць ствараць свайго роду міжсеткавыя экраны для сэрвісаў systemd. Прыклад напісання простага сеткавага фільтра на базе BPF;

  • Ва ўтыліту systemctl дададзена каманда «clean» для выдалення кэша, runtime-файлаў, інфармацыі аб стане і каталогаў з логамі;
  • У systemd-networkd дададзена падтрымка сеткавых інтэрфейсаў MACsec, nlmon, IPVTAP і Xfrm;
  • У systemd-networkd рэалізавана паасобная налада стэкаў DHCPv4 і DHCPv6 праз секцыі "[DHCPv4]" і "[DHCPv6]" у файле канфігурацыі. Дададзена опцыя RoutesToDNS для дадання асобнага маршруту да DNS-серверу, паказанаму ў параметрах, атрыманых ад DHCP-сервера (каб трафік да DNS адпраўляўся праз той жа лінк, што і асноўны маршрут, атрыманы ад DHCP). Для 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 на аснове налад IP, перададзеных пры запуску праз камандны радок ядра Linux у фармаце налад Dracut;

  • Значэнне sysctl "kernel.pid_max" на 64-разрадных сістэмах зараз выстаўляецца па маўчанні ў 4194304 (22-бітныя PID замест 16-бітных), што памяншае верагоднасць калізій пры прызначэнні PID, падвышае ліміт на лік адначасова запушчаных працэсаў і дадатна адлюстроўваецца на. Патэнцыйна змена можа прывесці да праблем з сумяшчальнасцю, але на практыцы аб падобных праблемах пакуль не паведамлялася;
  • Па змаўчанні на этапе зборкі ажыццёўлены пераход на ўніфікаваную іерархію cgroups-v2 ("-Ddefault-hierarchy=unified"). Раней па змаўчанні выстаўляўся гібрыдны рэжым (-Ddefault-hierarchy=hybrid);
  • Змененыя паводзіны фільтра сістэмных выклікаў (SystemCallFilter), які ў выпадку звароту да забароненага сістэмнага выкліку зараз завяршае ўвесь працэс, а не асобныя струмені (thread), бо завяршэнне асобных струменяў магло прыводзіць да непрадказальных праблем. Змен дзейнічае толькі пры наяўнасці ядра Linux 4.14+ і libseccomp 2.4.0+;
  • Непрывілеяваным праграмам прадстаўлена магчымасць адпраўкі пакетаў ICMP Echo (ping) дзякуючы ўсталёўцы sysctl "net.ipv4.ping_group_range" для ўсяго дыяпазону груп (для ўсіх працэсаў);
  • Для паскарэння працэсу зборкі па змаўчанні спынена генерацыі man-кіраўніц (для зборкі поўнай дакументацыі трэба выкарыстоўваць опцыю "-Dman=true" ці "-Dhtml=true" для кіраўніцтваў у фармаце html). Для спрашчэння прагляду дакументацыі ў склад уключаны два скрыпты build/man/man і build/man/html для генерацыі і прадпрагляду якія цікавяць кіраўніцтваў;
  • Для апрацоўкі даменных імёнаў з сімваламі нацыянальных алфавітаў па змаўчанні задзейнічана бібліятэка libidn2 (для вяртання libidn трэба выкарыстоўваць опцыю "-Dlibidn=true");
  • Спыненая падтрымка выкананага файла /usr/sbin/halt.local, які падаваў функцыянальнасць, не атрымалай належнага распаўсюджвання ў дыстрыбутывах. Для арганізацыі запуску каманд пры завяршэнні працы рэкамендавана выкарыстоўваць скрыпты ў /usr/lib/systemd/system-shutdown/ ці вызначыць новы unit, залежны ад final.target;
  • На апошняй стадыі завяршэння працы systemd зараз аўтаматычна павялічвае ўзровень логаў у sysctl "kernel.printk", што вырашае праблему з адлюстраваннем у логу падзей, якія наступілі на позніх стадыях завяршэння працы, калі штатныя дэманы вядзення логаў ужо завершаны;
  • У journalctl і іншых адлюстроўваюць логі утылітах забяспечана падсвятленне папярэджанняў жоўтым колерам, а запісаў аўдыту сінім для іх візуальнага вылучэння з агульнай масы;
  • У зменнай асяроддзі $PATH шлях да bin/ зараз варта раней шляхі да sbin/, г.зн. пры наяўнасці аднолькавых імёнаў выкананых файлаў у абодвух каталогах, будзе выкананы файл з bin/;
  • У systemd-logind забяспечаны выклік SetBrightness() для бяспечнай змены яркасці экрана для кожнага сеансу;
  • У каманду "udevadm info" дададзены сцяг "—wait-for-initialization" для чакання завяршэння ініцыялізацыі прылады;
  • У працэсе загрузкі сістэмы апрацоўшчык PID 1 зараз выводзіць на экран назвы юнітаў, замест радка з іх апісаннем. Для вяртання мінуўшчыны паводзін можна выкарыстаць опцыю StatusUnitFormat у /etc/systemd/system.conf або параметр ядра systemd.status_unit_format;
  • У /etc/systemd/system.conf для watchdog у PID 1 дададзена опцыя KExecWatchdogSec, вызначальная таймаўт для перазапуску з выкарыстаннем kexec. Старая настройка
    ShutdownWatchdogSec перайменавана ў RebootWatchdogSec і вызначае таймаўт для работ у працэсе завяршэння працы або звычайнага перазапуску;

  • Для сэрвісаў дададзена новая опцыя ExecCondition, якая дазваляе задаць каманды, якія будуць выкананы да ExecStartPre. На аснове вернутага камандай кода памылкі прымаецца рашэнне аб далейшым выкананні юніта - калі вернуты код 0 запуск юніта працягваецца, калі з 1 да 254 моўчкі завяршаецца без пазнакі ўзнікнення збою, калі 255 - завяршаецца з пазнакай ўзнікнення збою;
  • Дададзены новы сэрвіс systemd-pstore.service для вымання дадзеных з sys/fs/pstore/ і з захавання ў /var/lib/pstore для наступнага аналізу;
  • Ва ўтыліту timedatectl дададзены новыя каманды для настойкі параметраў NTP для systemd-timesyncd у прывязцы да сеткавых інтэрфейсаў;
  • У камандзе "localectl list-locales" спынены паказ лакаляў, адрозных ад UTF-8;
  • Забяспечана ігнараванне памылак прысваення зменных у файлах sysctl.d/, калі імя зменнай пачынаецца з знака "-";
  • Сэрвіс systemd-random-seed.service зараз цалкам адказвае за ініцыялізацыю пула энтрапіі генератара псеўдавыпадковых лікаў ядра Linux. Сэрвісы якім патрабуецца карэктна ініцыялізаваны /dev/urandom павінны запускацца пасля systemd-random-seed.service;
  • У загрузніку systemd-boot забяспечана апцыянальная магчымасць падтрымання seed-файла са выпадковай паслядоўнасцю ў раздзеле EFI System Partition (ESP);
  • Ва ўтыліту bootctl дададзены новыя каманды "bootctl random-seed" для генерацыі seed-файла ў ESP і "bootctl is-installed" для праверкі ўсталёўкі загрузніка systemd-boot. У bootctl таксама наладжана выснова папярэджанняў аб некарэктнай наладзе загрузных запісаў (напрыклад, калі выява ядра выдалены, а запіс для яго загрузкі пакінута);
  • Забяспечаны аўтаматычны выбар часткі падпампоўкі пры пераходзе сістэмы ў спячы рэжым. Раздзел выбіраецца ў залежнасці ад настроенага для яго прыярытэту, а ў выпадку аднолькавых прыярытэтаў - памеру свабоднай прасторы;
  • У /etc/crypttab дададзена опцыя keyfile-timeout для задання часу чакання прылады з ключом шыфравання перад высновай запыту пароля для доступу да шыфраванай часткі;
  • Дададзена опцыя IOWeight для ўсталёўкі вагі ўводу/высновы для планавальніка BFQ;
  • У systemd-resolved дададзены строгі ('strict') рэжым працы для DNS-over-TLS і рэалізавана магчымасць кэшавання толькі пазітыўных DNS-адказаў ("Cache no-negative" у resolved.conf);
  • Для VXLAN у systemd-networkd дададзена опцыя GenericProtocolExtension для ўключэння пашырэнняў пратаколу VXLAN. Для VXLAN і GENEVE дададзена опцыя IPDoNotFragment для ўсталёўкі сцяга забароны фрагментацыі для выходных пакетаў;
  • У systemd-networkd у секцыі "[Route]" з'явілася опцыя FastOpenNoCookie для ўключэння механізму хуткага адкрыцця TCP-злучэнняў (TFO - TCP Fast Open, RFC 7413) у прывязцы да асобных маршрутаў, а таксама опцыя TTLPropagate для налады TTL LSP (Label Switched Path ). У опцыі "Type" забяспечана падтрымка рэжымаў маршрутызацыі local, broadcast, anycast, multicast, any і xresolve;
  • У systemd-networkd у секцыі "[Network]" прапанавана опцыя DefaultRouteOnDevice для аўтаматычнай налады маршруту па змаўчанні для зададзенай сеткавай прылады;
  • У systemd-networkd для сеткавых мастоў дададзены опцыі ProxyARP і
    ProxyARPWifi для наладкі паводзінаў proxy ARP, MulticastRouter для задання параметраў маршрутызацыі ў рэжыме multicast, MulticastIGMPVersion для змены версіі IGMP (Internet Group Management Protocol) для multicast;

  • У systemd-networkd для тунэляў FooOverUDP дададзены опцыі Local, Peer і PeerPort для налады IP-адрасоў лакальнай і выдаленай бакоў, а таксама нумары сеткавага порта. Для тунэляў TUN дададзена опцыя VnetHeader для налады падтрымкі GSO (Generic Segment Offload);
  • У systemd-networkd у файлах .network і .link у секцыі [Match] з'явілася опцыя Property, якая дазваляе вызначыць прылады па спецыфічным для іх уласцівасцям у udev;
  • У systemd-networkd для тунэляў дададзена опцыя AssignToLoopback, якая кіруе прывязкай канца тунэля да loopback прылады «lo»;
  • У systemd-networkd аўтаматызаваная актывацыя IPv6-стэка ў выпадку яго блакавання праз sysctl disable_ipv6 - IPv6 актывуецца, калі для сеткавага інтэрфейсу вызначаны настойкі IPv6 (статычныя або DHCPv6), у адваротным выпадку ўжо выстаўленае значэнне sysctl не мяняецца;
  • У файлах. запуску;
  • Ухіленая ўразлівасць CVE-2019-15718, выкліканая адсутнасцю кантролю доступу да D-Bus інтэрфейсу systemd-resolved. Праблема дазваляе непрывілеяванаму карыстачу выканаць аперацыі, даступныя толькі адміністратарам, напрыклад, можна змяніць налады DNS і накіраваць DNS-запыты на падстаўны сервер;
  • Ухіленая ўразлівасць CVE-2019-9619, звязаная з неўключэннем pam_systemd для неінтэрактыўных сеансаў, якая дазваляе арганізаваць спуфінг актыўнага сеансу.

Крыніца: opennet.ru

Дадаць каментар