O comando ip é uma ferramenta obrigatória para administradores de sistema e rede. Veja como você pode usá-lo para gerenciar redes e endereços IP no Linux. O comando ip no Linux é uma ferramenta poderosa que não apenas exibe o endereço IP atual de um sistema, mas também permite visualizar e gerenciar a configuração atual de interfaces de rede, endereços IP, rotas e tabelas ARP.
Vendo o Endereço IP
#1 Para encontrar o endereço IP do seu sistema Linux, use o comando ip seguido de address, addr ou uma opção:
[root@oraclelinux2 ~]# ip address 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 9e:fd:fd:da:65:1a brd ff:ff:ff:ff:ff:ff inet 192.168.1.10/24 brd 192.168.1.255 scope global noprefixroute ens18 valid_lft forever preferred_lft forever inet6 2804:431:c7d9:6113:9cfd:fdff:feda:651a/64 scope global dynamic noprefixroute valid_lft 259201sec preferred_lft 172801sec inet6 fe80::9cfd:fdff:feda:651a/64 scope link noprefixroute valid_lft forever preferred_lft forever
Podemos ver informações como endereço MAC, capacidade da interface e estado de conectividade da camada física, MTU, o estado operacional da interface (por exemplo, UP ou DOWN) e comprimento da fila de transmissão (qlen) e as informações incluem o endereço IP e seu tipo (endereçamento IP dinâmico ou endereço IP estático).
#2 Para exibir informações resumidas sobre interfaces de rede, use o comando ip com a opção –brief ou -br da seguinte forma:
[root@oraclelinux2 ~]# ip -br a lo UNKNOWN 127.0.0.1/8 ::1/128 ens18 UP 192.168.1.10/24 2804:431:c7d9:6113:9cfd:fdff:feda:651a/64 fe80::9cfd:fdff:feda:651a/64
ou
[root@oraclelinux2 ~]# ip -br a lo UNKNOWN 127.0.0.1/8 ::1/128 ens18 UP 192.168.1.10/24 2804:431:c7d9:6113:9cfd:fdff:feda:651a/64 fe80::9cfd:fdff:feda:651a/64
#3 Para exibir apenas informações de endereço IPv4, use o seguinte comando:
[root@oraclelinux2 ~]# ip -4 a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 inet 192.168.1.10/24 brd 192.168.1.255 scope global noprefixroute ens18 valid_lft forever preferred_lft forever
#4 Para descobrir as informações do endereço IP de uma interface de rede específica, use a seguinte sintaxe: ip address show dev ens18 ou ip a s dev ens18
[root@oraclelinux2 ~]# ip a s dev ens18 2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 9e:fd:fd:da:65:1a brd ff:ff:ff:ff:ff:ff inet 192.168.1.10/24 brd 192.168.1.255 scope global noprefixroute ens18 valid_lft forever preferred_lft forever inet6 2804:431:c7d9:6113:9cfd:fdff:feda:651a/64 scope global dynamic noprefixroute valid_lft 259173sec preferred_lft 172773sec inet6 fe80::9cfd:fdff:feda:651a/64 scope link noprefixroute valid_lft forever preferred_lft forever
Podemos usar somente esse comando
ip a s ens18
Ver e Alterar o Endereço MAC
Usando o comando ip, você também pode visualizar e alterar o endereço MAC do seu sistema.
#1 Para visualizar o endereço MAC do seu sistema Linux, use o seguinte comando:
[root@oraclelinux2 ~]# ip -br link show lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> ens18 UP 9e:fd:fd:da:65:1a <BROADCAST,MULTICAST,UP,LOWER_UP>
Podemos usar simplesmente:
ip -br l
#2 Para visualizar o endereço MAC de uma interface específica, use:
[root@oraclelinux2 ~]# ip -br l show dev ens18 ens18 UP 9e:fd:fd:da:65:1a <BROADCAST,MULTICAST,UP,LOWER_UP>
Ou simplesmente:
ip -br l show ens18
#3 Para alterar o endereço MAC,
primeiro desative a interface:
ip link set dev ens18 down
Em seguida, use o seguinte comando para alterar o endereço MAC da sua interface:
ip link set dev ens18 address novo_mac_aqui
Ative novamente a interface de rede
ip link set dev ens18 up
Exibir estatísticas da interface de rede
Usando o comando ip, você também pode visualizar as estatísticas de uma interface de rede. Use o seguinte comando ip para visualizar as estatísticas de todas as interfaces de rede em seu sistema:
ip -s link
[root@oraclelinux2 ~]# ip -s link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 RX: bytes packets errors dropped missed mcast 6808 92 0 0 0 0 TX: bytes packets errors dropped carrier collsns 6808 92 0 0 0 0 2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 9e:fd:fd:da:65:1a brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped missed mcast 164972160 142424 0 156 0 0 TX: bytes packets errors dropped carrier collsns 1199063 13507 0 0 0 0
A saída inclui estatísticas(stats) como bytes/pacotes transmitidos e recebidos, erros, pacotes descartados, multicast, etc.
Para exibir as estatísticas de uma interface específica, use a seguinte sintaxe:
ip -s link show dev [interface]
[root@oraclelinux2 ~]# ip -s link show dev ens18 2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 9e:fd:fd:da:65:1a brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped missed mcast 165012394 143008 0 158 0 0 TX: bytes packets errors dropped carrier collsns 1209567 13591 0 0 0 0
Podemos tirar o parâmetro dev
ip -s link show ens18
Modifique as propriedades do link usando ip
para ativar uma interface proceda
sudo ip link set [interface] up
para desativar
sudo ip link set [interface] down
Você também pode alterar o MTU(unidade máxima de transmissão) de uma interface usando o seguinte comando:
sudo ip link set mtu [number] dev [interface]
Por exemplo, para definir o MTU de uma interface de rede ens18 para 8000, o comando seria:
sudo ip link set mtu 8000 dev ens18
Adicionar/remover endereço IP no Linux
para adicionar um ip
ip addr add [endereco-ip] dev [interface]
Por exemplo,
ip addr add 192.168.2.140/24 dev ens18
para remover o ip
ip addr del 192.168.42.140/24 dev ens33
Veja a tabela de roteamento no Linux
Para exibir a tabela de roteamento do seu sistema, use o comando ip route sem nenhuma opção:
ip route
[root@oraclelinux2 ~]# ip route default via 192.168.1.1 dev ens18 proto static metric 100 192.168.1.0/24 dev ens18 proto kernel scope link src 192.168.1.10 metric 100
Cada linha na saída representa uma rota configurada. Uma rota consiste em um endereço de rede de destino, um próximo salto(hop), ou seja, o endereço IP do roteador, uma interface pela qual o pacote será enviado e a métrica, que é um valor usado para determinar a rota preferencial quando há várias rotas disponível para o destino. A rota com a métrica mais baixa é preferida neste caso.
No exemplo acima, a primeira linha representa a rota padrão, que é usada quando nenhuma outra rota está disponível para o endereço de destino e 192.168.1.1 é o endereço IP do roteador. O dev ens18 indica a interface que será utilizada para enviar os pacotes ao roteador. O campo proto dhcp indica que a rota padrão configurada manualmente. Se estivesse escrito DHCP ao invés de static indicaria ser recebida do servidor DHCP.
Em cima não tempos, mas se estivesse configurado para receber automaticamente as configurações do DHCP e não recebesse, veríamos um IP privado que chamamos de APIPA(Automatic Private IP Addressing). Esse IP geralmente usa essa faixa 169.254.0.0/16. Quando um host não consegue obter um endereço IP de um servidor DHCP, ele atribui a si mesmo um endereço IP aleatório dessa rede. Ele permite que eles se comuniquem com outros hosts na sub-rede que também falharam em obter o endereço IP.
O campo src indica o endereço IP da interface usada como endereço de origem ao enviar pacotes por esta rota.
Modificando a tabela de roteamento usando ip
Para adicionar manualmente uma rota, use o comando ip route seguido do endereço de rede de destino e do IP do gateway:
sudo ip route add [network-id] via [gateway]
Por exemplo, para adicionar uma rota que envie todo o tráfego destinado à rede 192.168.20.0 para o gateway em 192.168.10.16, você usaria o seguinte comando:
sudo ip route add 192.168.20.0/24 via 192.168.10.16
Use o seguinte comando para adicionar uma rota padrão:
sudo ip route add default via [ip-address] dev [interface]
Por exemplo, para adicionar a rota padrão que direciona o tráfego para o roteador em 192.168.10.1 até ens33, o comando seria:
sudo ip route add default via 192.168.10.1 dev ens33 ip route get [ip-address]
Para excluir uma entrada da tabela de roteamento, use a seguinte sintaxe:
sudo ip route delete [network-address] via [gateway-ip]
Você também pode visualizar a rota que um endereço seguirá usando a seguinte sintaxe
ip route get [ip-address]
Gerenciar tabela ARP(neighbor) no Linux
Você pode usar o comando ip neigh no Linux para visualizar e modificar a tabela vizinha, também conhecida como tabela ARP. Para visualizar as entradas atuais da tabela ARP, use o seguinte comando:
ip neigh show
Para adicionar uma nova entrada na tabela ARP, use a seguinte sintaxe:
sudo ip neigh add [ip-address] lladdr [mac-address] dev [interface]
Para remover uma entrada da tabela vizinha, use a seguinte sintaxe:
sudo ip neigh del [ip-address] dev [interface]
Colorindo o Resultado do Comando IP
Adicionamos -c para colorir:
[root@oraclelinux2 ~]# ip -c a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 9e:fd:fd:da:65:1a brd ff:ff:ff:ff:ff:ff inet 192.168.1.10/24 brd 192.168.1.255 scope global noprefixroute ens18 valid_lft forever preferred_lft forever inet6 2804:431:c7d9:6113:9cfd:fdff:feda:651a/64 scope global dynamic noprefixroute valid_lft 259174sec preferred_lft 172774sec inet6 fe80::9cfd:fdff:feda:651a/64 scope link noprefixroute valid_lft forever preferred_lft forever