IPv6 + IPv4 (dual stack) com Live TIM
Autor: Pablo Nehab Hess | Publicado: 2016-12-18T22:54:00-02:00


    Estou escrevendo este longo&nbsp;post a partir do meu laptop, em casa, conectado ao Gmail e ao Blogger via IPv6 sem passar por túneis.
    Em outra aba do navegador, estou conectado ao reddit via IPv4 também sem precisar de túneis.
    
    Esta é a conectividade IPv4 + IPv6 em dual stack&nbsp;que eu vinha buscando há alguns anos. Finalmente consegui, e descrevo aqui o que foi necessário, além de relatar o que funciona e não funciona&nbsp;conforme esperado.
    
    
        Como consegui IPv4 e IPv6 em dual stack com a Live TIM
        
        
        Dual stack&nbsp;(pilha dupla) é como se chama a conectividade simultânea às redes IPv4 e IPv6, entregue pelo provedor direto ao modem, sem emprego de técnicas de transição como túneis,&nbsp;CGNAT&nbsp;ou outras artimanhas.
        (NOTA: Não recebi nem recebo nada da TIM para falar bem do serviço Live TIM.)
        Sou um feliz usuário do acesso à Internet pela Live TIM&nbsp;há uns 2-3 anos em meus dois endereços na cidade do Rio de Janeiro: minha casa e meu escritório-doméstico-fora-da-minha-casa, carinhosamente apelidado de mamma's home office. ou M.H.O.
        
        Meu acesso no M.H.O. (mamma's home office) tem velocidade de download de 70 Mbps e upload de 30 Mbps.
        Em casa, o download é de 35 Mbps e o upload é de 20 Mbps.
        Solicitação à Live TIM, uma novela com final feliz
        Pedi à TIM para ativar conectividade IPv6 em casa. Porém, como não funcionou de primeira, foram feitos inúmeros contatos telefônicos, uma verdadeira novela, até eu conseguir a tão desejada conectividade IPv4 + IPv6 em dual stack.
        
        A novela começou dia 6/setembro/2016, quando liguei pela primeira vez para o suporte técnico da Live TIM no 10341 e pedi para ativarem a conectividade IPv6 na minha conexão sem perder a conectividade IPv4. Para minha surpresa, disseram que &ldquo;sim&rdquo;. Eles me ligariam em até 5 dias úteis para configurar comigo o meu modem.

        Ligaram.
        Configuramos juntos o modem.
        Não funcionou. :-(

        Ferramentas e comandos que ajudam a inspecionar o funcionamento do IPv6:
        
          ping6 ipv6.google.com (é o bom e velho ping, mas só utiliza IPv6.)
          ip -6 address list (lista seus endereços IPv6.)
          ip -6 route list (lista as rotas IPv6, inclusive a rota padrão.)
          curl -6 uol.com.br (visitar a página principal do UOL via IPv6. Deve retornar um longo código HTML.)
        
        Me pediram alguns dias para rever as configurações e também me pediram para visitar alguns sites de diagnóstico e enviar a eles os screenshots.

        Sites de diagnóstico:
          
            http://test-ipv6.com/
            http://ipv6.google.com
            http://ipv6-test.com/ (especial atenção a este aqui e ao que ele diz sobre ICMP! É você, cliente, quem tem que configurar seu modem para deixar passar ICMPv6.)
          
        
        A cada nova ligação do suporte da TIM identificávamos mais uma dificuldade com a conexão, até que esgotamos todas e a TIM veio trocar meu modem&nbsp;por um Technicolor TD5336, que finalmente funcionou sem necessidade de alterar nenhuma configuração.
        
        Modems que estou usando com sucesso com IPv6, ambos fornecidos pela TIM após 1 ou mais trocas:
        
          Technicolor TD5336
          Sagemcom F@st 5310
        
        
        Modems que não funcionaram com IPv6:
        
          Sagemcom F@st 4310 (não recebia um IPv6, ou não retransmitia pacotes IPv6 à LAN)
          Technicolor TG589vn v3 (não recebia um IPv6)
          Zyxel VMG8924-B10A (recebia um IPv6 e retransmitia para a rede interna, mas perdia a maioria dos pacotes ICMPv6 vindos da WAN)
        
        
        Nota: o suporte técnico da Live TIM sempre foi excelente em todas as várias interações que tive com eles. Me telefonaram inúmeras vezes, sempre absolutamente cordiais e educados, além de dedicados a resolver meu problema. Muitos desses telefonemas foram às 20:00, 21:00. De verdade, ótimo serviço de suporte.
    
    
    Habemus IPv6. Como a Live TIM entrega um IPv6
    
    
        Com o novo modem, tudo funcionava conforme esperaddo: recebi um IPv4 (como de costume) e agora também um IPv6 sob o prefixo 2804:214:3:57cc::/64. Absolutamente lindo.

        Imediatamente pedi a ativação da conectividade IPv6 na outra conexão, isto é, no M.H.O.

        Em ambos, assim é a configuração:

        Rede externa:
        IPv6 na interface WAN recebido via SLAAC (Stateless Address Autoconfiguration). O modem recebe do provedor apenas as rotas via RA (Router&nbsp;Advertisement). ULA desativado.
        
        Rede interna:
        Com base nas rotas recebidas do provedor, o modem entrega à minha LAN os endereços IPv6 via DHCPv6. [Mais detalhes de DHCPv6 versus SLAAC]
        
        SLAAC
        Basicamente, um "servidor" SLAAC envia aos clientes a informação de prefixo&nbsp;IPv6 e também o gateway padrão. Nada mais. Nada de DNS, por exemplo. Se você quer que seu modem envie aos clientes o endereço dos servidores DNS, só o DHCPv6 te salvará: ative no seu modem o DHCPv6 interno e defina com ele os endereços dos servidores DNS que você quiser passar aos clientes.
        
        DNS em IPv6 e em IPv4
        Qualquer servidor DNS pode te retornar qual é o IPv6 da Wikipédia. E também o IPv4. Não importa se o seu servidor DNS está escutando na rede IPv4 ou IPv6, ele certamente consegue retornar o IPv4 (registro A) e também o IPv6 (registro AAAA) de www.wikipedia.org ou de qualquer URL.

        Por exemplo, experimente:
        $ host -t A www.wikipedia.org  8.8.8.8
www.wikipedia.org has address 208.80.154.224
$
$ # Agora o registro AAAA
$ host -t AAAA www.wikipedia.org  8.8.8.8
www.wikipedia.org has IPv6 address 2620:0:861:ed1a::1
        
        O servidor DNS público do Google, que responde no IPv4 8.8.8.8, sabe me dizer que o endereço IPv4 (registro Address) de www.wikipedia.org é 208.80.154.224, e também sabe me dizer que o IPv6 da mesma URL www.wikipedia.org é 2620:0:861:ed1a::1.

        Ou seja, você não precisa fornecer servidores DNS na rede IPv6 para usar IPv6.
        
        Como está minha LAN agora
        Com essas configurações, o modem entrega aos computadores da minha LAN um IPv4 privado (rede 192.168.x.y) e também um IPv6 público. Cada computador também gera de forma autônoma um segundo endereço IPv6, este privado (local-only ou somente local, no prefixo fe80::/64.
        
        O espaço de endereços IPv6 possui alguns prefixos já pensados desde o início para uso exclusivamente em redes privadas, isto é, incapazes de alcançar a Internet e portanto dedicados unicamente à comunicação dentro de uma rede privada como a da minha casa. O prefixo fe80::/64 é esse prefixo. [Mais]
        
        Dado interessante: meu modem recebe na interface externa um IPv6 público fora do meu prefixo. Se meu prefixo dado pelo provedor é 2345:abcd:1234:5678::/64, o modem pode perfeitamente ter o IPv6 público 9876:5432:1111:2222:3333:4444:5555:6666.
        Isso é possível porque meu modem não precisa ter um IPv6 público dentro do meu prefixo. Ele simplesmente encaminha à rede do provedor os pacotes que saem da minha LAN rumo à Internet.

        No entanto, meu modem tem, sim, um IPv6 privado que só funciona na minha rede interna,fe80::2a0:12f:fc31:e2e8. Veja a rota que meu sistema atual mostra:

        $ ip -6 r
2804:214:3:57cc::254 dev wlp3s0  proto kernel  ⤾
⤷ metric 256  expires 85483sec pref medium
2804:214:3:57cc::/64 dev wlp3s0  proto ra  ⤾
⤷ metric 600  pref medium
fe80::fe52:8ddd:feb4:303b dev wlp3s0  proto static  ⤾
⤷ metric 600  pref medium
fe80::/64 dev wlp3s0  proto kernel  metric 256  ⤾
⤷ pref medium
default via fe80::fe52:8ddd:feb4:303b dev wlp3s0  ⤾
⤷ proto static  metric 600  pref medium
        
        Veja que interessante: meu gateway padrão na rede IPv6 usa o prefixo somente local fe80::/64 (última linha do comando acima).

        Os pacotes IPv6 que saem do meu sistema rumo à Internet têm como IPv6 de origem o meu endereço IPv6 público, mas são enviados ao meu modem por seu IPv6 somente local. Tudo bem, isso definitivamente não é um problema.
     <!-- div da caixa -->
    
    O que funciona nos meus acessos via IPv6
    
        O acesso à Internet em IPv6 funciona maravilhosamente.
        Todos os apps do Google (Drive, Docs, Sheets...), toda a Wikipédia, o site do UOL, o site da Red Hat. Estou acessando todos via IPv6.
        
            
                Dica: extensão para Google Chrome que indica se você está acessando um site via IPv4 ou IPv6: if IPv6.
            
        
        
        Consigo descobrir o endereço público do meu laptop a partir do próprio laptop, sem precisar de comandos como curl [-4|-6] ifconfig.co para ir até a Internet descobrir meu IP público. Basta usar o tradicional comando ip:
        $ ip -6 addr list
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 state UNKNOWN qlen 1
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
3: wlp3s0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 ⤾
⤷ state UP qlen 1000
    inet6 2804:214:3:57cc:822c:4196:32b6:ea38/64 scope ⤾
⤷ global noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fe80::6212:3c69:21:f11a/64 scope link 
       valid_lft forever preferred_lft forever
$
$ # Confirmando com o curl
$
$ curl -6 ifconfig.co
2804:214:3:57cc:822c:4196:32b6:ea38
        
        
    
    
    O que não funciona
    
    Meu IPv6 não é fixo! :-(
    Em poucas palavras, o prefixo IPv6 que a TIM me entrega não é fixo.

    Em mais palavras, meu prefixo inicial 2804:214:3:57cc/64 gerou para meu laptop o endereço 2804:214:3:57cc:9431:43ad:fa3:38ea, que eu rapidamente adicionei ao DNS do meu domínio particular, todo orgulhoso.
    
    Eu realmente acreditei, por alguns momentos, que não precisaria mais de um DNS dinâmico como o dyndns para conseguir acessar meu servidor doméstico de qualquer lugar do mundo.
    
    
    
    Depois do primeiro reboot do modem, a surpresa: o IPv6 do meu servidor doméstico tinha mudado! Sob inspeção mais meticulosa, descobri que o prefixo fornecido à minha conexão pela Live TIM havia mudado. :-(

    Resultado: voltei a precisar de um DNS dinâmico. Desde então estou usando o ultra-simples dynv6.com&nbsp;com o script bem simples que ele próprio oferece. Meu servidor doméstico roda o script de atualização a cada 60 minutos e a vida segue. Um pouco triste, mas segue.
    Dentro da minha LAN, uma possível saída é fazer referência ao IP somente local das máquinas em vez de usar o IP público. Isto é, meu DNS interno vai dizer que tralala.redeinterna aponta para fe80::63a7:32:ff82:23fc em vez de apontar para 2804:214:3:57cc:63a7:32:ff82:23fc. O endereço somente local das máquinas internas não muda. No entanto, isso significa que eu continuo tendo que usar um endereço diferente para me conectar a tralala.redeinterna se eu estiver dentro de casa ou fora de casa.
    
    Não tenho IPv6 reverso
    Veja estes comandos:
    $ host -t AAAA www.uol.com.br
homeuol.uol.com.br has IPv6 address 2804:49c:3103:401:ffff:ffff:ffff:1
$
$ # Agora a resolução reversa
$ host 2804:49c:3103:401:ffff:ffff:ffff:1
Host 1.0.0.0.f.f.f.f.f.f.f.f.f.f.f.f.1.0.4.0.3.0.1.3.c.9.4.0.4.0.8.2.ip6.arpa not found: 3(NXDOMAIN)
    Ainda não encontrei o motivo para a resolução reversa de IPv6 não ser levada a sério.
    
    Segurança: a vida sem NAT
    Esse aqui fica para o próximo post.
    
    Até breve!