Adicione isso à sua linha de kernel no seu gerenciador de inicialização para desativar completamente o IPv6:
ipv6.disable=1
Se você está usando o Grub (se você não instalou seu próprio gerenciador de inicialização, então está usando o Grub), sua linha de kernel deve se parecer com:
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 à GRUB_CMDLINE_LINUX_DEFAULT
variável no /etc/default/grub
arquivo:
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"
Depois de adicionar isso /etc/default/grub
, execute o seguinte comando para regenerar seu grub.cfg
:
sudo grub-mkconfig -o /boot/grub/grub.cfg
Como alternativa, a adição ipv6.disable_ipv6=1
manterá a pilha IPv6 funcional, mas não atribuirá endereços IPv6 a nenhum dos seus dispositivos de rede.
OU
Para desativar o IPv6 via sysctl, coloque o seguinte no seu /etc/sysctl.conf
arquivo:
net.ipv6.conf.all.disable_ipv6 = 1
Não se esqueça de comentar qualquer host IPv6 no seu /etc/hosts
arquivo:
#::1 localhost.localdomain localhost
NOTA
uma reinicialização pode ser necessária para o método sysctl, e uma reinicialização é definitivamente necessária para a abordagem de linha do kernel.
OU
Para desativar temporariamente o ipv6:
sysctl -w net.ipv6.conf.all.disable_ipv6 = 1
Para habilitá-lo temporariamente :
sysctl -w net.ipv6.conf.all.disable_ipv6 = 0
Portanto, se você precisar desativar o ipv6 em uma determinada condição , escreva um script bash 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
NOTA
Pode ser necessário desativar qualquer host ipv6 no seu /etc/hosts
arquivo para esse método também, assim como eu recomendei no método anterior.