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.
Conteúdo
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:
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:
Após alteração de DHCP para IP fixo:
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:
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:
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:
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:
Ubuntu
$ ip addr add 192.168.0.5/32 dev ens33
Dessa forma, a saída esperada deve ser semelhante a:
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:
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
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
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
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
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
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
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
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
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
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