Como desativar a configuração automática no IPv6 no Linux?

22

Como posso desativar permanentemente a configuração automática do IPv6 no Linux? Quando tento excluir manualmente um endereço de uma interface com:

ip -6 addr del 2001:0db8:85a3:0000:0000:8a2e:0370:7334/64 dev eth1

Ele reaparecerá alguns segundos depois. Quero que ele se apague permanentemente, mas sem desabilitar o IPv6 todos juntos.

Grumbel
fonte

Respostas:

21

A configuração automática pode ser desabilitada temporariamente para eth1 com:

sudo sysctl -w net.ipv6.conf.eth1.autoconf=0
sudo sysctl -w net.ipv6.conf.eth1.accept_ra=0

ou para todas as interfaces com:

sudo sysctl -w net.ipv6.conf.all.autoconf=0
sudo sysctl -w net.ipv6.conf.all.accept_ra=0

A reativação funciona usando 1 em vez de 0 na chamada.

Desativá-lo permanentemente pode ser feito com uma entrada para /etc/sysctl.conf. No Debian Etch (provavelmente também no mais recente), sem definir o accept_ra, o sistema irá configurar automaticamente usando o endereço local do Link ( fe80..)

Como o Gart mencionou abaixo, a configuração automática de endereços e a descoberta de roteadores serão desativadas se o próprio host for um roteador e accept_ranão for 2, ou seja,

net.ipv6.conf.<iface|all|default>.forwarding=1

e

net.ipv6.conf.<iface|all|default>.accept_ra=0 ou net.ipv6.conf.<iface|all|default>.accept_ra=1.

onde ifaceestá sua interface

Grumbel
fonte
3
Além disso, a configuração automática de endereços e a descoberta do roteador serão desativadas se o próprio host for um roteador, ou seja, net.ipv6.conf.all.forwarding=1estiver definido.
Gart
4

net.ipv6.conf.all.accept_ra = 0 acima não deve ser feito, pois os RAs são necessários para indicar o link on e off-link do prefixo (conforme RFC5942), bem como a configuração automatizada de vários outros parâmetros, como MTU, tempos limite de descoberta de vizinhos etc.

Se você deseja desativar a configuração automática, desative o sistema de configuração automática como acima, ou desative o A (bit de configuração automática) na Opção de informações do prefixo (PIO) no RA.

Mark S
fonte
3
sudo sysctl -w net.ipv6.conf.all.autoconf=0

Isso não funcionou para mim no Debian Wheezy. Depois de examinar o /etc/sysctl.conf, eu precisava usar

sudo sysctl -w net.ipv6.conf.default.autoconf=0
Nick B.
fonte
3

A sysctlsolução não funcionou para nós no Ubuntu 18.04 Bionic. Resolvemos:

Editando /etc/netplan/01-netcfg.yaml, configure:

network:
  ...
  ethernets:
    eth0:
      ...
      dhcp6: no
      accept-ra: no

Você pode precisar usar o nome da interface em vez de eth0. Depois de salvar o arquivo, execute:

netplan apply ou reboot

Se você já recebeu um IP IPv6 da configuração automática e deseja removê-lo sem reiniciar, você pode executar:

ip -6 addr del 1111:2222:1:0:aaaa:bbbb:cccc:dddd/64 dev eth0 

Claro que você precisa substituir o IP e o dispositivo neste comando.

Jeroen Vermeulen - MageHost
fonte
isso acabou de fazer o meu dia estar coçando minha cabeça por alguns meses: D
anthonysomerset
2
Normalmente, eu apenas arranho o Google até encontrá-lo.
Jeroen Vermeulen - MageHost 19/09/18
1
Isso funcionou quando eu tentei, mas o problema de desativar o Accept-ra é bastante perigoso, como mencionado por Mark S - parece funcionar, mas mais tarde você pode achar que estão faltando pacotes porque atingem um ponto de fragmentação ou um roteador de failover é usado. Também quebra pings. O motivo pelo qual eu estava tentando fazer isso era corresponder de forma confiável ao meu registro SPF em mensagens enviadas, mas percebi que deveria estar usando uma máscara de rede no registro, porque no IPv6 um intervalo de endereços efetivamente pertence a uma máquina, não a um único endereço. .
Phil McKerracher 26/10/10
2

O problema com o Ubuntu 18 e o ipv6 é que o systemd-networkd controla os parâmetros do kernel, portanto, embora se possa desativar o ipv6 com o sysctl, o networkd ficará mais do que feliz em ativá-los, se a configuração não indicar o contrário.

Minha solução para desativar o ipv6 é configurar o link-local no netplan para um escalar vazio (desde que você não possua IPs de link-local IPv4)

network:
     version: 2
     renderer: networkd
     ethernets:
     eth0:
        ..
        link-local: [ ]

A configuração compilará a configuração do networkd que será publicada em /run/systemd/network/10-netplan-eth0.network e convencerá o networkd a não instalar o ipv6 para eth0

Se você quiser desativar o ipv6 também no loopback, isso é facilmente alcançado configurando o parâmetro do kernel net.ipv6.conf.all.disable_ipv6 como 1. networkd não parece controlar o loopback.

sysctl -w net.ipv6.conf.all.disable_ipv6=1
Daniel
fonte
Eu realmente gosto da sua solução muito limpa. Como não usamos endereços locais de link, adicionar o escalar vazio é a solução perfeita. Depois disso, tivemos que reiniciar o servidor, pois o netplan apply mantinha os endereços IPv6 já atribuídos em ambas as nossas interfaces Ethernet. Mas após a reinicialização, tudo funciona exatamente como você disse. Eu não acho que exista uma razão para me preocupar em desativar o IPv6 na interface de loopback, então pulei a parte do sysctl. Obrigado!
Zoltan