Problema e objetivo
Como não obtemos IPv6 do nosso ISP, tenho um túnel IPv6 que funciona bem, mas é claro que não é muito rápido. E não é realmente confiável. Eu gosto de ter o IPv6 disponível "apenas por precaução", mas quero que determinados hosts (domínios) sejam conectados apenas ao IPv4.
Protocolo padrão
Parece-me que todos os aplicativos experimentam o IPv6 primeiro; essa é provavelmente uma configuração glibc. Eu ficaria bem se esse padrão fosse revertido (para todos os aplicativos).
Netfilter
Seria possível bloquear endereços / redes IPv6 com o Netfilter, mas existem dois problemas:
- Isso causaria um atraso, pois o aplicativo aguardaria o tempo limite do IPv6 antes de tentar o IPv4?
- Alguns domínios parecem confusos que parecem caos. Separar google.com e youtube.com parece algo que você não deseja fazer se puder evitá-lo.
Acabei de observar que a página de manual do ip route
diz para o tipo de roteamento unreachable
:
Os remetentes locais recebem um erro EHOSTUNREACH.
O mesmo acontece com as DROPs ou REJECTs do Netfilter? Esse erro não deve causar um atraso relevante.
Filtragem de DNS
Outra solução (bastante fácil, se isso for possível) seria filtrar registros AAAA para determinados domínios. Se isso não for (facilmente) possível: É possível conectar o servidor DNS e o Netfilter para que eu saiba "O endereço IP X pertence ao domínio Y" para que eu possa adicioná-lo ao Netfilter? Algo mais elegante do que registrar tudo e grepping o log?
O caminho para seguir?
Quais (outras) possibilidades existem e qual é a mais fácil?