Como desativar completamente e dinamicamente a pilha IPv4 do Linux?

17

Como posso desabilitar a pilha IPv4 do Linux? Eu quero fazer isso dinamicamente , ou seja, às vezes eu quero habilitado e às vezes eu quero apenas pilha IPv6 . Existe alguma maneira portátil de fazer isso? Se você souber como fazer isso em qualquer distribuição, isso também me ajudará bastante.

Aldebaran
fonte
2
@kasperd Nada mudou desde 2011.
Michael Hampton

Respostas:

21

Bem, após um pequeno bate-papo no IRC, a opinião geral é que o kernel do linux compartilha algum código entre o ipv4 e o ipv6, e isso pode tornar completamente incapacitante a desativação do ipv4. Você pode tentar compilar o kernel sem as partes do ipv4, mas o ipv6 pode não ser compilado nesse caso (mas nada impede você de tentar!).

Você pode remover os endereços ipv4 das interfaces, AFAIK, mas não acho possível, no momento, desativar completamente o ipv4.

EDIT: Após uma rápida verificação no make menuconfigkernel 2.6.36, não consegui encontrar uma maneira de desativar o ipv4 sem desativar toda a pilha TCP / IP (e, portanto, o ipv6).

coredump
fonte
4

Se for para desenvolvedores, poderá ser usada "interposição de biblioteca", com LD_PRELOAD alguma biblioteca com funções stub que simplesmente retornam erros (ou que chamam os reais, dependendo do dia da semana ou de algum outro critério externo).

ramruma
fonte
2

Não acho possível desabilitar completamente o IPv4, mas, dependendo do seu objetivo, eliminar todo o tráfego IPv4 usando iptablespode ser suficiente, não?

Algo assim deve funcionar. Não testei em nenhuma máquina, pois estou acessando-as através do IPv4.

sudo iptables -I INPUT -j DROP
sudo iptables -O OUTPUT -j DROP
Antoine Albertelli
fonte
1
Isso bloqueará o tráfego, que às vezes pode ser útil. mas não impedirá que os programas vinculem um soquete IPv4. Isso é necessário para desativar completamente o IPv4.
Michael Hampton
O que fiz em uma máquina em que precisava executar apenas o IPv6 foi desativar o cliente DHCP /etc/network/interfaces.d. Não é o mesmo que desativar o IPv4, pois systemd-resolvedainda está ouvindo 127.0.0.53:53. Mas foi suficiente para atender às minhas necessidades imediatas e muito preferido para mexer iptables.
kasperd
1

Principalmente você deve recompilar o seu kernel sem os módulos ipv4. fedora

Você não pode desativá-lo completamente porque o sistema usa a interface de loopback 127.0.0.1.
Mas você pode desativar algumas funções do ipv4 com o comando if-cfg.

MealstroM
fonte