Pesquisa de site

24 comandos “IP” úteis para configurar interfaces de rede


Resumo: Neste guia, discutiremos alguns exemplos práticos do comando ip. Ao final deste guia, os usuários serão capazes de executar tarefas de rede com eficiência no Linux a partir da interface de linha de comando.

Os administradores de sistema geralmente precisam executar tarefas de rede em servidores Linux. Há uma variedade de ferramentas gráficas e de linha de comando disponíveis no mercado. No entanto, a maioria dos usuários de Linux prefere usar o comando ip devido à sua simplicidade e rica funcionalidade.

O comando ip é um novo utilitário de linha de comando de rede usado para atribuir um endereço IP a uma interface de rede ou configurar/atualizar variáveis de rede úteis em um sistema Linux.

Faz parte do pacote iproute2 e oferece diversas tarefas de administração de rede, como ativar ou desativar interfaces de rede, atribuir e remover endereços IP e rotas, gerenciar cache ARP e muito mais.

O comando ip é muito semelhante ao antigo comando ifconfig, mas é muito mais poderoso com mais funções e capacidades adicionadas a ele.

O comando ifconfig foi descontinuado e substituído pelo comando ip em todas as distribuições Linux modernas. No entanto, o comando ifconfig ainda funciona e está disponível para a maioria das distribuições Linux.

Nota: Faça um backup do arquivo de configuração antes de fazer qualquer alteração.

1. Configure permanentemente o endereço IP estático no Linux

Para configurar permanentemente um endereço IP estático no Linux, você precisa atualizar ou editar o arquivo de configuração de rede para atribuir um endereço IP estático a um sistema. Você deve ser um superusuário com um comando su (alternar usuário) no terminal ou prompt de comando.

Definir endereço IP estático em sistemas RHEL

Abra e edite os arquivos de configuração de rede para (eth0 ou eth1) usando seu editor de texto favorito. Por exemplo, atribuir endereço IP à interface eth0 como segue em distribuições baseadas em RHEL.

vi /etc/sysconfig/network-scripts/ifcfg-eth0     [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]

Definir endereço IP estático em sistemas Debian

Para configurar o endereço IP estático permanente, você precisa modificar o arquivo de configuração da interface de rede /etc/network/interfaces para fazer alterações permanentes conforme mostrado abaixo para distribuições baseadas em Debian.

sudo nano /etc/network/interfaces     [On Debian, Ubuntu and Mint]

Em seguida, reinicie os serviços de rede após inserir todos os detalhes usando o seguinte comando.

sudo systemctl restart networking

2. Configuração temporária de endereço IP estático no Linux

Para configurações de rede temporárias, você pode usar o comando ip para atribuir um endereço IP a uma interface específica (eth2) instantaneamente.

ip addr add 172.19.1.10/24 dev eth2
OR
sudo ip addr add 172.19.1.10/24 dev eth2

Nota: Infelizmente todas essas configurações serão perdidas após a reinicialização do sistema.

3. Como exibir todas as interfaces de rede

No comando ip, o objeto link representa a interface de rede. Podemos usar o comando show para exibir todas as interfaces de rede.

Agora, vamos exibir todas as interfaces de rede usando o seguinte comando:

ip link show

A saída acima mostra os detalhes de todas as interfaces de rede, como nome da interface, sinalizadores, status, endereço do link, endereço de broadcast, etc.

4. Como verificar o endereço IP de uma interface de rede específica

Para obter informações detalhadas de sua interface de rede individual, como endereço IP e informações de endereço MAC, use o seguinte comando conforme mostrado abaixo.

ip link show eth2

Até agora, usamos o objeto link que mostra informações detalhadas sobre as interfaces de rede. No entanto, não mostra o endereço IP associado à interface de rede. Para superar essa limitação, podemos usar o objeto addr com o comando ip.

Vamos entender isso com um exemplo.

ip addr show

Aqui podemos ver que agora a saída mostra os endereços IP de todas as interfaces de rede junto com outros detalhes.

Para exibir o endereço IP da interface de rede individual, basta fornecer o nome da interface de rede como argumento para o comando.

ip addr show eth2

5. Como exibir o endereço IP em saída colorida

O comando ip mostra informações detalhadas sobre os objetos da rede. No entanto, às vezes precisamos dar uma olhada nas informações limitadas. Nesses casos, podemos ativar a saída colorida. Esta opção destaca detalhes importantes em cores diferentes.

Vamos usar a opção --color do comando para exibir a saída em cores diferentes:

ip --color addr show eth2

Na saída acima, podemos ver que o nome da interface, o endereço Ethernet e o estado estão destacados em cores diferentes.

6. Como exibir o endereço IP no formato JSON

Nos exemplos anteriores, vimos que o comando ip mostra informações significativas. No entanto, não é uma tarefa fácil analisar a saída bruta e extrair informações significativas usando scripts rudimentares. Nesses casos, podemos instruir o comando ip para gerar a saída em formato JSON.

Então, vamos usar a opção -j com o comando para exibir a mesma saída em formato JSON:

ip -j link show eth2

Este método é útil ao fazer automação porque JSON é um formato amplamente aceito e há muitas bibliotecas/ferramentas de analisador JSON disponíveis em várias linguagens de programação.

7. Como tornar a saída JSON mais legível

No exemplo anterior, usamos a opção -j para exibir a saída em formato JSON. Este formato JSON padrão é compacto e economiza espaço. No entanto, a saída não é fácil de ler devido à falta de recuo.

Para superar essa limitação, podemos usar a opção -p que torna a saída mais legível ao indentá-la. Vamos entender isso com o exemplo abaixo:

ip -j -p link show eth2

Aqui, podemos ver que a mesma saída é muito mais legível em comparação com os exemplos anteriores.

8. Como remover um endereço IP da interface de rede

No exemplo anterior, usamos o subcomando add para atribuir um endereço IP. De forma semelhante, podemos usar o subcomando del para remover um endereço IP específico.

O comando a seguir removerá um endereço IP atribuído da interface fornecida (eth2).

ip addr del 172.19.1.10/24 dev eth2
OR
sudo ip addr del 172.19.1.10/24 dev eth2

Agora, vamos verificar se o endereço IP foi removido:

ip -j -p addr show eth2

Na saída acima, podemos ver que a interface de rede eth2 agora possui apenas um endereço IP.

9. Como habilitar a interface de rede

O sinalizador “up” com nome de interface (eth2) habilita uma interface de rede. Por exemplo, o comando a seguir ativará a interface de rede eth2.

ip link set eth2 up
OR
sudo ip link set dev eth2 up

Agora, vamos verificar o status atualizado:

ip -j -p link show eth2 | grep operstate

10. Como desativar a interface de rede

O sinalizador “down ” com o nome da interface (eth2) desativa uma interface de rede. Por exemplo, o comando a seguir desativará a interface de rede eth2.

ip link set eth2 down
OR
sudo ip link set eth2 down

Agora, vamos verificar o status da interface de rede eth2:

ip -j -p link show eth2 | grep operstate

A saída acima mostra o estado modificado da interface de rede.

11. Como liberar endereços IP da interface de rede

No exemplo anterior, vimos como usar um subcomando del para remover um endereço IP. No entanto, às vezes precisamos remover todos os endereços IP da interface de rede específica. Nesses casos, podemos usar o subcomando flush.

Primeiro, use o subcomando flush para remover todos os endereços IP da interface de rede eth2:

sudo ip addr flush eth2

Agora, vamos verificar se todos os endereços IP da interface de rede eth2 foram removidos:

ip -j -p addr show eth2

Na saída acima, o campo addr_info mostra o array JSON vazio. Isso indica que não há nenhum endereço IP associado à interface de rede eth2.

12. Como verifico a tabela de roteamento

Uma tabela de roteamento armazena as informações necessárias para encaminhar um pacote de rede ao destino correto. Podemos usar o objeto route do comando ip para exibir as regras de roteamento.

Vamos usar o comando abaixo para listar todas as regras da tabela de roteamento:

ip route show

Na saída acima, a primeira coluna representa o destino, enquanto a última coluna representa o endereço IP de origem.

13. Como adiciono uma nova rota estática

Por que você precisa adicionar rotas estáticas ou manuais, porque o tráfego não deve passar pelo gateway padrão? Precisamos adicionar rotas estáticas para passar o tráfego da melhor maneira para chegar ao destino.

sudo ip route add 172.19.1.0/24 dev eth2 proto kernel scope link src 172.19.1.2

Agora, vamos verificar se a entrada foi adicionada com sucesso:

ip route show

15. Como remover rota estática

O subcomando del remove uma entrada específica da tabela de roteamento. Por exemplo, o comando abaixo remove a entrada da rota do dispositivo eth2:

sudo ip route del 172.19.1.0/24

Agora, vamos verificar se a entrada foi removida com sucesso:

ip route show

16. Como adiciono rotas estáticas permanentes

Todas as rotas acima serão perdidas após a reinicialização do sistema. Para adicionar uma rota estática permanente, edite o arquivo /etc/sysconfig/network-scripts/route-eth2 (estamos armazenando uma rota estática para (eth2). Por padrão, o O arquivo route-eth2 não estará lá e precisará ser criado.

Definir rota permanente em sistemas RHEL

vi /etc/sysconfig/network-scripts/route-eth2

e adicione as seguintes linhas e salve e saia.

172.19.1.0/24 via 172.19.1.2 dev eth2

Definir rota permanente em sistemas Debian

Abra o arquivo /etc/network/interfaces e no final adicione as rotas estáticas de persistência. Os endereços IP podem diferir em seu ambiente.

sudo vi /etc/network/interfaces
auto eth2
iface eth2 inet static
address 172.19.50.2
netmask 255.255.255.0
gateway 172.19.50.100
#########{Static Route}###########
up ip route add 172.19.1.0/24 via 172.19.1.2 dev eth2

Em seguida, reinicie os serviços de rede após inserir todos os detalhes usando o seguinte comando.

sudo systemctl restart networking

17. Como adiciono o gateway padrão

Na rede, o gateway padrão desempenha um papel importante. É usado quando a tabela de roteamento não contém nenhuma informação sobre o destino.

O gateway padrão pode ser especificado globalmente ou para arquivos de configuração específicos da interface. A vantagem do gateway padrão é que temos mais de uma NIC presente no sistema. Você pode adicionar o gateway padrão instantaneamente, conforme mostrado abaixo do comando.

Primeiro, vamos adicionar uma interface de rede eth0 como gateway padrão:

sudo ip route add default via 172.17.0.1

Agora, vamos verificar a configuração do gateway padrão usando o seguinte comando:

ip route show

Observe que executamos este comando em uma máquina de teste. Tenha cuidado ao usar este comando no ambiente de produção.

18. Como remover um gateway padrão

Podemos usar o seguinte comando para remover o gateway padrão:

sudo ip route del default

Agora, vamos listar a tabela de roteamento para verificar se o gateway padrão foi removido:

ip route show

19. Como exibir o cache ARP

ARP significa Protocolo de resolução de endereço, que é usado para encontrar o endereço MAC associado ao endereço IP específico.

Podemos usar o objeto neigh com o comando ip para exibir o cache ARP:

ip neigh show

No comando acima, o neigh representa objetos vizinhos.

20. Como adicionar uma entrada ARP

Para criar uma nova entrada ARP, podemos usar o subcomando add com o objeto neigh.

sudo ip neigh add 172.19.1.0 lladdr 02:42:e3:40:a6:b1 dev eth2

Agora, vamos listar as entradas do cache ARP:

ip neigh show

Na saída acima, podemos ver a nova entrada para a interface de rede eth2.

21. Como remover uma entrada ARP

Como outros objetos de rede, podemos usar o subcomando del para remover a entrada ARP. Por exemplo, o comando abaixo remove a entrada ARP da interface de rede eth2:

sudo ip neigh del 172.19.1.0 dev eth2

Agora, vamos verificar se a entrada foi removida listando o cache ARP:

ip neigh show 

22. Como liberar as entradas ARP

Podemos usar o subcomando flush para remover múltiplas entradas ARP. Para entender isso, primeiro adicione algumas entradas ARP com o estado STALE:

sudo ip neigh add 172.19.1.0 lladdr 02:42:e3:40:a6:b1 dev eth2 nud stale
sudo ip neigh add 172.19.2.0 lladdr 02:42:e3:40:a6:b2 dev eth2 nud stale
sudo ip neigh add 172.19.3.0 lladdr 02:42:e3:40:a6:b3 dev eth2 nud stale

Em seguida, verifique se as novas entradas foram adicionadas com sucesso:

ip neigh show

Em seguida, limpe todas as entradas usando o comando abaixo:

sudo ip neigh flush all

Por fim, verifique se todas as entradas foram removidas:

ip neigh show

23. Como definir MTU para interface de rede

MTU significa Unidade Máxima de Transmissão, que representa o maior tamanho de pacote que pode ser transmitido em uma única transação. Podemos manipular o tamanho do MTU de acordo com nossos requisitos de desempenho.

Primeiro, vamos encontrar o MTU da interface de rede eth2:

ip -j -p link show eth2 | grep mtu

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

sudo ip link set mtu 3000 dev eth2

Finalmente, verifique se o MTU foi atualizado com sucesso:

ip -j -p link show eth2 | grep mtu

24. Como alterar o endereço Mac da rede

O comando ip nos permite alterar o endereço MAC da interface de rede. Para conseguir isso, podemos usar o subcomando set com o objeto link:

Primeiro, liste o endereço MAC atual da interface de rede eth2:

ip -j -p link show eth2 | grep address

A seguir, altere o endereço MAC da interface de rede usando o comando abaixo:

sudo ip link set dev eth2 address 02:42:ac:13:01:03

Por fim, verifique se o endereço MAC foi alterado:

ip -j -p link show eth2 | grep address

Consulte a página do manual fazendo man ip no terminal/prompt de comando para saber mais sobre o comando IP.

man ip
Conclusão

Neste artigo, discutimos alguns exemplos comuns do comando ip. Pode-se usar esses exemplos no dia a dia para realizar administração de rede.

Você conhece algum outro exemplo melhor do comando ip no Linux? Deixe-nos saber sua opinião nos comentários abaixo.