NMSTATE Uma ferramenta de configuração de rede declarativa para Linux

NMSTATE Uma ferramenta de configuração de rede declarativa para Linux

O ecossistema Linux fornece inúmeras maneiras de configurar redes, incluindo o popular gerente de rede e ferramentas de linha de comando, como NMCLI e NMTUI GUI Utility. Este guia apresenta mais uma ferramenta de configuração de rede conhecida como Nmstate

Nmstate é um gerente de rede declarativo para configurar a rede em hosts Linux. É uma biblioteca que fornece uma ferramenta de linha de comando que gerencia configurações de rede host. Ele gerencia redes de hospedagem através de uma API declarativa para o norte. No momento em que escreveu este guia, o Gerente da rede Daemon é o único provedor suportado por Nmstate.

Neste guia, olhamos para alguns dos usos de exemplo do Nmstate ferramenta. Para este guia, demonstraremos isso usando Fedora Linux.

Abordagens imperativas versus declaração

O gerenciamento de rede pode adotar duas abordagens - Imperativo e declarativo. No imperativo Abordagem, você define explicitamente o estado de rede de uma interface executando comandos no terminal. O foco está no 'como'.

Por exemplo, para derrubar uma rede usando a abordagem imperativa, execute o comando:

$ sudo ifconfig enp0s3 

Por outro lado, o declarativo A abordagem usa um Yaml arquivo para aplicar as alterações a uma configuração. A maioria das ferramentas de orquestração de DevOps, como Kubernetes Use esta abordagem para implantar aplicativos de pods usando um Yaml arquivo.

Esta abordagem fornece o que é comumente chamado de infraestrutura como código (IAC) nos círculos do DevOps. Isso aprimora a automação da configuração de rede no host e fornece uma maneira rápida e mais confiável de fazer várias alterações em uma interface de rede com erros mínimos.

Agora, vamos mudar de marcha e ver como você pode usar o Nmstate Ferramenta de configuração para configurar suas interfaces de rede no Linux.

Etapa 1: Instale a ferramenta de configuração de rede nmstate

Vamos fazer a bola rolando instalando o Nmstate. Primeiro, verifique a disponibilidade do pacote de Fedora Repositórios da seguinte forma:

$ sudo dnf Search nmstate 

Da saída, podemos ver que o gerente de rede está disponível nos repositórios oficiais.

Verifique o pacote nmstate

Em seguida, instale Nmstate do seguinte modo. Isso funciona Fedora 31 e versões posteriores.

$ sudo dnf install nmstate 

O comando instala o Nmstate API de gerente de rede ao lado de outras dependências do Python.

Instale o nmstate no fedora

Depois que a instalação estiver concluída, verifique o nmstate o pacote está instalado da seguinte forma.

$ rpm -qi nmstate 
Verifique o pacote nmstate

Para Linux baseado em RHEL, ative o repositório de CORP primeiro.

$ sudo dnf copr ativar nmstate/nmstate 

Em seguida, instale Nmstate do seguinte modo.

$ sudo dnf install nmstate 

Confira instruções adicionais sobre como instalar o nmstate a partir da fonte.

Uma vez instalado, você pode verificar a versão de Nmstate instalado da seguinte forma.

$ nmstatectl versão 1.0.2 

Usando a ferramenta de configuração nmstate no Linux

Com Nmstate Instalado, vamos descer para os Gritty-Gritties de como você pode aproveitar ao máximo a API do Gerenciador de Rede.

Para visualizar a configuração de rede atual da sua interface de rede, execute o seguinte comando. Aqui está a configuração do seu ENP0S3 interface.

$ nmstatectl show enp0s3 
Mostrar configuração de interface de rede

A saída é dividida em 4 seções distintas:

  • DNS-Resolver: Esta seção contém a configuração do servidor de nomes para a interface específica.
  • Rota-barras: Isso estipula as regras de roteamento.
  • rotas: Isso inclui rotas dinâmicas e estáticas.
  • Interfaces: Esta seção especifica as configurações IPv4 e IPv6.

Mudança de configuração de rede no Linux

Você pode usar o Nmstate Ferramenta de configuração para configurar seus hosts para o estado desejado usando modos interativos ou baseados em arquivo.

  • Interativo: Isso edita uma interface de rede usando o nmstatectl Editar comando. Este comando abre um editor de texto definido pela variável do ambiente do editor. Depois que as alterações são salvas, o NMState aplica a nova configuração imediatamente, a menos que os erros de sintaxe tenham sido detectados.
  • Baseado em arquivo: No modo baseado em arquivo, a configuração da interface é aplicada usando um arquivo YAML ou JSON usando o nmstatectl Aplicar comando.

Vamos agora sujar as mãos e verificar como você pode modificar a configuração de rede usando Nmstate.

Nosso Fedora O sistema possui duas interfaces de rede ativa com a seguinte configuração:

$ ip -br -4 a 
Saída de amostra
LO Desconhecido 127.0.0.1/8 ENP0S3 UP 192.168.2.104/24 ENP0S8 UP 192.168.2.103/24 

Exemplo de modo de configuração interativa

Usaremos o modo interativo para alterar o MTU (Unidade de transmissão máxima) do ENP0S3 interface de rede. Por padrão, isso está definido como 1500 como mostrado.

$ ifconfig 
Verifique a rede MTU no Linux

Vamos mudar isso para 4000. Faremos isso usando o nmstatectl Editar comando da seguinte forma.

$ sudo nmstatectl editar ENP0S3 

Isso abre a configuração em um editor de texto. Para o nosso caso, ele abre em vim editor. Em seguida, role até baixo e localize o MTU parâmetro. Vamos mudar o valor para 4000, Assim como iríamos editar um arquivo em vim. Então vamos salvar as mudanças.

Alterar a rede MTU no Linux

Ao salvar e sair do arquivo, você verá alguma saída mexida no terminal como Nmstate salva as mudanças. Nenhuma intervenção é necessária, então, apenas fique parado.

Vamos agora confirmar que a mudança foi feita.

$ ifconfig 

Da saída do terminal, podemos ver que mudamos com sucesso o MTU para 4000 do padrão 1500 valor.

Verifique a rede MTU no Linux

Exemplo de modo de configuração baseado em arquivo

Vamos agora modificar a configuração usando o modo baseado em arquivo. Neste exemplo, vamos desativar IPv6 para o ENP0S8 interface de rede. O primeiro passo é criar um arquivo YAML que especificará o estado desejado do ENP0S8 interface de rede.

$ sudo nmstatectl show enp0s8> enp0s8.yml 
Crie arquivo YAML de rede

Em seguida, vamos editar o Yaml arquivo como segue.

$ sudo vim enp0s8.yml 

Role para baixo até a seção IPv6. Para desativar o IPv6, defina o parâmetro ativado como false e exclua as linhas que foram atingidas.

Desative Ipv6 no Linux

Salve a configuração e aplique o novo estado usando o arquivo YAML da seguinte forma.

$ sudo nmstatectl Aplicar ENP0S8.yml 

Agora execute o comando mostrado para verificar se o IPv6 foi desativado. A saída exibida mostra que o IPv6 para o ENP0S8 A interface de rede está em branco, implicando que desativamos com sucesso o IPv6 na interface.

$ ip -br a 
Confirme IPv6 desativado no Linux

Aplicando mudanças de rede temporariamente

Outra funcionalidade realmente útil que Nmstate O fornecimento é a capacidade de configurar temporariamente um estado de rede desejado. Depois de ficar satisfeito com a configuração, você pode prosseguir e tornar as alterações permanentes. Caso contrário, as alterações feitas voltarão às configurações iniciais assim que o tempo limite expirar. O tempo limite padrão é de 60 segundos.

Para demonstrar isso, definiremos temporariamente um IP estático no ENP0S3 interface e desativar DHCP. Mais uma vez, acesse o arquivo usando um editor de texto.

$ sudo vim enp0s3.yml 

Role até o IPv4 seção. Especifique o IP estático - no nosso caso 192.168.2.150 e exclua as linhas que foram atingidas. Além disso, certifique -se de definir o DHCP parâmetro para falso.

Defina IP estático no Linux

Salve o arquivo e cometer temporariamente as alterações da seguinte forma.

$ sudo nmstatectl Aplicar-Não-Compromit-Timeout 20 ENP0S3.yml 

O --sem compromisso a opção aplica temporariamente as alterações por um período definido pelo --tempo esgotado opção que, neste exemplo, é de 20 segundos.

Para verificar a aplicação temporal das alterações, verificaremos a configuração IP em um intervalo de tempo de 20 segundos.

$ ip -br a 

A partir da saída, você pode ver que a configuração IP da interface reverteu para o DHCP após o intervalo de tempo de 20 segundos. O endereço IP voltou para 192.168.2.104 do IP estaticamente configurado anteriormente que foi 192.168.2.150.

Verifique a interface da rede

É certo que o Nmstate A ferramenta é uma ferramenta conveniente para configurar suas interfaces de rede. É uma ferramenta declarativa que aplica o estado de configuração desejado da interface de um host usando a API de NetworkManager.

O estado é facilmente definido usando o interativo abordar ou usar o baseado em arquivo método que usa um pré-configurado Yaml arquivo. Isso aprimora a automação de tarefas de configuração e redução de erros durante a configuração.