¿Cómo deshabilitar dinámicamente la pila IPv4 de Linux?

17

¿Cómo puedo deshabilitar la pila IPv4 de Linux? Quiero hacerlo dinámicamente , es decir, a veces quiero que esté habilitado y a veces solo quiero la pila IPv6 . ¿Hay alguna forma portátil de hacer eso? Si sabes cómo hacerlo en cualquier distribución, también me ayudará mucho.

Aldebarán
fuente
2
@kasperd Nada ha cambiado desde 2011.
Michael Hampton

Respuestas:

21

Bueno, después de un pequeño chat en el IRC, la opinión general es que el kernel de Linux comparte algún código entre ipv4 e ipv6, y eso puede hacer que la desactivación por completo de ipv4 sea completamente imposible. Puede intentar compilar el núcleo sin las partes de ipv4, pero es posible que ipv6 no se compile en este caso (¡pero nada le impide intentarlo!).

Puede eliminar las direcciones ipv4 de las interfaces, AFAIK, pero no creo que en este momento sea posible deshabilitar completamente ipv4.

EDITAR: Después de una comprobación rápida make menuconfigdel kernel 2.6.36, no pude encontrar una manera de deshabilitar ipv4 sin deshabilitar toda la pila TCP / IP (y, por lo tanto, ipv6).

volcado de memoria
fuente
4

Si esto es para desarrolladores, entonces se podría usar "interposición de biblioteca", con LD_PRELOAD alguna biblioteca manipulada con funciones de código auxiliar que simplemente devuelven errores (o que llaman a los reales dependiendo del día de la semana o algún otro criterio externo).

ramruma
fuente
2

No creo que sea posible deshabilitar IPv4 por completo, pero dependiendo de su objetivo, dejar todo el tráfico de IPv4 usando iptablespodría ser suficiente, ¿no?

Algo como esto debería funcionar. No lo he probado en ninguna máquina, ya que estoy accediendo a ellos a través de IPv4.

sudo iptables -I INPUT -j DROP
sudo iptables -O OUTPUT -j DROP
Antoine Albertelli
fuente
1
Esto bloqueará el tráfico, que a veces puede ser útil. pero no impedirá que los programas vinculen un socket IPv4. Esto es necesario para deshabilitar completamente IPv4.
Michael Hampton
Lo que hice en una máquina donde necesitaba ejecutar solo IPv6 fue deshabilitar el cliente DHCP /etc/network/interfaces.d. No es lo mismo que deshabilitar IPv4 ya systemd-resolvedque todavía está escuchando 127.0.0.53:53. Pero fue suficiente para atender mis necesidades inmediatas y preferí jugar con ellas iptables.
kasperd
1

En su mayoría, debe volver a compilar el núcleo sin módulos ipv4. fedora

No puede deshabilitarlo por completo porque el sistema usa la interfaz de bucle invertido 127.0.0.1.
Pero puede deshabilitar algunas funciones de ipv4 con el comando if-cfg.

MealstroM
fuente