Versão FreeBSD 13.2 com suporte para Netlink e WireGuard

Após 11 meses de desenvolvimento, o FreeBSD 13.2 foi lançado. Imagens de instalação são geradas para as arquiteturas amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv6, armv7, aarch64 e riscv64. Além disso, foram preparadas compilações para sistemas de virtualização (QCOW2, VHD, VMDK, raw) e ambientes de nuvem Amazon EC2, Google Compute Engine e Vagrant.

Principais mudanças:

  • Implementada a capacidade de criar instantâneos de sistemas de arquivos UFS e FFS com registro ativado (atualizações suaves). Também foi adicionado suporte para salvar dumps em segundo plano (executando dump com o sinalizador "-L") com o conteúdo de sistemas de arquivos UFS montados com registro em diário habilitado. Dos recursos que não estão disponíveis ao usar o registro no diário, há uma verificação de integridade em segundo plano usando o utilitário fsck.
  • O driver wg trabalhando em nível de kernel com a implementação da interface de rede para VPN WireGuard foi adotado como parte principal. Para usar os algoritmos criptográficos exigidos pelo driver, a API do subsistema criptográfico do kernel do FreeBSD foi estendida, à qual foi adicionada uma ligação que permite usar algoritmos da biblioteca libsodium que não são suportados no FreeBSD através da API criptográfica padrão. Durante o processo de desenvolvimento, também foram realizadas otimizações para equilibrar uniformemente a atribuição de tarefas de criptografia e descriptografia aos núcleos da CPU, o que reduziu a sobrecarga de processamento de pacotes WireGuard.

    A última tentativa de incluir o WireGuard no FreeBSD foi feita em 2020, mas terminou em um escândalo, resultando na remoção do código já adicionado devido à baixa qualidade, manuseio descuidado do buffer, uso de stubs em vez de verificações, implementação incompleta do protocolo e violação da licença GPL. Uma nova implementação preparada em conjunto pelas principais equipes de desenvolvimento do FreeBSD e WireGuard com contribuições de Jason A. Donenfeld, autor de VPN WireGuard, e John H. Baldwin, renomado desenvolvedor do FreeBSD. Uma revisão completa das mudanças foi feita com o apoio da Fundação FreeBSD antes do novo código ser aceito.

  • Implementado suporte ao protocolo de comunicação Netlink (RFC 3549), que é usado no Linux para organizar a interação entre o kernel e os processos no espaço do usuário. O projeto está limitado a suportar a família de operações NETLINK_ROUTE para gerenciar o estado do subsistema de rede no kernel, o que permite ao FreeBSD usar o utilitário ip Linux do pacote iproute2 para gerenciar interfaces de rede, definir endereços IP, configurar roteamento e manipular objetos nexthop que armazenam dados de estado usados ​​para encaminhar o pacote para o destino desejado.
  • Todos os executáveis ​​do sistema básico em plataformas de 64 bits têm o Address Space Layout Randomization (ASLR) habilitado por padrão. Para desabilitar seletivamente o ASLR, você pode usar os comandos "proccontrol -ma aslr -s disable" ou "elfctl -e +noaslr".
  • ipfw usa tabelas Radix para procurar endereços MAC, o que permite criar tabelas com endereços MAC e usá-las para filtrar o tráfego. Por exemplo: 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 deny src-mac 'table(1, 100)'ipfw adicionar negação de pesquisa dst-mac 1
  • Adicionados e disponíveis para carregamento via loader.conf estão os módulos do kernel dpdk_lpm4 e dpdk_lpm6 com a implementação do algoritmo de busca de rota DIR-24-8 para IPv4/IPv6, que permite otimizar funções de roteamento para hosts com tabelas de roteamento muito grandes (testes mostram um aumento de velocidade de 25%). O utilitário de rota padrão pode ser usado para configurar módulos (a opção FIB_ALGO foi adicionada).
  • A implementação do sistema de arquivos ZFS foi atualizada para o lançamento do OpenZFS 2.1.9. O script de inicialização zfskeys fornece carregamento automático de chaves armazenadas no sistema de arquivos ZFS. Adicionado um novo script RC zpoolreguid para atribuir um GUID a um ou mais zpools (útil para ambientes de virtualização de dados compartilhados, por exemplo).
  • O hipervisor Bhyve e o módulo vmm suportam a conexão de mais de 15 CPUs virtuais ao sistema convidado (ajustável via sysctl hw.vmm.maxcpu). O utilitário bhyve implementa uma emulação do dispositivo de entrada virtio, com o qual você pode substituir eventos de entrada de teclado e mouse no sistema convidado.
  • KTLS, uma implementação do protocolo TLS rodando no nível do kernel do FreeBSD, adicionou suporte para aceleração de hardware TLS 1.3, descarregando algumas das operações associadas ao processamento de pacotes criptografados de entrada nos ombros da placa de rede. Anteriormente, esse recurso estava disponível para TLS 1.1 e TLS 1.2.
  • No script de inicialização do growfs, ao expandir o FS raiz, é garantido que uma partição swap seja adicionada se tal partição não estivesse originalmente presente (por exemplo, é útil ao instalar uma imagem de sistema pronta em um cartão SD). Uma nova opção, growfs_swap_size, foi adicionada ao rc.conf para controlar o tamanho do swap.
  • O script de inicialização hostid garante que um UUID aleatório seja gerado caso o arquivo /etc/hostid esteja faltando e o UUID não possa ser obtido do hardware. Também foi adicionado o arquivo /etc/machine-id com uma representação compacta do ID do host (sem traços).
  • As variáveis ​​defaultrouter_fibN e ipv6_defaultrouter_fibN foram adicionadas ao rc.conf, através das quais você pode adicionar rotas padrão a tabelas FIB diferentes da primária.
  • O suporte para hashes SHA-512/224 foi adicionado à biblioteca libmd.
  • A biblioteca pthread implementa suporte para a semântica de funções usadas no Linux.
  • O suporte para decodificação de chamadas do sistema Linux foi adicionado ao kdump. O suporte para rastreamento de syscall no estilo Linux foi adicionado ao kdump e ao sysdecode.
  • O utilitário killall agora tem a capacidade de enviar um sinal para processos vinculados a um terminal específico (por exemplo, "killall -t pts/1").
  • Adicionado utilitário nproc para exibir o número de unidades computacionais disponíveis para o processo atual.
  • Suporte para decodificação de parâmetros ACS (Access Control Services) foi adicionado ao utilitário pciconf.
  • A configuração SPLIT_KERNEL_DEBUG foi adicionada ao kernel, o que permite salvar informações de depuração do kernel e dos módulos do kernel em arquivos separados.
  • A ABI do Linux está quase completa com suporte ao mecanismo vDSO (objetos virtuais dinâmicos compartilhados), que fornece um conjunto limitado de chamadas de sistema disponíveis no espaço do usuário sem troca de contexto. A ABI Linux em sistemas ARM64 foi equiparada à implementação da arquitetura AMD64.
  • Suporte de hardware aprimorado. Adicionado suporte de monitoramento de desempenho (hwpmc) para CPUs Intel Alder Lake. Driver iwlwifi atualizado para placas wireless Intel com suporte para novos chips e padrão 802.11ac. Adicionado driver rtw88 para placas sem fio Realtek PCI. Estendida a camada linuxkpi para uso com drivers Linux do FreeBSD.
  • A biblioteca OpenSSL foi atualizada para a versão 1.1.1t, LLVM/Сlang foi atualizado para a versão 14.0.5 e o servidor e cliente SSH foram atualizados para OpenSSH 9.2p1 (a versão anterior usava OpenSSH 8.8p1). Também foram atualizados bc 6.2.4, expat 2.5.0, arquivo 5.43, menos 608, libarchive 3.6.2, sendmail 8.17.1, sqlite 3.40.1, unbound 1.17.1, zlib 1.2.13.

Além disso, ele foi descontinuado e removido desde o branch FreeBSD 14.0 para senhas de uso único OPIE, drivers ce e cp, drivers de placa ISA, utilitários mergemaster e minigzip, componentes ATM em netgraph (NgATM), o processo em segundo plano telnetd e o VINUM aula em geom.

Fonte: opennet.ru

Adicionar um comentário