Versione FreeBSD 13.2 con supporto Netlink e WireGuard

Dopo 11 mesi di sviluppo, è stato rilasciato FreeBSD 13.2. Le immagini di installazione vengono generate per le architetture amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv6, armv7, aarch64 e riscv64. Inoltre, sono stati preparati assiemi per sistemi di virtualizzazione (QCOW2, VHD, VMDK, raw) e ambienti cloud Amazon EC2, Google Compute Engine e Vagrant.

Modifiche principali:

  • È stata implementata la possibilità di creare istantanee dei file system UFS e FFS con la registrazione abilitata (aggiornamenti software). Aggiunto anche il supporto per il salvataggio in background dei dump (esecuzione del dump con il flag "-L") con il contenuto dei file system UFS montati quando il journaling è abilitato. Una delle funzionalità non disponibili quando si utilizza la registrazione è l'esecuzione in background dei controlli di integrità utilizzando l'utilità fsck.
  • La composizione di base include un driver wg che opera a livello del kernel con l'implementazione di un'interfaccia di rete per VPN WireGuard. Per utilizzare gli algoritmi crittografici richiesti dal driver, è stata estesa l'API del sottosistema crittografico del kernel di FreeBSD, a cui è stato aggiunto un cablaggio che consente l'utilizzo di algoritmi della libreria libsodium che non sono supportati in FreeBSD attraverso la critto-API standard . Durante il processo di sviluppo, è stata effettuata anche un'ottimizzazione per bilanciare uniformemente il legame delle attività di crittografia e decrittografia dei pacchetti ai core della CPU, riducendo così il sovraccarico durante l'elaborazione dei pacchetti WireGuard.

    L'ultimo tentativo di includere WireGuard in FreeBSD è stato fatto nel 2020, ma si è concluso con uno scandalo, a seguito del quale il codice già aggiunto è stato rimosso a causa della bassa qualità, del lavoro imprudente con i buffer, dell'uso di stub invece dei controlli, dell'implementazione incompleta del protocollo e violazione della licenza GPL. La nuova implementazione è stata preparata congiuntamente dai principali team di sviluppo di FreeBSD e WireGuard, con il contributo di Jason A. Donenfeld, autore di VPN WireGuard, e John H. Baldwin, un rinomato sviluppatore di FreeBSD. Una revisione completa delle modifiche è stata condotta con il supporto della FreeBSD Foundation prima che il nuovo codice fosse accettato.

  • È stato implementato il supporto per il protocollo di comunicazione Netlink (RFC 3549), utilizzato in Linux per organizzare l'interazione del kernel con i processi nello spazio utente. Il progetto si limita a supportare la famiglia di operazioni NETLINK_ROUTE per la gestione dello stato del sottosistema di rete nel kernel, che consente a FreeBSD di utilizzare l'utilità ip Linux dal pacchetto iproute2 per gestire le interfacce di rete, impostare indirizzi IP, configurare routing e manipolare nexthop oggetti che memorizzano i dati sullo stato utilizzati per trasmettere il pacchetto alla destinazione desiderata.
  • Tutti gli eseguibili del sistema di base su piattaforme a 64 bit hanno la randomizzazione del layout dello spazio degli indirizzi (ASLR) abilitata per impostazione predefinita. Per disabilitare selettivamente ASLR, è possibile utilizzare i comandi “proccontrol -m aslr -s aware” o “elfctl -e +noaslr”.
  • In ipfw, le tabelle radix vengono utilizzate per cercare gli indirizzi MAC, il che consente di creare tabelle con indirizzi MAC e utilizzarle per filtrare il traffico. Ad esempio: ipfw table 1 create type mac ipfw table 1 add 11:22:33:44:55:66/48 ipfw add skipto tablearg src-mac 'table(1)' ipfw add aware src-mac 'table(1, 100 )' ipfw aggiungi nega ricerca dst-mac 1
  • I moduli kernel dpdk_lpm4 e dpdk_lpm6 sono stati aggiunti e sono disponibili per il caricamento tramite loader.conf con l'implementazione dell'algoritmo di ricerca del percorso DIR-24-8 per IPv4/IPv6, che consente di ottimizzare le funzioni di routing per host con tabelle di routing molto grandi ( nei test si osserva un aumento della velocità del 25%). Per configurare i moduli è possibile utilizzare l'utilità di routing standard (è stata aggiunta l'opzione FIB_ALGO).
  • L'implementazione del file system ZFS è stata aggiornata per rilasciare OpenZFS 2.1.9. Lo script di avvio zfskeys fornisce il caricamento automatico delle chiavi archiviate nel file system ZFS. Aggiunto nuovo script RC zpoolreguid per assegnare un GUID a uno o più zpool (utile ad esempio per ambienti di virtualizzazione dati condivisi).
  • L'hypervisor Bhyve e il modulo vmm supportano il collegamento di più di 15 CPU virtuali al sistema ospite (regolato tramite sysctl hw.vmm.maxcpu). L'utilità bhyve implementa l'emulazione del dispositivo virtio-input, con il quale è possibile sostituire gli eventi di input di tastiera e mouse nel sistema ospite.
  • In KTLS, un'implementazione del protocollo TLS in esecuzione a livello del kernel di FreeBSD, è stato aggiunto il supporto per l'accelerazione hardware di TLS 1.3 scaricando sulla scheda di rete alcune operazioni relative all'elaborazione dei pacchetti in entrata crittografati. In precedenza, una funzionalità simile era disponibile per TLS 1.1 e TLS 1.2.
  • Nello script di avvio di growfs, quando si espande il file system root, è possibile aggiungere una partizione di swap se inizialmente tale partizione mancava (ad esempio, utile quando si installa un'immagine di sistema già pronta su una scheda SD). Per controllare la dimensione dello swap, è stato aggiunto un nuovo parametro growfs_swap_size a rc.conf.
  • Lo script di avvio dell'hostid garantisce che venga generato un UUID casuale se manca il file /etc/hostid e l'UUID non può essere ottenuto dall'hardware. Aggiunto anche un file /etc/machine-id con una rappresentazione compatta dell'ID host (senza trattini).
  • Sono state aggiunte a rc.conf le variabili defaultrouter_fibN e ipv6_defaultrouter_fibN, attraverso le quali è possibile aggiungere route predefinite a tabelle FIB diverse da quella primaria.
  • Il supporto per gli hash SHA-512/224 è stato aggiunto alla libreria libmd.
  • La libreria pthread fornisce supporto per la semantica delle funzioni utilizzate in Linux.
  • Aggiunto il supporto per decodificare le chiamate di sistema Linux su kdump. Aggiunto il supporto per il tracciamento delle chiamate di sistema in stile Linux su kdump e sysdecode.
  • L'utilità killall ora ha la capacità di inviare un segnale ai processi legati a un terminale specifico (ad esempio, "killall -t pts/1").
  • Aggiunta l'utilità nproc per visualizzare il numero di blocchi computazionali disponibili per il processo corrente.
  • All'utilità pciconf è stato aggiunto il supporto per la decodifica dei parametri ACS (Access Control Services).
  • L'impostazione SPLIT_KERNEL_DEBUG è stata aggiunta al kernel, che consente di salvare le informazioni di debug per il kernel e i moduli del kernel in file separati.
  • L'ABI di Linux è quasi completo con il supporto per il meccanismo vDSO (virtual Dynamic Shared Objects), che fornisce un insieme limitato di chiamate di sistema disponibili nello spazio utente senza cambio di contesto. L'ABI Linux sui sistemi ARM64 è stata portata alla parità con l'implementazione per l'architettura AMD64.
  • Supporto hardware migliorato. Aggiunto il supporto per il monitoraggio delle prestazioni (hwpmc) per le CPU Intel Alder Lake. Il driver iwlwifi per le schede wireless Intel è stato aggiornato con il supporto per nuovi chip e lo standard 802.11ac. Aggiunto driver rtw88 per schede wireless Realtek con interfaccia PCI. Le capacità del livello linuxkpi sono state ampliate per l'uso con i driver Linux in FreeBSD.
  • La libreria OpenSSL è stata aggiornata alla versione 1.1.1t, LLVM/Сlang alla versione 14.0.5 e il server e il client SSH sono stati aggiornati a OpenSSH 9.2p1 (la versione precedente utilizzava OpenSSH 8.8p1). Aggiornate anche le versioni bc 6.2.4, expat 2.5.0, file 5.43, less 608, libarchive 3.6.2, sendmail 8.17.1, sqlite 3.40.1, unbound 1.17.1, zlib 1.2.13.

Inoltre, è stato annunciato che, a partire dal ramo FreeBSD 14.0, le password monouso OPIE, i driver ce e cp, i driver per le carte ISA, le utilità mergemaster e minigzip, i componenti ATM in netgraph (NgATM), il processo in background telnetd e il Classe VINUM in geom.

Fonte: opennet.ru

Aggiungi un commento