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.