Configurar e Verificar Endereços IPv6 no Linux

CompTIABeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá as habilidades fundamentais para configurar e verificar endereços IPv6 em um sistema Linux. Utilizando ferramentas modernas de linha de comando, você ganhará experiência prática com as tarefas essenciais envolvidas no gerenciamento de rede IPv6, desde a inspeção até a configuração estática e testes de conectividade. Este laboratório foca no uso do comando ip do pacote iproute2 e da utilidade ping6, que são padrões em distribuições Linux modernas como o Ubuntu 22.04.

Você começará usando o comando ip a para descobrir os endereços IPv6 de loopback e link-local configurados automaticamente em suas interfaces de rede. Em seguida, você atribuirá manualmente um endereço global unicast estático a uma interface. Finalmente, você usará o comando ping6 para verificar a conectividade de rede com os endereços de loopback, link-local e o novo endereço global unicast configurado, confirmando que sua configuração IPv6 está funcionando corretamente.

Nesta etapa, você aprenderá como descobrir os endereços IPv6 que são configurados automaticamente em seu sistema. Distribuições Linux modernas, incluindo o Ubuntu 22.04, têm o IPv6 habilitado por padrão. Usaremos o comando ip, que é a ferramenta moderna e recomendada para configuração e inspeção de rede no Linux.

Primeiro, vamos inspecionar as interfaces de rede e seus endereços atribuídos. O comando ip a é uma abreviação para ip address.

  1. Abra um terminal. Seu diretório padrão é ~/project.
  2. Execute o comando ip a para listar todas as interfaces de rede e seus endereços.
ip a

Você verá uma saída semelhante à seguinte. Os nomes exatos das interfaces (como eth0) e os endereços podem variar, mas a estrutura será a mesma.

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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:16:3e:00:54:72 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname ens5
    inet 172.16.50.202/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
       valid_lft 1892159972sec preferred_lft 1892159972sec
    inet6 fe80::216:3eff:fe00:5472/64 scope link
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:89:01:6f:fc brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

Agora, vamos analisar a saída para identificar os endereços IPv6 chave:

  • Endereço de Loopback: Procure pela interface chamada lo. Esta é a interface virtual de loopback, usada para testar a pilha de rede na máquina local. Você verá o endereço IPv6 ::1/128. Este é o endereço de loopback IPv6, equivalente a 127.0.0.1 no IPv4. O scope host indica que ele é válido apenas dentro do próprio host.

  • Endereço Link-Local: Procure em sua interface de rede principal (por exemplo, eth0, enp0s3). Você encontrará um endereço inet6 que começa com fe80::. Este é o seu endereço link-local. Ele é atribuído automaticamente a cada interface habilitada para IPv6 e é usado para comunicação apenas no segmento de rede local (por exemplo, sua LAN Ethernet local). O scope link confirma que este endereço é válido apenas no link local e não é roteável na internet.

Você agora identificou com sucesso os dois tipos fundamentais de endereços IPv6 configurados automaticamente em seu sistema.

Adicionar um Endereço Global Unicast Estático com ip addr add

Nesta etapa, você configurará manualmente um Endereço Global Unicast (GUA) em sua interface de rede. Enquanto os endereços link-local são usados para comunicação no segmento de rede local, os GUAs são o equivalente IPv6 dos endereços IPv4 públicos. Eles são globalmente únicos e roteáveis na internet.

Para este laboratório, usaremos um endereço do bloco 2001:db8::/32, que é reservado especificamente para documentação e exemplos. Isso garante que não usemos acidentalmente um endereço de internet real e em uso.

  1. Adicionaremos o GUA estático 2001:db8:acad::1/64 à interface eth0. O /64 indica o comprimento do prefixo, que é padrão para a maioria das LANs. Precisamos de sudo porque modificar interfaces de rede requer privilégios administrativos.

    sudo ip -6 addr add 2001:db8:acad::1/64 dev eth0
    
    • Nota: Esta alteração é temporária e será removida se você reiniciar o sistema. Para configuração permanente no Ubuntu, você normalmente editará arquivos em /etc/netplan/, mas isso está fora do escopo deste laboratório.
  2. Agora, verifique se o novo GUA foi atribuído com sucesso. Execute o comando ip a novamente para inspecionar suas interfaces de rede.

    ip a
    

    Você deverá ver o novo endereço listado sob a interface eth0. Observe o scope global, que indica que este é um endereço roteável.

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        ...
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:16:3e:00:54:72 brd ff:ff:ff:ff:ff:ff
        altname enp0s5
        altname ens5
        inet 172.16.50.202/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
           valid_lft 1892159959sec preferred_lft 1892159959sec
        inet6 2001:db8:acad::1/64 scope global
           valid_lft forever preferred_lft forever
        inet6 fe80::216:3eff:fe00:5472/64 scope link
           valid_lft forever preferred_lft forever
    

Você atribuiu com sucesso um GUA IPv6 estático à sua interface de rede. Na próxima etapa, testaremos a conectividade com este novo endereço.

Testar Conectividade com Loopback e GUA usando ping6

Nesta etapa, você usará a utilidade ping6 para testar a conectividade IPv6. Este comando é o equivalente IPv6 do familiar comando ping e é essencial para diagnósticos de rede. Verificaremos se sua pilha IPv6 local está funcionando corretamente e se o Endereço Global Unicast (GUA) que você configurou na etapa anterior está respondendo.

Primeiro, vamos testar a pilha IPv6 local pingando o endereço de loopback.

  1. Ping o endereço de loopback IPv6 ::1. Usaremos a opção -c 3 para enviar apenas 3 pacotes em vez de pingar indefinidamente.

    ping6 -c 3 ::1
    

    Um teste bem-sucedido mostrará que os pacotes estão sendo enviados e recebidos com 0% de perda de pacotes, confirmando que sua pilha IPv6 local está operacional.

    PING ::1(::1) 56 data bytes
    64 bytes from ::1: icmp_seq=1 ttl=64 time=0.026 ms
    64 bytes from ::1: icmp_seq=2 ttl=64 time=0.021 ms
    64 bytes from ::1: icmp_seq=3 ttl=64 time=0.035 ms
    
    --- ::1 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2030ms
    rtt min/avg/max/mdev = 0.021/0.027/0.035/0.005 ms
    

Em seguida, vamos testar o GUA que você atribuiu manualmente à interface eth0. Isso confirma que a interface está configurada corretamente e escutando nesse endereço.

  1. Ping o GUA 2001:db8:acad::1 que você adicionou na etapa anterior.

    ping6 -c 3 2001:db8:acad::1
    

    Semelhante ao teste de loopback, um resultado bem-sucedido mostrará respostas do endereço, confirmando que ele está atribuído corretamente e alcançável no host.

    PING 2001:db8:acad::1(2001:db8:acad::1) 56 data bytes
    64 bytes from 2001:db8:acad::1: icmp_seq=1 ttl=64 time=0.028 ms
    64 bytes from 2001:db8:acad::1: icmp_seq=2 ttl=64 time=0.037 ms
    64 bytes from 2001:db8:acad::1: icmp_seq=3 ttl=64 time=0.038 ms
    
    --- 2001:db8:acad::1 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2034ms
    rtt min/avg/max/mdev = 0.028/0.034/0.038/0.004 ms
    

Você agora verificou com sucesso a conectividade tanto com o loopback quanto com o seu Endereço Global Unicast configurado manualmente.

Nesta etapa, você aprenderá como testar a conectividade com um endereço link-local. Como você descobriu anteriormente, esses endereços começam com fe80:: e são válidos apenas em um único segmento de rede (o "link"). Como eles não são globalmente únicos, você deve fornecer informações adicionais ao comando ping6 para especificar qual interface de rede deve ser usada para enviar o ping. Isso é conhecido como "índice de zona" ou "scope ID".

Primeiro, você precisa encontrar novamente o endereço link-local da sua interface eth0.

  1. Execute o comando ip a e identifique o endereço inet6 que começa com fe80:: para a interface eth0.

    ip a show eth0
    

    A saída será semelhante a esta. Você precisa copiar o endereço (por exemplo, fe80::xxxx:xxff:fexx:xxxx).

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:16:3e:00:54:72 brd ff:ff:ff:ff:ff:ff
        altname enp0s5
        altname ens5
        inet 172.16.50.202/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
           valid_lft 1892159869sec preferred_lft 1892159869sec
        inet6 2001:db8:acad::1/64 scope global
           valid_lft forever preferred_lft forever
        inet6 fe80::216:3eff:fe00:5472/64 scope link
           valid_lft forever preferred_lft forever
    
  2. Agora, pingue este endereço link-local. Para especificar o índice de zona, você anexa % seguido pelo nome da interface (eth0) ao endereço. Substitua YOUR_LINK_LOCAL_ADDRESS pelo endereço real que você acabou de encontrar.

    ping6 -c 3 YOUR_LINK_LOCAL_ADDRESS%eth0
    

    Por exemplo, se o seu endereço fosse fe80::216:3eff:fe00:5472, o comando seria: ping6 -c 3 fe80::216:3eff:fe00:5472%eth0

    Um ping bem-sucedido confirma que a interface está respondendo ao seu endereço link-local.

    PING fe80::216:3eff:fe00:5472%eth0(fe80::216:3eff:fe00:5472%eth0) 56 data bytes
    64 bytes from fe80::216:3eff:fe00:5472%eth0: icmp_seq=1 ttl=64 time=0.031 ms
    64 bytes from fe80::216:3eff:fe00:5472%eth0: icmp_seq=2 ttl=64 time=0.030 ms
    64 bytes from fe80::216:3eff:fe00:5472%eth0: icmp_seq=3 ttl=64 time=0.030 ms
    
    --- fe80::216:3eff:fe00:5472%eth0 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2028ms
    rtt min/avg/max/mdev = 0.030/0.030/0.031/0.000 ms
    

    Se você esquecer a parte %eth0, o comando falhará porque o sistema não saberá qual interface usar para o destino link-local. Esta sintaxe especial é um conceito chave no manuseio de endereços IPv6 link-local.

Resumo

Neste laboratório, você aprendeu a realizar tarefas fundamentais de configuração e verificação de IPv6 em um sistema Linux usando o conjunto de comandos ip. Você começou usando ip a para inspecionar as interfaces de rede, identificando com sucesso o endereço IPv6 de loopback atribuído automaticamente (::1) na interface lo e o endereço link-local (prefixado com fe80::) na interface de rede principal. Em seguida, você procedeu à configuração manual de um Endereço Global Unicast (GUA) estático na interface principal usando o comando ip addr add.

Para validar a configuração, você utilizou a utilidade ping6. Você confirmou que a pilha de rede local estava operacional pingando o endereço de loopback e verificou se o GUA estático estava corretamente atribuído e alcançável. Finalmente, você aprendeu o requisito específico para testar endereços link-local, que envolve o uso da sintaxe %interface com ping6 para especificar explicitamente o índice de zona (interface de saída), um passo necessário devido ao escopo de link desses endereços.