Como usar o comando ip no Linux

Um prompt do Bash em um laptop Linux estilo Ubuntu em uma janela de terminal.
Fatmawati Achmad Zaenuri / Shutterstock

Você pode configurar endereços IP, interfaces de rede e regras de roteamento dinamicamente com o ipcomando Linux . Mostraremos como você pode usar esta substituição moderna do clássico (e agora obsoleto)  ifconfig.

Como funciona o comando ip

Com o ipcomando, você pode  ajustar a maneira como um computador Linux  lida com endereços IP, controladores de interfaces de rede (NICs) e regras de roteamento . As alterações também têm efeito imediato – você não precisa reiniciar. O ipcomando pode fazer muito mais do que isso, mas vamos nos concentrar nos usos mais comuns neste artigo.

O ipcomando tem muitos subcomandos, cada um dos quais funciona em um tipo de objeto, como endereços IP e rotas. Existem, por sua vez, muitas opções para cada um desses objetos. É essa riqueza de funcionalidades que dá ao ipcomando a granularidade de que você precisa para realizar tarefas que podem ser delicadas. Isso não é trabalho de machado – requer um conjunto de bisturis.

Veremos os seguintes objetos:

  • Endereço : endereços IP e intervalos.
  • Link : interfaces de rede, como conexões com fio e adaptadores Wi-Fi.
  • Rota : As regras que gerenciam o roteamento do tráfego enviado addresses via interfaces ( links).

Usando ip com endereços

Obviamente, você primeiro precisa saber com quais configurações está lidando. Para descobrir quais endereços IP seu computador possui, use o ipcomando com o objeto address. A ação padrão é show, que lista os endereços IP. Você também pode omitir  show e abreviar address como “addr” ou mesmo “a”.

Os seguintes comandos são todos equivalentes:

mostrar endereço ip
ip addr show
endereço de ip
ip a

O comando "ip addr" em uma janela de terminal.

Vemos dois endereços IP, junto com muitas outras informações. Os endereços IP são associados a controladores de interface de rede (NICs). O ipcomando tenta ser útil e fornece várias informações sobre a interface também.

O primeiro endereço IP é o endereço de loopback (interno) usado para se comunicar no computador. O segundo é o endereço IP (externo) real que o computador possui na rede local (LAN).

Vamos detalhar todas as informações que recebemos:

  • lo : O nome da interface de rede como uma string.
  • <LOOPBACK, UP, LOWER_UP>: Esta é uma interface de loopback. É  UP, o que significa que está operacional. A camada de rede física  (camada um) também está ativa.
  • mtu 65536: A unidade máxima de transferência. Este é o tamanho do maior bloco de dados que esta interface pode transmitir.
  • qdisc noqueue: A qdiscé um mecanismo de enfileiramento. Ele agenda a transmissão de pacotes. Existem diferentes técnicas de enfileiramento chamadas disciplinas. A noqueuedisciplina significa “enviar instantaneamente, não fazer fila”. Esta é a qdiscdisciplina padrão para dispositivos virtuais, como o endereço de loopback.
  • estado DESCONHECIDO: Pode ser DOWN(a interface de rede não está operacional), UNKNOWN(a interface de rede está operacional, mas nada está conectado) ou  UP(a rede está operacional e há uma conexão).
  • padrão do grupo: as interfaces podem ser agrupadas logicamente. O padrão é colocá-los todos em um grupo chamado “padrão”.
  • qlen 1000: O comprimento máximo da fila de transmissão.
  • link / loopback: O endereço de controle de acesso à mídia (MAC) da interface.
  • inet 127.0.0.1/8: O endereço IP versão 4. A parte do endereço após a barra ( /) é a notação Classless Inter-Domain Routing (CIDR) que representa a máscara de sub-rede. Indica quantos bits contíguos iniciais são definidos como um na máscara de sub-rede. O valor de oito significa oito bits. Oito bits definidos como um representam 255 em binário, então a máscara de sub-rede é 255.0.0.0.
  • host de escopo: O escopo do endereço IP. Este endereço IP só é válido dentro do computador (o “host”).
  • lo: A interface com a qual este endereço IP está associado.
  • valid_lft: vida útil válida. Para um endereço IP versão 4 IP alocado pelo protocolo de configuração dinâmica de hosts  (DHCP), este é o período de tempo em que o endereço IP é considerado válido e capaz de fazer e aceitar solicitações de conexão.
  • preferred_lft: vida útil preferencial. Para um endereço IP de versão 4 IP alocado por DHCP, este é o período de tempo que o endereço IP pode ser usado sem restrições. Isso nunca deve ser maior do que o valid_lftvalor.
  • inet6 : O endereço IP versão 6, scope, valid_lft, e preferred_lft.

A interface física é mais interessante, como mostraremos a seguir:

  • enp0s3: O nome da interface de rede como uma string. O “en” significa ethernet, “p0” é o número do barramento da placa ethernet e “s3” é o número do slot.
  • <BROADCAST, MULTICAST, UP, LOWER_UP>: Esta interface suporta broad- e multicast , e a interface é UP(operacional e conectada). A camada de hardware da rede (camada um) também UP.
  • mtu 1500: A unidade máxima de transferência que esta interface suporta.
  • qdisc fq_codel: O agendador está usando uma disciplina chamada “Fair Queuing, Controlled Delay”. Ele foi projetado para fornecer uma parte justa da largura de banda para todos os fluxos de tráfego que usam a fila.
  • estado UP: A interface está operacional e conectada.
  • grupo padrão: Esta interface está no grupo de interface “padrão”.
  • qlen 1000:  O comprimento máximo da fila de transmissão.
  • link / ether: O endereço MAC da interface.
  • inet 192.168.4.26/24: O endereço IP versão 4. O “/ 24” nos diz que há 24 bits principais contíguos definidos como um na máscara de sub-rede. São três grupos de oito bits. Um número binário de oito bits é igual a 255; portanto, a máscara de sub-rede é 255.255.255.0.
  • brd 192.168.4.255: O endereço de broadcast para esta sub-rede.
  • escopo global: O endereço IP é válido em qualquer lugar nesta rede.
  • dinâmico: o endereço IP é perdido quando a interface é desativada.
  • noprefixroute: Não crie uma rota na tabela de rotas quando este endereço IP for adicionado. Alguém tem que adicionar uma rota manualmente se quiser usar uma com este endereço IP. Da mesma forma, se este endereço IP for excluído, não procure uma rota para excluir.
  • enp0s3:  a interface com a qual este endereço IP está associado.
  • valid_lft: vida útil válida. A hora em que o endereço IP será considerado válido; 86.240 segundos são 23 horas e 57 minutos.
  • preferred_lft: vida útil preferencial. O horário em que o endereço IP funcionará sem quaisquer restrições.
  • inet6: O endereço IP versão 6, scope, valid_lft, e preferred_lft.

Exibir apenas endereços IPv4 ou IPv6

Se quiser limitar a saída aos endereços IP da versão 4, você pode usar a -4opção da seguinte maneira:

ip -4 addr

O comando "ip -4 addr" em uma janela de terminal.

Se quiser limitar a saída aos endereços IP da versão 6, você pode usar a -6 opção da seguinte maneira:

ip -6 addr

O comando "ip -6 addr" em uma janela de terminal.

Exibir informações para uma única interface

Se você quiser ver as informações de endereço IP para uma única interface, você pode usar os showe devopções, e nomeie a interface, como mostrado abaixo:

endereço ip mostrar dev lo
ip addr show dev enp0s3

Os comandos "ip addr show dev lo" e "ip addr show dev enp0s3" em uma janela de terminal.

Você também pode usar o sinalizador -4ou -6para refinar ainda mais a saída, de forma que você veja apenas o que está interessado.

Recomendado:  Como usar o “Modo Lockdown” no Android

Se você deseja ver as informações de IP versão 4 relacionadas aos endereços na interface enp0s3, digite o seguinte comando:

ip -4 addr show dev enp0s3

O comando "ip -4 addr show dev enp0s3" em uma janela de terminal.

Adicionando um endereço IP

Você pode usar as opções adde devpara adicionar um endereço IP a uma interface. Você apenas precisa dizer ao ipcomando qual endereço IP adicionar e a qual interface adicioná-lo.

Vamos adicionar o endereço IP 192.168.4.44 à enp0s3interface. Também precisamos fornecer a notação CIDR para a máscara de sub-rede.

Nós digitamos o seguinte:

sudo ip addr add 192.168.4.44/24 dev enp0s3

O comando "sudo ip addr add 192.168.4.44/24 dev enp0s3" em uma janela de terminal.

Nós digitamos o seguinte para dar uma outra olhada nos endereços IP da versão 4 nesta interface:

ip -4 addr show dev enp0s3

O comando "ip -4 addr show dev enp0s3" em uma janela de terminal.

O novo endereço IP está presente nesta interface de rede. Pegamos outro computador e usamos o seguinte comando para ver se podemos  pingo novo endereço IP :

ping 192.168.4.44

O comando "ping 192.168.4.44" em uma janela de terminal.

O endereço IP responde e envia de volta confirmações aos pings. Nosso novo endereço IP está instalado e funcionando após um simples ipcomando.

Excluindo um endereço IP

Para excluir um endereço IP, o comando é quase a mesma que a de adicionar um, a não ser que você substitua add com  del, como mostrado abaixo:

sudo ip addr del 192.168.4.44/24 dev enp0s3

O comando "sudo ip addr del 192.168.4.44/24 dev enp0s3" em uma janela de terminal.

Se digitarmos o seguinte para verificar, vemos que o novo endereço IP foi excluído:

ip -4 addr show dev enp0s3

O comando "ip -4 addr show dev enp0s3" em uma janela de terminal.

Usando ip com interfaces de rede

Você usa o linkobjeto para inspecionar e trabalhar com interfaces de rede. Digite o seguinte comando para ver as interfaces instaladas em seu computador:

ip link show

O comando "ip link show" em uma janela de terminal.

Para ver uma única interface de rede, basta adicionar seu nome ao comando, conforme mostrado abaixo:

ip link show enp0s3

O comando "ip link show enp0s3" em uma janela de terminal.

Iniciando e interrompendo links

Você pode usar a setopção com  upou down para parar ou iniciar uma opção de interface de rede. Você também deve usar sudo, conforme mostrado abaixo:

sudo ip link definido enp0s3 para baixo

O comando "sudo ip link set enp0s3 down" em uma janela de terminal.

Nós digitamos o seguinte para dar uma olhada na interface de rede:

ip link show enp0s3

O comando "ip link show enp0s3" em uma janela de terminal.

O estado da interface de rede é DOWN. Podemos usar a upopção de reiniciar uma interface de rede, conforme mostrado abaixo:

sudo ip link set enp0s3 up

O comando "sudo ip link set enp0s3 up" em uma janela de terminal.

Digite o seguinte para fazer outra verificação rápida do estado da interface de rede:

ip link show enp0s3

O comando "ip link show enp0s3" em uma janela de terminal.

A interface de rede foi reiniciada e o estado é mostrado como UP.

Usando ip com rotas

Com o routeobjeto, você pode inspecionar e manipular rotas. As rotas definem para onde o tráfego de rede para diferentes endereços IP é encaminhado e por meio de qual interface de rede.

Recomendado:  Como colocar um link em sua biografia do Instagram

Se o computador ou dispositivo de destino compartilhar uma rede com o computador de envio, o computador de envio pode encaminhar o pacote diretamente para ele.

No entanto, se o dispositivo de destino não estiver conectado diretamente, o computador de envio encaminha o pacote ao roteador padrão. O roteador decide para onde enviar o pacote.

Para ver as rotas definidas em seu computador, digite o seguinte comando:

rota de ip

O comando "ip route" em uma janela de terminal.

Vamos dar uma olhada nas informações que recebemos:

  • padrão:  a regra padrão. Esta rota é usada se nenhuma das outras regras corresponder ao que está sendo enviado.
  • via 192.168.4.1: encaminha os pacotes através do dispositivo em 192.168.4.1. Este é o endereço IP do roteador padrão nesta rede.
  • dev enp0s3: Use esta interface de rede para enviar os pacotes ao roteador.
  • proto  dhcp: O identificador do protocolo de roteamento. DHCP significa que as rotas serão determinadas dinamicamente.
  • métrica 100:  uma indicação da preferência da rota em comparação com outras. Rotas com métricas mais baixas são preferencialmente usadas sobre aquelas com métricas mais altas. Você pode usar isso para dar preferência a uma interface de rede com fio em vez de uma interface Wi-Fi.

A segunda rota controla o tráfego para o intervalo de IP 169.254.0.0/16. Esta é uma rede de configuração zero , o que significa que ela tenta se autoconfigurar para comunicação na intranet. No entanto, você não pode usá-lo para enviar pacotes para fora da rede imediata.

O princípio por trás das redes de configuração zero é que elas não dependem do DHCP e de outros serviços presentes e ativos. Eles só precisam ver o TCP / IP para se identificarem com cada um dos outros dispositivos na rede.

Recomendado:  Como usar o “Modo Lockdown” no Android

Vamos dar uma olhada:

  • 169.254.0.0/16: O intervalo de endereços IP que esta regra de roteamento governa. Se o computador se comunica neste intervalo de IP, esta regra entra em ação.
  • dev enp0s3: A interface de rede que o tráfego controlado por esta rota usará.
  • link de escopo : O escopo é link, o que significa que o escopo é limitado à rede à qual este computador está conectado diretamente.
  • métrica 1000 : esta é uma métrica alta e não é uma rota preferencial.

A terceira rota controla o tráfego para o intervalo de endereços IP de 192.168.4.0/24. Este é o intervalo de endereços IP da rede local à qual este computador está conectado. É para comunicação através, mas dentro, dessa rede.

Vamos decompô-lo:

  • 192.168.4.1/24:  O intervalo de endereços IP que esta regra de roteamento governa. Se o computador se comunicar dentro dessa faixa de IP, essa regra dispara e controla o roteamento do pacote.
  • dev enp0s3: A interface por meio da qual esta rota enviará pacotes.
  • proto kernel: A rota criada pelo kernel durante a configuração automática.
  • link de escopo:  O escopo é link, o que significa que o escopo é limitado à rede imediata à qual este computador está conectado.
  • src 192.168.4.26: O endereço IP de onde os pacotes enviados por esta rota são originados.
  • métrica 100: esta métrica baixa indica uma rota preferida.

Exibir informações para uma única rota

Se você quiser se concentrar nos detalhes de uma rota específica, pode adicionar a listopção e o intervalo de endereços IP da rota ao comando da seguinte maneira:

lista de rotas ip 192.168.4.0/24

O comando "ip route list 192.168.4.0/24" em uma janela de terminal.

Adicionando uma Rota

Acabamos de adicionar uma nova placa de interface de rede a este computador. Digitamos o seguinte e vemos que é mostrado como enp0s8:

ip link show

O comando "ip link show" em uma janela de terminal.

Vamos adicionar uma nova rota para o computador para usar esta nova interface. Primeiro, digitamos o seguinte para associar um endereço IP à interface:

sudo ip addr add 192.168.121.1/24 dev enp0s8

O comando "sudo ip addr add 192.168.121.1/24 dev enp0s8" em uma janela de terminal.

Uma rota padrão usando o endereço IP existente é adicionada à nova interface. Usamos a deleteopção, conforme mostrado abaixo, para excluir a rota e fornecer seus detalhes:

sudo ip route delete default via 192.168.4.1 dev enp0s8

O comando "sudo ip route delete default via 192.168.4.1 dev enp0s8" em uma janela de terminal.

Agora usaremos a addopção de adicionar nossa nova rota. A nova interface controlará o tráfego de rede no intervalo de endereços IP 192.168.121.0/24. Daremos uma métrica de 100; como será a única rota a lidar com esse tráfego, a métrica é bastante acadêmica.

Nós digitamos o seguinte:

sudo ip route add 192.168.121.0/24 dev enp0s8 métrico 100

O comando "sudo ip route add 192.168.121.0/24 dev enp0s8 metric 100" em uma janela de terminal.

Agora, digitamos o seguinte para ver o que nos dá:

rota de ip

O comando "ip route" em uma janela de terminal.

Nossa nova rota está pronta. No entanto, ainda temos a rota 192.168.4.0/24 que aponta para a interface – enp0s8digitamos o seguinte para removê-la:

sudo ip route delete 192.168.4.0/24 dev enp0s8

O comando "sudo ip route delete 192.168.4.0/24 dev enp0s8" em uma janela de terminal.

Devemos agora ter uma nova rota que aponta todo o tráfego destinado ao intervalo de IP 192.168.121.0/24 por meio da interface enp0s8. Também deve ser a única rota que usa nossa nova interface.

Nós digitamos o seguinte para confirmar:

rota de ip

O comando "ip route" em uma janela de terminal.

Rota percorrida, não enraizada

A grande vantagem desses comandos é que eles não são permanentes. Se você quiser limpá-los, apenas reinicie o sistema. Isso significa que você pode experimentá-los até que funcionem da maneira que desejar. E é uma coisa muito boa se você bagunçar terrivelmente o seu sistema – uma simples reinicialização restaurará a ordem.

Por outro lado, se você deseja que as alterações sejam permanentes, é necessário trabalhar mais um pouco. Exatamente o que varia dependendo da família de distribuição, mas todos envolvem a alteração de arquivos de configuração.

Desta forma, porém, você pode testar os comandos antes de tornar qualquer coisa permanente.