Después de cinco meses de desarrollo lanzamiento del gestor de sistemas . Entre las novedades se destaca la integración en PID 1 de un manejador para la falta de memoria en el sistema, soporte para la vinculación de programas BPF personalizados para filtrar el tráfico de las unidades, numerosas nuevas opciones para systemd-networkd, modo de monitoreo del ancho de banda de las interfaces de red, uso por defecto en sistemas de 64 bits de números PID de 22 bits en lugar de 16 bits, transición a una jerarquía unificada de cgroups, inclusión en el generador systemd-network-generator.
Principales cambios:
- En el manejador PID 1 se ha añadido el reconocimiento de señales generadas por el núcleo sobre la falta de memoria (Out-Of-Memory, OOM) para trasladar unidades que han alcanzado el límite de consumo de memoria a un estado especial con la opción de finalizarlas o detenerlas forzosamente.
- Para los archivos de unidad se han implementado nuevos parámetros IPIngressFilterPath y
IPEgressFilterPath, que permiten conectar programas BPF con manejadores arbitrarios para filtrar paquetes IP entrantes y salientes generados por procesos relacionados con dicha unidad. Las capacidades propuestas permiten crear una especie de cortafuegos para los servicios de systemd. un filtro de red simple basado en BPF; - Se ha añadido al comando systemctl la opción 'clean' para eliminar caché, archivos de tiempo de ejecución, información de estado y directorios con registros;
- En systemd-networkd se ha añadido soporte para interfaces de red MACsec, nlmon, IPVTAP y Xfrm;
- En systemd-networkd se ha implementado la configuración separada de pilas DHCPv4 y DHCPv6 a través de secciones '[DHCPv4]' y '[DHCPv6]' en el archivo de configuración. Se ha añadido la opción RoutesToDNS para agregar una ruta separada al servidor DNS especificado en los parámetros obtenidos del servidor DHCP (de modo que el tráfico hacia DNS se envíe a través del mismo enlace que la ruta principal obtenida del DHCP). Para DHCPv4 se han añadido nuevas opciones: MaxAttempts — número máximo de solicitudes de dirección, BlackList — lista negra de servidores DHCP, SendRelease — habilitación del envío de mensajes DHCP RELEASE al terminar la sesión;
- Se han añadido nuevos comandos a la utilidad systemd-analyze:
- 'systemd-analyze timestamp' — análisis y conversión de tiempo;
- 'systemd-analyze timespan' — análisis y conversión de intervalos de tiempo;
- 'systemd-analyze condition' — análisis y prueba de expresiones ConditionXYZ;
- 'systemd-analyze exit-status' — análisis y conversión de códigos de salida de números a nombres y viceversa;
- El comando «systemd-analyze unit-files» muestra una lista de todas las rutas de archivos para unidades y alias de unidades.
- Las opciones SuccessExitStatus, RestartPreventExitStatus y
RestartForceExitStatus ahora admiten no solo códigos de retorno numéricos, sino también sus identificadores de texto (por ejemplo, «DATAERR»). Se puede consultar la lista de asignación de códigos a identificadores mediante el comando «sytemd-analyze exit-status»; - Se ha añadido el comando «delete» a la utilidad networkctl para eliminar dispositivos de red virtuales, así como la opción «—stats» para mostrar estadísticas de los dispositivos;
- Se han añadido las configuraciones SpeedMeter y SpeedMeterIntervalSec a networkd.conf para medir periódicamente el ancho de banda de las interfaces de red. Las estadísticas obtenidas de las mediciones se pueden ver en la salida del comando ‘networkctl status’;
- Se ha añadido una nueva utilidad systemd-network-generator para generar archivos
.network, .netdev y .link en base a la configuración IP que se pasa al inicio a través de la línea de comandos del núcleo de Linux en formato de configuración de Dracut; - El valor sysctl «kernel.pid_max» en sistemas de 64 bits ahora se establece por defecto en 4194304 (PIDs de 22 bits en lugar de 16 bits), lo que reduce la probabilidad de colisiones al asignar PIDs, aumenta el límite de procesos que se pueden ejecutar simultáneamente y tiene un efecto positivo sobre la seguridad. Es posible que este cambio genere problemas de compatibilidad, pero hasta ahora no se han reportado tales problemas en la práctica;
- Por defecto, en la fase de compilación se ha hecho la transición a una jerarquía unificada de cgroups-v2 («-Ddefault-hierarchy=unified»). Anteriormente, por defecto se establecía el modo híbrido («-Ddefault-hierarchy=hybrid»);
- Se ha modificado el comportamiento del filtro de llamadas del sistema (SystemCallFilter), que ahora finaliza todo el proceso en caso de llamar a una llamada del sistema prohibida, en lugar de finalizar hilos individuales, ya que finalizar hilos individuales podría llevar a problemas impredecibles. Estos cambios solo son efectivos si se tiene un núcleo de Linux 4.14+ y libseccomp 2.4.0+;
- Se ha permitido a los programas no privilegiados enviar paquetes ICMP Echo (ping) mediante la configuración sysctl «net.ipv4.ping_group_range» para todo el rango de grupos (para todos los procesos);
- Para acelerar el proceso de construcción, la generación de man páginas está desactivada por defecto (para generar la documentación completa, se debe utilizar la opción «-Dman=true» o «-Dhtml=true» para guías en formato html). Para simplificar la visualización de la documentación, se incluyen dos scripts build/man/man y build/man/html para la generación y la vista previa de las guías deseadas;
- Para el procesamiento de nombres de dominio con caracteres de alfabetos nacionales, se utiliza por defecto la biblioteca libidn2 (para volver a utilizar libidn, se debe usar la opción «-Dlibidn=true»);
- Se ha descontinuado el soporte para el archivo ejecutable /usr/sbin/halt.local, que proporcionaba una funcionalidad que no tuvo una amplia adopción en las distribuciones. Para organizar la ejecución de comandos al apagar, se recomienda usar scripts en /usr/lib/systemd/system-shutdown/ o definir una nueva unidad dependiente de final.target;
- En la fase final de apagado, systemd ahora aumenta automáticamente el nivel de logs en sysctl «kernel.printk», lo que resuelve el problema de que los eventos registrados en las fases tardías del apagado no aparecían en los logs, ya que los demonios de registro habían terminado;
- En journalctl y otras utilidades que muestran logs, se ha añadido resaltado amarillo para las advertencias, y azul para los registros de auditoría, para su distinción visual del resto;
- En la variable de entorno $PATH, la ruta a bin/ ahora se encuentra antes que la ruta a sbin/, es decir, si hay archivos ejecutables con el mismo nombre en ambos directorios, se ejecutará el archivo de bin/;
- En systemd-logind se ha implementado la llamada SetBrightness() para cambiar de manera segura el brillo de la pantalla para cada sesión;
- Se ha añadido la opción «--wait-for-initialization» al comando «udevadm info» para esperar a que se complete la inicialización del dispositivo;
- Durante el proceso de arranque, el manejador PID 1 ahora muestra los nombres de las unidades en la pantalla, en lugar de la línea con su descripción. Para volver al comportamiento anterior, se puede utilizar la opción StatusUnitFormat en /etc/systemd/system.conf o el parámetro del núcleo systemd.status_unit_format;
- En /etc/systemd/system.conf se ha añadido la opción KExecWatchdogSec para el watchdog en PID 1, que define el tiempo de espera para reiniciar utilizando kexec. La antigua configuración
ShutdownWatchdogSec ha sido renombrada a RebootWatchdogSec y define el tiempo de espera para trabajos durante el proceso de apagado o un reinicio normal; - Se ha añadido una nueva opción para servicios , que permite establecer comandos que se ejecutarán antes de ExecStartPre. La decisión sobre la ejecución posterior de la unidad se toma en función del código de error devuelto por el comando: si se devuelve el código 0, se continúa con el inicio de la unidad; si es de 1 a 254, se finaliza silenciosamente sin indicar un fallo; si es 255, se finaliza indicando un fallo.
- Se ha añadido un nuevo servicio systemd-pstore.service para extraer datos de sys/fs/pstore/ y guardarlos en /var/lib/pstore para su posterior análisis.
- Se han añadido nuevos comandos a la herramienta timedatectl para configurar parámetros NTP para systemd-timesyncd en relación con las interfaces de red.
- En el comando «localectl list-locales» se ha dejado de mostrar locales que no son UTF-8.
- Se ha asegurado que se ignoren los errores de asignación de variables en los archivos sysctl.d/, si el nombre de la variable comienza con el símbolo «-«.
- El servicio ahora es completamente responsable de la inicialización del pool de entropía del generador de números pseudoaleatorios del núcleo de Linux. Los servicios que requieren un /dev/urandom correctamente inicializado deben iniciarse después de systemd-random-seed.service.
- En el cargador systemd-boot se ha proporcionado la opción opcional de mantener con una secuencia aleatoria en la partición del sistema EFI (ESP).
- Se han añadido nuevos comandos a la herramienta bootctl: «bootctl random-seed» para generar un archivo seed en ESP y «bootctl is-installed» para verificar la instalación del cargador systemd-boot. También se ha implementado la salida de advertencias sobre configuraciones incorrectas de las entradas de arranque (por ejemplo, cuando se ha eliminado la imagen del núcleo pero se ha dejado la entrada para su carga).
- Se ha garantizado la selección automática de la partición de intercambio al entrar el sistema en modo de suspensión. La partición se elige en función de la prioridad configurada para ella, y en caso de prioridades iguales, por el tamaño del espacio libre.
- Se ha añadido una opción keyfile-timeout en /etc/crypttab para establecer un tiempo de espera para el dispositivo con la clave de cifrado antes de mostrar el aviso de contraseña para acceder a la partición cifrada.
- Se ha añadido una opción IOWeight para establecer el peso de entrada/salida para el planificador BFQ.
- En systemd-resolved se ha añadido un modo estricto (‘strict’) para DNS-over-TLS y se ha implementado la posibilidad de almacenar en caché solo respuestas DNS positivas («Cache no-negative» en resolved.conf).
- Para VXLAN en systemd-networkd se ha añadido la opción GenericProtocolExtension para habilitar extensiones del protocolo VXLAN. Se ha añadido la opción IPDoNotFragment para VXLAN y GENEVE para establecer el indicador de prohibición de fragmentación para los paquetes salientes;
- En systemd-networkd, en la sección “[Route]”, ha aparecido la opción FastOpenNoCookie para habilitar el mecanismo de apertura rápida de conexiones TCP (TFO — TCP Fast Open, RFC 7413) vinculado a rutas específicas, así como la opción TTLPropagate para configurar el TTL LSP (Label Switched Path). En la opción “Type”, se ha asegurado el soporte para los modos de enrutamiento local, broadcast, anycast, multicast, any y xresolve;
- En systemd-networkd, en la sección “[Network]”, se ha propuesto la opción DefaultRouteOnDevice para la configuración automática de la ruta por defecto para un dispositivo de red determinado;
- En systemd-networkd, para los puentes de red se han añadido las opciones ProxyARP y
ProxyARPWifi para configurar el comportamiento de proxy ARP, MulticastRouter para establecer parámetros de enrutamiento en modo multicast, MulticastIGMPVersion para cambiar la versión de IGMP (Internet Group Management Protocol) para multicast; - En systemd-networkd, para los túneles FooOverUDP se han añadido las opciones Local, Peer y PeerPort para configurar las direcciones IP de los lados local y remoto, así como el número de puerto de red. Para los túneles TUN, se ha añadido la opción VnetHeader para habilitar el soporte GSO (Generic Segment Offload);
- En systemd-networkd, en los archivos .network y .link, en la sección [Match], ha surgido la opción Property, que permite identificar dispositivos por propiedades específicas en udev;
- En systemd-networkd se ha añadido la opción AssignToLoopback para los túneles, gestionando la vinculación del extremo del túnel al dispositivo loopback «lo»;
- En systemd-networkd, se ha automatizado la activación de la pila IPv6 en caso de que esté bloqueada a través de sysctl disable_ipv6 — IPv6 se activa si se han definido ajustes de IPv6 (estáticos o DHCPv6) para la interfaz de red, de lo contrario, el valor ya establecido en sysctl no se modifica;
- En los archivos .network, la configuración CriticalConnection ha sido reemplazada por la opción KeepConfiguration, que proporciona más medios para definir situaciones («yes», «static», «dhcp-on-stop», «dhcp») en las que systemd-networkd no debe modificar las conexiones existentes al iniciarse;
- Se corrigió una vulnerabilidad , provocada por la falta de control de acceso a la interfaz D-Bus de systemd-resolved. El problema permite a un usuario no privilegiado realizar operaciones que solo están disponibles para administradores, por ejemplo, cambiar configuraciones DNS y dirigir solicitudes DNS a un servidor falso;
- Se corrigió una vulnerabilidad , relacionada con la desactivación de pam_systemd para sesiones no interactivas, que permite organizar el spoofing de la sesión activa.
Fuente: opennet.ru
