Configurar um Túnel 6to4 de IPv4 para IPv6 no Linux

CompTIABeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá a configurar um túnel IPv4-para-IPv6 6to4 em um ambiente Linux. Este exercício prático guiará você pelo processo de habilitação de conectividade IPv6 sobre uma rede IPv4 existente, um mecanismo de transição fundamental para administradores de rede. Você usará ferramentas padrão de linha de comando do Linux para construir e verificar um túnel funcional do zero.

Seguindo um processo passo a passo, você primeiro preparará um endereço IPv4 público conceitual para simular um cenário do mundo real. Em seguida, criará uma interface de túnel SIT (Simple Internet Transition), atribuirá a ela um endereço IPv6 formatado em 6to4 e adicionará uma rota IPv6 padrão através de um relay 6to4 público. Para concluir o laboratório, você testará a conectividade IPv6 de ponta a ponta através do túnel recém-configurado usando o comando ping6.

Prepare-se para o Tunelamento com um Endereço IPv4 Público Conceitual

Nesta etapa, você aprenderá sobre o requisito fundamental para o tunneling 6to4: um endereço IPv4 público. Exploraremos como identificar o endereço IP do seu sistema e por que usaremos um endereço especial e conceitual para este exercício de laboratório.

O tunneling 6to4 é um mecanismo de transição que encapsula pacotes IPv6 dentro de pacotes IPv4, permitindo que eles viajem pela internet IPv4. Para que isso funcione em um cenário do mundo real, seu sistema (o endpoint do túnel) deve ter um endereço IPv4 público para que outros dispositivos na internet possam enviar tráfego de volta para ele. Em um ambiente típico de laboratório ou doméstico, seu computador geralmente está atrás de um roteador usando NAT (Network Address Translation) e possui um endereço IPv4 privado, que não é alcançável pela internet pública.

Primeiro, vamos verificar o endereço IPv4 real atribuído à sua interface de rede neste ambiente de laboratório. Você pode fazer isso usando o comando ip a combinado com grep para filtrar endereços IPv4.

Execute o seguinte comando no seu terminal:

ip a | grep inet

Você verá uma saída semelhante à seguinte, listando os endereços IPv4 e IPv6 no seu sistema. Observe que os endereços IPv4 são privados, não públicos.

    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
    inet 172.16.50.33/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
    inet6 fe80::216:3eff:fe01:236f/64 scope link
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0

Como você pode ver, os endereços listados são privados (como 172.16.50.33) ou de loopback (127.0.0.1). Eles não podem ser usados como um endpoint público para um túnel 6to4. Para simular uma configuração do mundo real, usaremos um endereço IPv4 público conceitual. Para este laboratório, usaremos 192.0.2.1. Este endereço faz parte de um bloco especificamente reservado para documentação e exemplos (RFC 5737), garantindo que ele não entre em conflito com nenhum endereço IP público real. Todas as etapas subsequentes usarão este endereço de placeholder para construir nossa configuração de túnel.

Criar uma Interface de Túnel SIT com o Comando ip tunnel

Nesta etapa, você criará a interface de túnel virtual que servirá como base para o nosso túnel 6to4. Usaremos o comando ip, uma ferramenta poderosa no Linux para configuração de rede.

O comando ip tunnel é usado para criar, gerenciar e excluir interfaces de túnel. Para o 6to4, precisamos de um tipo específico de túnel chamado sit, que significa "Simple Internet Transition". Este modo encapsula pacotes IPv6 diretamente dentro de pacotes IPv4, que é o mecanismo central do 6to4.

Agora, vamos criar uma interface de túnel chamada tun6to4. Nós a configuraremos usando o endereço IPv4 público conceitual 192.0.2.1 que identificamos na etapa anterior.

Execute o seguinte comando no seu terminal. Você precisa de sudo porque a criação de interfaces de rede é uma operação privilegiada.

sudo ip tunnel add tun6to4 mode sit local 192.0.2.1 remote any

Vamos detalhar este comando:

  • sudo ip tunnel add tun6to4: Esta parte instrui o sistema a adicionar uma nova interface de túnel chamada tun6to4.
  • mode sit: Isso especifica o modo de encapsulamento. sit é o modo correto para tunneling 6to4.
  • local 192.0.2.1: Isso define o endereço IPv4 de origem dos pacotes do túnel. É o endpoint "local" do nosso túnel, que estamos simulando com nosso IP público conceitual.
  • remote any: Esta é uma parte crucial do mecanismo 6to4. Ela informa ao sistema que o túnel pode se conectar a qualquer endpoint remoto. Na prática, isso significa que ele enviará tráfego para um endereço "anycast" bem conhecido para um roteador relay 6to4, que então encaminhará o tráfego para a internet IPv6.

Após executar o comando, você pode verificar se a interface de túnel foi criada. Use o comando ip tunnel show:

ip tunnel show

A saída deve confirmar a criação e configuração da sua nova interface tun6to4. Você também pode ver uma interface sit0 padrão, que pode ser ignorada para este laboratório.

sit0: ipv6/ip remote any local any ttl 64 nopmtudisc 6rd-prefix 2002::/16
tun6to4: ipv6/ip remote any local 192.0.2.1 ttl inherit 6rd-prefix 2002::/16

Você também pode ver a nova interface executando ip a novamente, mas ela ainda não terá nenhum endereço IP atribuído. Lidaremos com isso na próxima etapa.

Atribuir um Endereço IPv6 Formatado em 6to4 à Interface de Túnel

Nesta etapa, você configurará a interface tun6to4 que acabou de criar, atribuindo-lhe um endereço IPv6 especial formatado para 6to4. Este endereço não é arbitrário; ele é derivado diretamente do endereço IPv4 público do endpoint do túnel.

O esquema de endereçamento 6to4 é projetado para ser automático. Ele usa um prefixo IPv6 designado, 2002::/16. Os 32 bits que seguem este prefixo são preenchidos com o endereço IPv4 público, convertido para formato hexadecimal. Isso cria um prefixo IPv6 /48 único para qualquer organização com pelo menos um endereço IPv4 público.

Vamos calcular a representação hexadecimal para nosso endereço IPv4 conceitual, 192.0.2.1:

  • 192 em decimal é c0 em hexadecimal.
  • 0 em decimal é 00 em hexadecimal.
  • 2 em decimal é 02 em hexadecimal.
  • 1 em decimal é 01 em hexadecimal.

Combinando estes, a representação hexadecimal de 192.0.2.1 é c000:0201. Portanto, nosso prefixo 6to4 único é 2002:c000:0201::/48.

Agora, atribuiremos um endereço IPv6 específico deste prefixo à nossa interface tun6to4. Usaremos o primeiro endereço na primeira sub-rede, 2002:c000:0201::1/64. Execute o seguinte comando para atribuir o endereço:

sudo ip -6 addr add 2002:c000:0201::1/64 dev tun6to4

Após criar a interface e atribuir um endereço, a interface ainda está em estado "DOWN" (desativada) por padrão. Você precisa ativá-la ("UP") para torná-la operacional. Use o comando ip link set para isso:

sudo ip link set tun6to4 up

Finalmente, vamos verificar se a interface está ativa e possui o endereço IPv6 correto. Use o comando ip a e procure pela interface tun6to4:

ip a

Você deverá ver uma saída que inclui a interface tun6to4, agora ativa e configurada com o endereço IPv6. Observe que o número da interface (por exemplo, 5:) pode variar, e você pode ver outras interfaces como docker0 ou sit0.

5: tun6to4@NONE: <NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN group default qlen 1000
    link/sit 192.0.2.1 brd 0.0.0.0
    inet6 ::192.0.2.1/96 scope global
       valid_lft forever preferred_lft forever
    inet6 2002:c000:201::1/64 scope global
       valid_lft forever preferred_lft forever

Note que, além do endereço 2002:... que você configurou, o sistema adicionou automaticamente um endereço IPv6 compatível com IPv4 (::192.0.2.1/96). Este é um comportamento esperado.

Adicionar uma Rota IPv6 Padrão via Endereço Relay 6to4

Nesta etapa, você configurará a peça final do quebra-cabeça para conectividade de saída: uma rota padrão. Apenas ter um endereço IP na interface tun6to4 não é suficiente; seu sistema precisa saber para onde enviar o tráfego IPv6 destinado à internet global. Nós o apontaremos para um roteador relay 6to4 especial.

O 6to4 depende de roteadores relay públicos que conectam o mundo 6to4 à internet IPv6 nativa. Esses roteadores escutam o tráfego encapsulado em um endereço IPv4 anycast específico e bem conhecido: 192.88.99.1. Quando nosso sistema envia um pacote IPv6 para um destino externo, ele o encapsulará em um pacote IPv4 e o enviará para este endereço relay. O relay então desembala o pacote e o encaminha para a rede IPv6.

Para configurar isso, adicionaremos uma rota IPv6 padrão usando o comando ip -6 route add. Execute o seguinte no seu terminal:

sudo ip -6 route add default via ::192.88.99.1 dev tun6to4

Vamos analisar o comando:

  • default: Isso especifica que a rota é o "gateway padrão" para todo o tráfego IPv6 que não corresponde a uma rota mais específica na tabela de roteamento.
  • via ::192.88.99.1: Isso define o próximo salto (next-hop) do gateway. A sintaxe ::192.88.99.1 é uma forma especial de representar um endereço IPv4 em um contexto IPv6, dizendo ao sistema para enviar o tráfego para o endereço IPv4 192.88.99.1.
  • dev tun6to4: Isso diz explicitamente ao sistema para usar nossa interface tun6to4 para esta rota.

Agora, você pode verificar se a tabela de roteamento IPv6 foi atualizada corretamente. Execute o seguinte comando:

ip -6 route show

A saída agora deve incluir uma rota padrão apontando para o relay 6to4 através da sua interface de túnel. A saída exata pode variar ligeiramente, mas o ponto chave é a linha default.

::1 dev lo proto kernel metric 256 pref medium
::/96 dev tun6to4 proto kernel metric 256 pref medium
2002:c000:201::/64 dev tun6to4 proto kernel metric 256 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
default via ::192.88.99.1 dev tun6to4 metric 1024 pref medium

Com esta rota implementada, seu sistema está agora totalmente configurado para enviar tráfego IPv6 através do túnel 6to4 simulado.

Testar Conectividade IPv6 Através do Túnel com ping6

Nesta etapa, você tentará testar seu túnel 6to4 recém-configurado enviando tráfego IPv6 para um destino público. Usaremos o comando ping6, que é o equivalente IPv6 da utilidade familiar ping.

O objetivo é ver se nosso sistema consegue enviar um pacote IPv6, tê-lo encapsulado em um pacote IPv4, enviado para o relay 6to4 e, em seguida, encaminhado para seu destino final. Usaremos o sinalizador -I com ping6 para especificar que o tráfego deve originar-se de nossa interface tun6to4.

Vamos tentar pingar um host conhecido habilitado para IPv6, como ipv6.google.com. O sinalizador -c 4 limitará o comando a enviar apenas 4 pacotes.

Execute o seguinte comando no seu terminal:

ping6 -c 4 -I tun6to4 ipv6.google.com

Resultado Esperado e Explicação

Você verá o comando falhar, com uma saída indicando que o destino está inalcançável. Este é o resultado esperado, e esta parte do laboratório é apenas para fins de demonstração.

PING ipv6.google.com(sfo03s32-in-x0e.1e100.net (2607:f8b0:4005:814::200e)) from 2002:c000:201::1 tun6to4: 56 data bytes
From iZrj9hhbt3mi4boxowaqhxZ (2002:c000:201::1) icmp_seq=1 Destination unreachable: Address unreachable
From iZrj9hhbt3mi4boxowaqhxZ (2002:c000:201::1) icmp_seq=2 Destination unreachable: Address unreachable
From iZrj9hhbt3mi4boxowaqhxZ (2002:c000:201::1) icmp_seq=3 Destination unreachable: Address unreachable
From iZrj9hhbt3mi4boxowaqhxZ (2002:c000:201::1) icmp_seq=4 Destination unreachable: Address unreachable

--- ipv6.google.com ping statistics ---
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3253ms

Esta falha não significa que você configurou algo incorretamente. Você configurou com sucesso o lado do cliente de um túnel 6to4. A falha é esperada neste ambiente de laboratório por duas razões principais:

  1. Ambiente de Laboratório: A máquina virtual LabEx não possui um endereço IPv4 público real. Usamos um endereço conceitual (192.0.2.1) para configuração. O relay 6to4 não pode enviar uma resposta de volta para este endereço não roteável.
  2. Infraestrutura Obsoleta: A infraestrutura pública de relay 6to4 (no endereço anycast 192.88.99.1) está em grande parte obsoleta e não é mais mantida na internet moderna. Os operadores de rede migraram para mecanismos de transição IPv6 mais robustos e seguros, como IPv6 nativo, 6rd e DS-Lite.

O principal objetivo deste laboratório é ensinar o conceito e a sintaxe de configuração de um mecanismo de tunelamento historicamente significativo de IPv4 para IPv6, que é um tópico abordado em certificações de rede como a CompTIA Network+.

Resumo

Neste laboratório, você aprendeu a configurar um túnel 6to4 de IPv4 para IPv6 no Linux. Você começou entendendo o requisito principal para o tunelamento 6to4: um endereço IPv4 público. Após identificar o endereço IP privado no ambiente de laboratório, você adotou um endereço IPv4 público conceitual (192.0.2.1) para simular um cenário do mundo real. Em seguida, você usou o comando ip tunnel para criar uma interface de túnel SIT (Simple Internet Transition), que serve como ponto final para encapsular pacotes IPv6 dentro de pacotes IPv4.

Com a interface de túnel estabelecida, você construiu e atribuiu um endereço IPv6 formatado em 6to4, que é derivado programaticamente do endereço IPv4 público conceitual. Para direcionar o tráfego IPv6 através do túnel, você adicionou uma rota IPv6 padrão apontando para o endereço anycast do relay 6to4. Finalmente, você testou a configuração usando o comando ping6. O teste falhou como esperado, o que confirmou que, embora sua configuração local estivesse correta, a infraestrutura pública de relay 6to4 não está mais amplamente disponível, demonstrando uma razão chave pela qual essa tecnologia é agora considerada histórica.