Como desabilitar o IPv6 no Debian quando sysctl.conf e GRUB_CMDLINE_LINUX não funcionam?

0

Primeiro,

se eu emitir sysctl net.ipv6.conf.all.disable_ipv6=1 da linha de comando depois que o sistema for iniciado, obtenho o resultado que quero - o IPv6 está de fato desativado.

Agora, para o problema de tornar esse comportamento persistente após uma reinicialização.

É fácil encontrar sugestões de como fazer isso, geralmente elas giram em torno de colocar net.ipv6.conf.all.disable_ipv6=1 em um arquivo no diretório /etc/sysctl.d/ ou no arquivo de configuração do próprio sysctl, ou seja, /etc/sysctl.conf . Outras abordagens mencionadas incluem a adição de

GRUB_CMDLINE_LINUX="ipv6.disable=1"

Para /etc/default/grub

Isto é mencionado, por exemplo, aqui:

link

Eu tentei tudo isso, eles não funcionam. ifconfig mostra claramente que o IPv6 está ativado para a interface. Novamente, se eu fizer apenas um manual sysctl após a inicialização, ele será desabilitado como esperado.

sysctl -p não faz nada para mim, apenas escrevendo o comando verbatim como acima funciona.

Eu também tentei colocar o comando sysctl em /etc/rc.local , que sei que roda corretamente observando outros comandos que eu posso colocar lá. No entanto, apesar de executar, não parece ter efeito.

Eu também tentei outros comandos em vez de apenas all.disable_ipv6 , como default.disable_ipv6 e enp0s3.disable_ipv6 (verifiquei que enp0s3 é de fato minha interface Ethernet).

Isso parece um pouco semelhante ao link para mim, mas não tenho ideia porque isso acontece. Estou confiante de que tudo que eu tive que fazer em um sistema diferente foi simplesmente colocar isso em um arquivo em /etc/sysctl.d /.

Uma maneira de desabilitar isso que eu já conheço, além do que tentei, seria recompilar o kernel manualmente sem suporte a IPv6. No entanto, isso é simplesmente um problema excessivo, não é confiável e é muito trabalho para fazer e manter.

    
por AlphaCentauri 05.09.2018 / 07:08

2 respostas

1

Faz muito tempo que o Debian sysadmin administra centenas de máquinas virtuais Debian, e posso garantir que você emite a configuração do kernel sysctl + para desativar o IPv6 é mais que suficiente para eliminá-lo para sempre.

Seu problema aqui no seu cenário é que não é suficiente editar /etc/default/grub para o (s) parâmetro (s) lá a ser aplicado ao kernel.

Você também precisa fazer:

sudo update-grub2

E, em seguida, reinicialize o parâmetro do kernel para desativar o IPv6 para entrar em vigor.

A propósito, você pode verificar quais parâmetros foram passados para o seu kernel em tempo de execução:

$ cat /proc/cmdline 
BOOT_IMAGE=/boot/vmlinuz-4.10.5-antix.3-amd64-smp root=UUID=00c17984-859f-4197-8bd8-b346ddd092bd ro iommu=1 intel_iommu=on iommu=pt ipv6.disable=1 intremap=no_x2apic_optout radeon.modeset=0

Além disso, como @schweik afirma corretamente, após você ter conseguido matar o IPv6, você pode querer revisitar a configuração de alguns daemons que são compilados / têm configuração específica para o IPv6. Observe as mensagens de erro e / ou registros de erros relacionados ao IPv6 ao inicializar seu sistema.

PS Também esteja ciente de que, na arquitetura Arm ou MIPS, muitas vezes você não tem o grub e precisa editar um arquivo diferente de /etc/default/grub . No entanto, eu suponho que, se você está editando, você tem o grub.

    
por 05.09.2018 / 11:51
0

IPv6 é um protocolo realmente muito chato ao usar, e. rede privada. O problema é que este protocolo é forçado em todos os serviços, portanto, na rede IPv4 pura, diminui a velocidade com seus tempos limite.

Bem, se você desabilitar o IPv6 em /etc/sysctl.conf ou em qualquer outro lugar próximo ao início do sistema, alguns serviços, que estão configurados para usar o IPv6 (e há muitos deles), podem ativá-lo novamente. Desativar o IPv6 depois que o sistema estiver totalmente carregado e configurado ativa sua vontade melhor. Mas se você, após essa alteração, alterar sua conexão de rede (por exemplo, formar wifi para conectar), o IPv6 poderá aparecer novamente. O serviço suspeito é o NetworkManager, portanto, eu paro este serviço (principalmente em servidores) ou desabilito-o (você também pode configurar cada conexão para ignorar o IPv6 - eu não encontrei a desativação global para isso). Existem outras configurações onde é necessário desabilitar o IPv6 também: em /etc/ssh/sshd_config adicione a linha AddressFamily inet , comente toda a linha com IPv6 em /etc/hosts , em /etc/samba/smb.conf especifique IPv4 expressamente (interfaces = 192.168.43.11 ) não nome da interface nem o nome do domínio. E assim por diante. Se estiver solicitando o uso do endereço DHCP: dhclient -4 eth0 , o que força uma solicitação IPv4 até mesmo a atribuição automática de IPv6.

A boa prática é observar as portas de escuta com netstat -lptun (ou ss -lptun ) e consultar as páginas de manual do processo usando o endereço IPv6 como desativá-lo. Em alguns casos, você não pode ganhar (por exemplo, dns-server sempre escuta em IPv6), mas normalmente você pode encontrar o caminho.

O modo 100% poderia ser recompilar o kernel sem o IPv6, mas você corre o risco de alguns aplicativos se recusarem a iniciar até recompilar também.

Boa sorte

    
por 05.09.2018 / 07:58