Pesquisa de site

Como configurar a rede IP com ‘nmcli’ no Linux


Como administrador Linux, você tem várias ferramentas para configurar suas conexões de rede, como nmtui, seu NetworkManager com interface gráfica de usuário GNOME e, claro, nmcli (ferramenta de linha de comando do gerenciador de rede).

Tenho observado muitos administradores usando nmtui por sua simplicidade. No entanto, usar nmcli economiza seu tempo, aumenta sua confiança, permite a integração em scripts e é a principal ferramenta para solucionar problemas de rede de servidores Linux, restaurando rapidamente sua funcionalidade.

Tendo notado vários comentários buscando ajuda com nmcli, decidi escrever este artigo. Claro, você deve sempre ler as páginas de manual com atenção (elas são o recurso número 1 para você). Meu objetivo é economizar seu tempo e fornecer algumas dicas úteis.

Sintaxe do comando nmcli

A sintaxe de nmcli é:

nmcli [OPTIONS] OBJECT {COMMAND | help}

Onde OBJECT é geral, rede, rádio, conexão, dispositivo e agente.

Verifique o status do dispositivo de rede no Linux

Um bom ponto de partida seria verificar nossos dispositivos:

nmcli dev status

DEVICE      TYPE      STATE         CONNECTION 
docker0     bridge    connected     docker0    
virbr0      bridge    connected     virbr0     
enp0s3      ethernet  connected     enp0s3     
virbr0-nic  ethernet  disconnected  --         
lo          loopback  unmanaged     --         

Como podemos ver na primeira coluna, há uma lista dos nossos dispositivos de rede. Temos uma placa de rede com o nome enp0s3. Na sua máquina, você poderá ver nomes diferentes.

A nomenclatura depende do tipo de placa de rede (se é integrada, uma placa PCI, etc.). Na última coluna, vemos nossos arquivos de configuração, que são usados por nossos dispositivos para se conectar à rede

É simples entender que nossos dispositivos, por si só, nada podem fazer. Eles precisam que criemos um arquivo de configuração para instruí-los sobre como obter conectividade de rede. Esses arquivos também são chamados de ‘perfis de conexão’ e os encontramos no diretório /etc/sysconfig/network-scripts.

cd /etc/sysconfig/network-scripts/
ls
Saída de amostra
ifcfg-enp0s3  ifdown-isdn      ifup          ifup-plip      ifup-tunnel
ifcfg-lo      ifdown-post      ifup-aliases  ifup-plusb     ifup-wireless
ifdown        ifdown-ppp       ifup-bnep     ifup-post      init.ipv6-global
ifdown-bnep   ifdown-routes    ifup-eth      ifup-ppp       network-functions
ifdown-eth    ifdown-sit       ifup-ib       ifup-routes    network-functions-ipv6
ifdown-ib     ifdown-Team      ifup-ippp     ifup-sit
ifdown-ippp   ifdown-TeamPort  ifup-ipv6     ifup-Team
ifdown-ipv6   ifdown-tunnel    ifup-isdn     ifup-TeamPort

Como você pode ver aqui, os arquivos com nomes começando com 'ifcfg-' (configuração de interface) são perfis de conexão. Quando criamos uma nova conexão ou modificamos uma existente com nmcli ou nmtui, os resultados são salvos aqui como perfis de conexão.

Vou mostrar dois deles da minha máquina, um com configuração dhcp e outro com ip estático.

cat ifcfg-static1
cat ifcfg-Myoffice1

Percebemos que algumas propriedades têm valores diferentes e outras não existem se não forem necessárias.

Vamos dar uma olhada rápida nos mais importantes.

  • TYPE – temos o tipo Ethernet aqui. Também poderíamos ter WiFi, equipe, vínculo e outros.
  • DEVICE – o nome do dispositivo de rede associado a este perfil.
  • BOOTPROTO – se tiver o valor “dhcp ”, então nosso perfil de conexão obtém um IP dinâmico do servidor DHCP. Se tiver o valor “nenhum”, então ele não usa um IP dinâmico e provavelmente atribuímos um IP estático.
  • IPADDR – é o IP estático que atribuímos ao nosso perfil.
  • PREFIX – a máscara de sub-rede. Um valor 24 significa 255.255.255.0. Você pode entender melhor a máscara de sub-rede anotando seu formato binário. Por exemplo, valores de 16, 24 e 26 significam que os primeiros 16, 24< ou 26 bits, respectivamente, são definidos como 1 e o restante é 0. Isso define o endereço de rede e o intervalo de endereços IP que podem ser atribuídos.
  • GATEWAY – o IP do gateway.
  • DNS1, DNS2 – dois servidores DNS que queremos usar.
  • ONBOOT – se tiver o valor “yes” significa que ao inicializar nosso computador irá ler este perfil e tentar atribuí-lo ao seu dispositivo.

Verifique a conexão de rede no Linux

Agora, vamos seguir em frente e verificar nossas conexões:

nmcli con show

A última coluna de dispositivos nos ajuda a entender qual conexão está ‘UP‘ e funcionando e qual não está. Na imagem acima você pode ver as duas conexões ativas: Myoffice1 e enp0s8.

Dica: Se quiser ver apenas as conexões ativas, digite:

nmcli con show -a

Dica: você pode usar o preenchimento automático clicando em Tab quando usar nmcli, mas é melhor usar formato mínimo do comando.

Assim, os seguintes comandos são iguais:

nmcli connection show
nmcli con show
nmcli c s

Verifique o endereço IP no Linux

Se eu verificar os endereços IP dos meus dispositivos:

ip a

Vejo que meu dispositivo enp0s3 pegou o IP 192.168.1.6 do servidor dhcp porque o perfil de conexão Myoffice1 que está ativo tem uma configuração dhcp.

Se eu colocar “up ” meu perfil de conexão com o nome static1 então meu dispositivo usará o IP estático 192.168.1.40 conforme definido no perfil de conexão.

nmcli con down Myoffice1 ; nmcli con up static1
nmcli con show

Vamos ver o endereço IP novamente:

ip a

Podemos fazer nosso primeiro perfil de conexão. As propriedades mínimas que devemos definir são type, ifname, e con-name:

  • type – para o tipo de conexão.
  • ifname – para o nome do dispositivo atribuído à nossa conexão.
  • con-name – para o nome da conexão.

Criando uma nova conexão Ethernet no Linux

Vamos fazer uma nova conexão ethernet com o nome Myhome1, atribuída a um dispositivo enp0s3:

nmcli con add type ethernet con-name Myhome1 ifname enp0s3

Verifique sua configuração:

cat ifcfg-Myhome1

Como você pode ver, tem BOOTPROTO=dhcp, porque não fornecemos nenhum endereço IP estático.

Dica: Podemos modificar qualquer conexão com o comando “nmcli con mod“. Porém, se você modificar uma conexão dhcp e alterá-la para estática, não se esqueça de alterá-la “ipv4.method ” de “auto ” para “manual ” . Caso contrário, você terá dois endereços IP: um do servidor dhcp e outro estático.

Vamos fazer um novo perfil de conexão Ethernet com nome static2, que será atribuído a um dispositivo enp0s3, com IP estático 192.168.1.50, sub-rede máscara 255.255.255.0=24, e gateway 192.168.1.1.

nmcli con add type ethernet con-name static2 ifname enp0s3 ip4 192.168.1.50/24 gw4 192.168.1.1

Verifique sua configuração:

cat ifcfg-static2

Modifique servidores DNS no Linux

Vamos modificar o último perfil de conexão e adicionar dois servidores DNS.

nmcli con mod static2 ipv4.dns “8.8.8.8 8.8.4.4”

Dica: Há algo aqui que você deve prestar atenção: as propriedades do endereço IP e do gateway têm nomes diferentes quando você adiciona e quando você modifica uma conexão. Ao adicionar conexões você usa “ip4 ” e “gw4 ”, enquanto ao modificá-las você usa “ipv4 ” e “ gwv4 ”.

Abra a conexão Ethernet no Linux

Agora vamos abrir este perfil de conexão:

nmcli con down static1 ; nmcli con up static2

Como você pode ver, o dispositivo enp0s3 agora tem um endereço IP 192.168.1.50.

ip a

Dica: Existem muitas propriedades que você pode modificar. Se você não se lembra deles de cor, você pode se ajudar digitando “nmcli con show ” e depois o nome da conexão:

nmcli con show static2

Você pode modificar todas essas propriedades escritas em letras minúsculas.

Por exemplo: quando você desativa um perfil de conexão, o NetworkManager procura outro perfil de conexão e o traz automaticamente. (Deixo como exercício para verificar). Se você não deseja que seu perfil de conexão se conecte automaticamente:

nmcli con mod static2 connection.autoconnect no

O último exercício é muito útil: você criou um perfil de conexão mas deseja que ele seja utilizado por usuários específicos. É bom classificar seus usuários!

Definir permissões de conexão Ethernet para usuário no Linux

Permitimos que apenas a usuária stella use este perfil:

nmcli con mod static2 connection.permissions stella

Dica: Se quiser dar permissões para mais de um usuário, você deve digitar user:user1,user2 sem espaço em branco entre eles:

nmcli con mod static2 connection.permissions user:stella,john

Se você fizer login como outro usuário, não poderá “up” este perfil de conexão:

nmcli con show
nmcli con up static2
ls /etc/sysconfig/network-scripts

Uma mensagem de erro diz que a conexão ‘static2’ não existe, mesmo que vejamos que ela existe. Isso ocorre porque um usuário atual não tem permissão para abrir esta conexão.

Conclusão: não hesite em usar nmcli. É fácil e útil.