Como desativar o IPv6 permanentemente?

54

Como podemos desativar todo o sistema IPv6 através de comandos do terminal?

Eu li a edição do /etc/modprobe.d/aliases e a substituição:

alias net-pf-10 ipv6

com:

alias net-pf-10 off
alias ipv6 off

É seguro aplicar e desabilita permanentemente o ipv6 durante as reinicializações?

Tinfoilhats
fonte
5
Por que você deseja desativar o IPv6 permanentemente?
Anderson Green
2
Absolutamente (bem, eu realmente posso encontrar um, no MS Windows) não há razão para desativar o IPv6. Por que você gostaria de fazer isso?
Anders
17
Não há absolutamente nenhuma razão para ativar o ipv6. Tudo ainda é ipv4 e não oferece vantagens para quem gerencia uma pequena rede e tem tempo limitado. É mais um vetor para ataques e possíveis erros de configuração e é prudente desativá-los. Provavelmente não é o que qualquer engenheiro da IETF quer ouvir, mas o problema é deles, não meu. Vou habilitá-lo quando tiver um bom motivo, até então, apenas outro vetor de ataque que tenho que gerenciar.
Jonathan S. Fisher
8
Desabilitar o IPv6 não o torna imune a ataques IPv6. É muito melhor habilitá-lo, lidar com ele e aprender com ele, é a única maneira de tornar seu ambiente um pouco mais seguro. É melhor que todos aprendam "Como desativar o IPv4 permanentemente". O IPv6 é muito mais fácil que o IPv4, para começar, não existe mais NAT, portanto, menos uma coisa para gerenciar ... A Internet está crescendo muito rápido. Em alguns anos, a rede IPv6 será maior que o IPv4, portanto, com o IPv4, você estará fora da Internet real. Vá em frente cara! Atualize seu IP !! Mudar é uma coisa boa.
ThiagoCMC
7
@ JonathanS.Fisher e outros - Esses comentários não são úteis. Só porque você pode não estar ciente de um motivo para desativar o IPv6, não significa que não exista um. Um caso importante é para serviços de VPN que não suportam IPv6. Se você não desativá-lo, você vazará seu endereço IPv6.
Scone

Respostas:

75

Desativei com êxito o IPv6 depois de inserir as seguintes linhas /etc/sysctl.conf:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Também execute este comando para carregar as alterações

sudo sysctl -p
Eric Carvalho
fonte
O Uubuntu no VMware não pode ser ping e eu fecho o ipv6 no Ubuntu, agora está ok.
Honghe.Wu
12
Após adicionar linhas ao sysctl.conf, execute sudo sysctl -pou reinicie para permitir que as alterações entrem em vigor.
Rajat Gupta 13/03
4
Eu preciso fazer isso apenas no modo sem fio, como uma solução alternativa para que eu possa conectar novamente. Veja como fazer isso apenas para um adaptador:net.ipv6.conf.wlan0.disable_ipv6 = 1
cmc 21/11
11
Isso não funciona no Ubuntu 17.10. Veja o comentário NullNoname abaixo para a correção do grub.
Lucas
11
Também não funciona no Ubuntu 16.04. O método Grub funciona.
Penghe Geng 26/03
54

Se o seu PC não carregar o /etc/sysctl.conf no momento da inicialização (que é o meu caso), será necessário desabilitar o IPv6 no grub. O kernel do Linux possui uma opção de inicialização chamada "ipv6.disable = 1", que desativa o IPv6 na inicialização.

Para editar as opções de inicialização, edite "/ etc / default / grub" com qualquer editor de texto como usuário root:

sudo nano /etc/default/grub

Encontre a linha que contém "GRUB_CMDLINE_LINUX_DEFAULT":

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Adicione "ipv6.disable = 1" à opção de inicialização e salve seu arquivo grub:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 quiet splash"

Por fim, atualize o grub:

sudo update-grub
NullNoname
fonte
6
+1 funciona e desativa o IPv6 completamente, portanto, não há vestígios /proc/sys/net/ipv6/restantes que possam produzir problemas, como X11 forwarding request failedporque sshdtentam se vincular a uma interface IPv6 não configurada. Observe que, da mesma forma, você pode se livrar do IPv4 dessa maneira em VMs IPv6 puras. Obrigado.
Tino
7

A resposta de Carvalho, incluindo o comentário sobre ter que correr sudo sysctl -P, me ajudou muito.

No entanto, no meu caso, pelo menos:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.<mydevice>.disable_ipv6 = 1

e parece que a segunda linha era necessária.

Talvez isso tenha a ver com o fato de eu estar usando o TP-Link Archer T2U, para o qual tive que criar um driver personalizado a partir da fonte.
Minha suposição é que, como resultado, <mydevice>não conta como um dos " all".
Portanto, se você adicionou um driver de rede (personalizado) personalizado, net.ipv6.conf.all.disable_ipv6 = 1pode não ser suficiente para desativar a rede IPv6.

Tenho que admitir que eu não tentei a linha
net.ipv6.conf.default.disable_ipv6 = 1

polynomial_donut
fonte
11
Voto positivo por mencionar que às vezes é necessário desabilitar dispositivos diferentes.
Scone
A falta da defaultlinha é provavelmente o problema aqui. Se o seu driver ainda não estava carregado no ponto do processo de inicialização quando o sysctl foi executado, ele não foi incluído all- mas definir o padrão significaria que ele teria recebido a configuração mais tarde, quando foi carregado.
Charles Duffy
11
Eu tinha a defaultentrada e precisava configurar o dispositivo específico para desativá-lo com êxito.
Alfonso Nishikawa
7

Veja como verificar se o ipv6 está ativado no seu computador

test -f /proc/net/if_inet6 && echo "Running kernel is IPv6 ready"

Se você ver

Running kernel is IPv6 ready

está habilitado.

Se você não vê saída, não é.

Para desativar o ipv6 se as outras respostas nesta página não funcionarem para você, coloque o ipv6 na lista negra. Para fazer isso, use o seguinte comando:

echo 'blacklist ipv6' | sudo tee -a '/etc/modprobe.d/blacklist.local' >/dev/null 

Além disso, isso também pode ajudar:

echo 'install ipv6 /bin/true' | sudo tee -a '/etc/modprobe.d/blacklist.local' >/dev/null

Reinicie para que as alterações entrem em vigor. Para verificar se está ativado após a inicialização, execute este comando novamente:

test -f /proc/net/if_inet6 && echo "Running kernel is IPv6 ready"

Não deve haver saída.

Clique aqui para obter informações sobre como desativar o IPV6 na inicialização.

mchid
fonte
Esta resposta assume que o ipv6recurso de kernels é um módulo do kernel (usado blacklist.localpara impedir o carregamento). Há um caso em que o ipv6 é compilado no kernel (não um módulo); nesse caso, é necessário inicializar o kernel com ipv6.disable=1o parâmetro de inicialização (para fazer isso, é necessário: (1) sudo gedit /etc/default/grub(2) procurar a linha GRUB_CMDLINE_LINUX_DEFAULT=<args>e (3) adicionar ipv6.disable=1aos parâmetros de inicialização)
humanidadeANDpeace
@humanityANDpeace Você pode estar interessado nesta resposta mais abrangente: unix.stackexchange.com/a/190189
mchid
6

Se você estiver usando uma versão moderna (eu estou no 16.04 LTS) do Ubuntu, você poderá usar esta solução organizada:

Crie /etc/sysctl.d/60-ipv6-disable.confcontendo o seguinte texto:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Corre service procps start

user10550
fonte
2
esta é a maneira mais limpa de fazer isso - não entenda por que foi votada com voto negativo. Também funciona no fedora / centos / redhat. ele tem a vantagem de que não altera arquivos padrão do sistema (como diretamente sysctl.conf como sugerido na resposta mais popular)
Costin Guşă
@ Costin Eu não diminuí a votação, mas isso nem sempre funciona. Às vezes, é necessário colocar o nome do dispositivo específico (por exemplo, no caso de instalações de driver personalizadas). Veja o comentário de Alfonso Nishikawas na minha resposta.
polynomial_donut
Sou grato por ter seguido essa abordagem, porque acabei perdendo minha conexão em um servidor remoto (era necessário IPv6) e foi muito fácil direcionar meu assistente no local para remover o arquivo e reinicializá-lo.
Roger Dueck
eu tive que rodar service procps restartno ubuntu 18.04
iPherian