Tudo sobre o comando ip no Linux

O comando ip no Linux tem como principal objetivo simplificar a vida dos administradores de sistemas quando se trata das tarefas de rede em servidores.

Porém, o ip não é um comando que faz apenas tarefas simples, possui várias funcionalidades avançadas.

Embora semelhante ao comando ifconfig, o ip surgiu como um substituto muito mais poderoso e contendo mais funcionalidades essenciais.

O ifconfig é considerado obsoleto em todas distribuições Linux atualmente, e foi substituído pelo comando ip, mas você ainda pode utilizá-lo se preferir.

Mesmo obsoleto, o comando ifconfig permanece funcionando na ampla maioria das distribuições Linux.

Dentre as principais funções, o comando ip no Linux é responsável por adicionar endereços IP às interfaces de rede das máquinas, assim como ativá-las ou desativá-las e administrar a tabela cache do ARP.

Dessa forma, você terá exemplos práticos de uso do comando ip no Linux, desde o mais simples ao mais detalhado.

Observação: Recomendamos que você salve uma cópia dos arquivos de configuração antes de iniciar qualquer modificação.

Fixar IP no Linux

Fixar IP nas interfaces de rede é uma tarefa recorrente para todo usuário administrador de sistemas Linux.

Para você poder executar tarefas com este comando, seu usuário precisa ter nível de super usuário para ser capaz de executar o comando su (switch user) via terminal.

Fixar IP em distribuições Linux baseadas em Red Hat

Em nosso primeiro exemplo, vamos vincular o endereço IP à interface de nossa máquina. Para tanto, primeiro você deve visualizar quais os nomes das interfaces existentes em sua máquina.

Para isso, execute o seguinte comando:

$ ip a

Deverá trazer uma saída parecida com essa:

comando ip a

Neste caso, a interface possui o nome ens160 e IP 192.168.153.139/24

Agora, utilizando o editor vim ou qualquer outro editor de sua preferência, você pode editar o arquivo da interface da seguinte forma:

$ sudo vim /etc/sysconfig/network-scripts/ifcfg-ens160

Antes da alteração:

ifcfg para visualizar o IP

Após alteração de DHCP para IP fixo:

bootproto, ifcfg

Conteúdo inserido:

BOOTPROTO=static

ONBOOT=yes

IPADDR=192.168.153.139

NETMASK=255.255.255.0

GATEWAY=192.168.153.1

DNS1=8.8.8.8

Após a configuração, você precisará reiniciar o serviço de rede:

$ sudo systemctl restart NetworkManager

Fixar IP em distribuições Linux baseadas em Debian

Agora, vamos verificar como inserir IP fixo de forma permanente em distribuições baseadas em Debian, como Ubuntu.

Para inserir o endereço de forma que fique fixo, você terá que alterar a configuração do arquivo da interface que se encontra no seguinte caminho /etc/netplan/01-network-manager-all.yaml

 Mas, primeiro localizamos o nome da interface com o seguinte comando:

$ ip a

Deverá ser exibida uma saída parecida com essa:

ip a , comando ip no linux

Neste exemplo, o nome da interface é ens33 e será editada com o comando:

$ sudo vim /etc/netplan/01-network-manager-all.yaml

Antes da alteração:

networkmanager

Observação: O nome do arquivo de configuração 01-network-manager-all.yaml pode ser diferente em seu sistema.

Após as mudanças terem sido feitas:

networkd

Conteúdo inserido

network:

  version: 2

  renderer: networkd

  ethernets:

    ens033:

      dhcp4: no

      addresses: [192.168.153.129/24]

      routes:

                - to: default

                  via: 192.168.153.1

      nameservers:

        addresses: [8.8.8.8, 8.8.4.4]

Em seguida, aplique as novas alterações no Netplan:

$ sudo netplan apply

Como configurar endereço IP de forma temporária no Linux.

Para a configuração de IP de forma temporária, você pode fazer uso do comando ip para atribuir um endereçamento em uma interface específica.

Sendo assim, utilize a seguinte sintaxe de comando:

CentOS

$ sudo ip addr add 192.168.153.140/24 dev ens160

Então, a saída deverá ser:

comando ip a

Ubuntu

$ ip addr add 192.168.0.5/32 dev ens33

Dessa forma, a saída esperada deve ser semelhante a:

comando ip addr add

A configuração que acabamos de fazer se torna temporária, pois quando o sistema operacional for reiniciado, ela será perdida.

Como exibir todas as interfaces de rede no Linux

Nas distribuições Linux, você pode utilizar o comando ip junto com o comando show para exibir todas as interfaces existentes de forma resumida. Então, a sintaxe será dessa forma:

$ ip link show

E a saída será semelhante a essa:

comando ip link show

Como resultado, a saída que você acabou de ver mostra os detalhes das interfaces como seus respectivos nomes, status, endereços físicos.

Como exibir o endereço IP de uma interface de rede específica

Para você conseguir obter as configurações de uma determinada interface de rede, utilize a seguinte sintaxe de comando:

$ ip link show ens33
ip link show

Como primeiramente usamos o método de link para exibir os detalhes da interface, ele não é capaz de mostrar o IP vinculado à interface de rede.

Como solução alternativa, você pode usar o parâmetro addr em seu lugar.

Sintaxe do comando:

$ ip addr show
ip addr show

Finalmente, podemos ver todos os endereços IP de todas as interfaces de rede juntamente com os outros detalhes.

Para que você possa visualizar todos os detalhes de uma interface, assim como seu respectivo IP, deve utilizar o comando ip combinado com os comandos addr e show, ficando com a sintaxe dessa forma:

$ ip addr show ens33
comando ip addr

Como exibir o endereço IP de forma destacada na saída do comando

O comando ip no Linux mostra as informações de cada interface de rede de forma detalhada. Por vezes, precisamos ter visão só do que é mais importante para nós.

Então, quando usamos o parâmetro –color, passamos a ver os detalhes mais em destaque por cores diferentes.

$ ip --color addr show ens33
ip --color

Assim, nessa saída podemos ver em destaque algumas informações importantes como o endereço IP, endereço MAC, o nome da interface e seu estado.

Como Mostrar endereço IP no formato JSON

Até aqui vimos que nem sempre é fácil entender a saída do comando ip e obter tudo que queremos.

Porém, podemos incrementar o comando ip para que passe a mostrar as saídas em formato JSON, o que facilita bastante a compreensão.

Nesse sentido, você poderá utilizar o parâmetro -j junto ao comando ip, ficando semelhante a:

$ ip -j link show ens33
ip link show

Essa forma de extração acaba sendo bem mais útil quando estamos implementando automação, já que o JSON é um formato compatível com diversas ferramentas de análise.

Como transformar a saída em JSON mais legível

O parâmetro -j possui uma limitação em seu poder de formatação. Neste sentido, a ausência da função de recuo.

Mas, há uma forma de contornar este empecilho, você precisará utilizar o parâmetro -p, fazendo com que a saída fique identada.

$ ip -j -p link show ens33
ip link show

Como remover o IP de uma interface de rede

Enquanto para adicionar IP a uma interface de rede usamos o comando add, para a remoção fazemos uso do comando del.

A princípio, vejamos como você pode fazer, executando o comando:

$ ip addr del 192.168.153.130/32 dev ens33

E para verificar se o IP foi removido:

$ ip -j -p addr show ens33
ip addr del , para deletar um ip no linux

Como ativar a interface de rede

A instrução auxiliar up tem como função habilitar a interface de rede desejada. Primeiramente, rode o comando:

$ ip link set ens33 up

Desse modo, você confere se de fato a interface foi habilitada:

$ ip -j -p link show ens33 | grep operstate
ativar interface, comando ip link show

Como desabilitar interfaces de rede

Para que possamos desabilitar a interface de rede que desejamos, basta usarmos a instrução down.

Em nosso caso, vamos desabilitar a interface ens33 ou outra que você precisa.

$ ip link set ens33 down

Por fim, verificamos como está o status da interface:

$ ip -j -p link show ens33 | grep operstate

Como remover todos os IPs de uma interface de rede

Em um dos exemplos anteriores vimos como remover um endereço IP com o auxílio do comando del.

Mas, se houver mais de um IP na mesma interface, podemos utilizar a instrução flush para liberar tudo de uma vez da interface.

$ sudo ip addr flush ens33

Enfim, você confere se houve a remoção dessa forma:

$ ip -j -p addr show ens33
ip addr show

Na saída em questão, o campo addr_info está vazio, indicando que não há IP algum vinculado.

Como consultar tabela de roteamento no Linux

A tabela de roteamento é responsável por salvar informações necessárias para que os dados trafegados cheguem corretamente no destino.

Você pode usar o comando ip junto com o auxiliar route para visualizar a rota.

$ ip route show

Na saída em questão, podemos observar que a tabela começa indicando o destino, assim como a última coluna indica a fonte do endereço IP.

Observação: A interface precisa estar habilitada (UP) para que seja possível exibir a rota.

Como adicionar rota estática à tabela de roteamento

Por vezes, você precisará adicionar rotas estáticas quando o trafego de dados não estiver passando pelo gateway, assim como adicionar rota estática para melhorar o tráfego entre origem e destino.

Então, você precisará usar a seguinte sintaxe de comando:

$ ip route add 192.168.153.0/24 via 192.168.153.1 dev ens33

Por fim, você pode conferir se a rota foi criada:

$ ip route show

Como remover a rota estática

Vamos remover a rota estática anteriormente criada. Desse modo, faremos uso do já conhecido comando auxiliar del:

$ ip route del 192.168.153.0/24 via 192.168.153.1 dev ens33

Por fim, você pode verificar se a entrada foi removida como desejado:

$ ip route show

Como adicionar rota estática de forma permanente

Todas as rotas que você criar serão perdidas quando o Linux for reiniciado.

Para que não aconteça essa perda, você pode criar as rotas de forma permanente.

Então, para essa configuração permanente no Ubuntu edite o arquivo no caminho /etc/netplan/01-network-manager-all.yaml

Em “routes:” mude o valor de “to: default” para o range de IP desejado. Neste exemplo, adicionei a rede 10.0.0.0/24.

Em seguida, aplique a modificação com o comando netplan apply.

Para distribuições Linux baseadas em had hat:

$ vi /etc/sysconfig/network-scripts/ifcfg-ens160

Em seguida, adicione a linha a seguir e salve o arquivo.

192.168.153.1 via 192.168.153.10 dev ens160

Para sistemas baseados em Debian execute o comando:

$ ip route add 192.168.0.0/24 via 192.168.153.129 dev ens33

Por fim, confira se a rota foi criada:

$ ip route show

Como adicionar Default Gateway com o comando IP

O default gateway possui função importante na estrutura de conexão à rede. Nesse sentido, ele entra em ação sempre quando a tabela de rotas não possui nenhuma informação do destinatário.

O gateway pode ser configurado de forma global ou em interface de rede específica.

O default gateway nos proporciona vantagens, principalmente por nosso sistema ter mais de uma interface de rede.

Você pode incluí-lo como mostrado a seguir.

Mas antes, vamos definir a interface ens33 como um gateway:

$ sudo ip route add default via 192.168.153.1

Então, podemos conferir se a configuração entrou em vigor:

$ ip route show

O mesmo comando vale para sistemas baseados em Red Hat:

$ sudo ip route add default via 192.168.153.1
$ ip route show

Mas vale lembrar que estamos executando estes procedimentos em uma máquina de testes.

Fique com a atenção redobrada quando usar estes comandos em uma máquina em produção.

Como remover determinado default gateway

Quando um gateway já não é mais necessário ou foi configurado incorretamente, temos a necessidade de removê-lo.

Para que você possa executar essa ação,  execute o comando:

$ sudo ip route del default

Então, executamos o já conhecido comando abaixo, para que possamos confirmar se a exclusão foi feita corretamente.

$ ip route show

Como acessar o Cache da tabela ARP

O cache ARP é responsável por relacionar endereços MAC com seus respectivos endereços IP.

Quando ocasionalmente você precisar de acesso ao cache ARP,  deve-se usar o comando ip acompanhado do comando auxiliar neigh.

Sintaxe do comando:

$ ip neigh show

Criando entrada ARP manualmente

É possível criarmos entradas na tabela ARP, para quando isso for uma necessidade específica para a relação entre IP e endereço físico.

Assim, a sintaxe para você usar deverá ter essa estrutura:

$ ip neigh add 192.168.153.4 lladdr 02:42:e3:40:a6:b1 dev ens33

Em seguida, veja se a entrada criada consta no cache ARP:

$ ip neigh show

Removendo entrada ARP manualmente com o comando ip

Para a exclusão de entradas na tabela ARP, você pode mais uma vez fazer uso do comando auxiliar del.

Primeiramente, vamos remover a entrada anteriormente criada:

$ sudo ip neigh del 192.168.153.4 dev ens33

Por fim, conferimos se a entrada foi realmente excluída, consultando através do comando abaixo:

$ ip neigh show

Liberando entradas da tabela ARP com o comando ip

Com a ajuda do comando auxiliar flush, você será capaz de limpar as entradas da tabela ARP.

Primeiramente, vamos incluir alguns registros na tabela ARP e entender como a exclusão ocorre.

Inicie a sintaxe do comando com ip neigh add seguido do IP e demais parâmetros.

Por exemplo:

$ ip neigh add 192.168.153.9 lladdr 05:60:d1:70:b2:b1 dev ens33 nud stale

Repita para os IPs e MACs que desejar, ou como em nosso exemplo:

192.168.153.10 lladdr 05:60:d1:70:b2:b2 dev ens33 nud stale
192.168.153.11 lladdr 05:60:d1:70:b2:b3 dev ens33 nud stale

Em seguida, você pode conferir se realmente as foram criadas:

$ ip neigh show

Posteriormente, remova os registros criados. Para isso, use o comando:

$ sudo ip neigh flush all

Finalmente, confira como estão as entradas após essa remoção:

$ ip neigh show

Como alterar o MTU de uma conexão de rede com o comando ip

O MTU é o item de configuração responsável por definir qual será o tamanho máximo de um pacote transferido entrem origem e destino durante uma comunicação

Nesse sentido, alterar a configuração do MTU é útil quando temos alguma necessidade específica para otimizar o desempenho de cada pacote enviado e recebido.

Então, você pode começar localizando o valor do MTU definido na interface de sua maquina:

$ ip -j -p link show ens33 | grep mtu

Em seguida, atualize o tamanho da MTU da interface de rede ens33 para 3000:

$ ip link set mtu 3000 dev ens33

Finalmente, verifique se o MTU foi atualizado com sucesso:

$ ip -j -p link show ens33 | grep mtu

Alterando o MAC da rede com o comando ip no Linux

Às vezes, podemos nos deparar com conflito de endereço MAC e para solucionar, precisamos mudar o endereço MAC da interface. Nesse sentido, o comando ip junto com o comando auxiliar set nos permite aplicar a correção necessária.

Para que você inicie a mudança, comece listando o endereço MAC da interface desejada:

$ ip -j -p link show ens33 | grep address

Logo após, você pode alterar o endereço MAC da interface com o seguinte comando:

$ ip link set address 02:42:ac:13:01:03 dev ens33

Então, confira se o MAC mudou:

$ ip -j -p link show ens33 | grep address

Consideraçōes finais

Neste artigo, exploramos diversos exemplos práticos envolvendo o uso do comando ip no Linux.

Essas configurações são bastante usadas no dia a dia da administração de uma rede.

Por fim, você gostaria de saber mais sobre o comando ip? A qualquer momento digite o comando man ip e confira outros uso dessa ferramenta.

$ man ip

Referências:
https://datatracker.ietf.org/doc/html/rfc3549
https://manpages.ubuntu.com/manpages/focal/man7/ip.7.html

https://manpages.ubuntu.com/manpages/focal/man7/ip.7.html

Este artigo foi útil?

Obrigado pela resposta!
Picture of Marcio S

Marcio S

Ganhe 30% OFF

Indique seu nome e e-mail,e ganhe um cupom de desconto de 30% para sempre na Homehost!