Adicione isto à sua linha de kernel no seu gerenciador de partida para desativar o IPv6 completamente:
ipv6.disable=1
Se você estiver usando o Grub (se você não tiver instalado o seu próprio gerenciador de inicialização, então você está usando o Grub), sua linha do kernel deve ser algo como isto:
linux /boot/vmlinuz-linux root=UUID=978e3e81-8048-4ae1-8a06-aa727458e8ff ipv6.disable=1
A abordagem recomendada, para adicionar algo à linha do kernel, é adicionar o parâmetro do kernel desejado à variável GRUB_CMDLINE_LINUX_DEFAULT
no arquivo /etc/default/grub
:
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"
Depois de adicionar isso a /etc/default/grub
, execute o seguinte comando para gerar novamente seu grub.cfg
:
sudo grub-mkconfig -o /boot/grub/grub.cfg
Como alternativa, adicionar ipv6.disable_ipv6=1
manterá a pilha IPv6 funcional, mas não atribuirá endereços IPv6 a nenhum de seus dispositivos de rede.
OU
Para desabilitar o IPv6 via sysctl, coloque o seguinte no seu arquivo /etc/sysctl.conf
:
net.ipv6.conf.all.disable_ipv6 = 1
Não se esqueça de comentar os hosts IPv6 no seu arquivo /etc/hosts
:
#::1 localhost.localdomain localhost
OBSERVAÇÃO
uma reinicialização pode ser necessária para o método sysctl, e uma reinicialização é definitivamente necessária para a abordagem da linha do kernel.
OU
Para temporariamente desativar o ipv6:
sysctl -w net.ipv6.conf.all.disable_ipv6=1
Para temporariamente ativá-lo:
sysctl -w net.ipv6.conf.all.disable_ipv6=0
Portanto, se você precisar desativar o ipv6 em uma determinada condição , escreva um script em algum lugar ao longo destas linhas:
#!/bin/bash
ipv6_disabled="$(sysctl net.ipv6.conf.all.disable_ipv6 | awk '{print $NF}')"
if (connected_to_vpn &> /dev/null); then
(($ipv6_disabled)) || sysctl -w net.ipv6.conf.all.disable_ipv6=1
else
(($ipv6_disabled)) && sysctl -w net.ipv6.conf.all.disable_ipv6=0
fi
OBSERVAÇÃO
Você pode precisar desabilitar todos os hosts ipv6 em seu arquivo /etc/hosts
para esse método também, assim como recomendei no método anterior.