Solución 1:
Bueno, después de una pequeña charla en el IRC, la opinión general es que el kernel de Linux comparte algo de código entre ipv4 e ipv6, y eso puede hacer que la desactivación de ipv4 sea completamente imposible. Puedes probar para 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 sea posible en este momento deshabilitar completamente ipv4.
EDITAR: Después de una revisión rápida en make menuconfig
en el kernel 2.6.36 no pude encontrar una manera de deshabilitar ipv4 sin deshabilitar toda la pila TCP/IP (y por lo tanto, ipv6).
Solución 2:
Si esto es para desarrolladores, entonces se podría usar la "interposición de bibliotecas", con LD_PRELOAD alguna biblioteca manipulada con funciones auxiliares que simplemente devuelvan errores (o que llamen a los reales según el día de la semana o algún otro criterio externo).
Solución 3:
No creo que sea posible deshabilitar IPv4 por completo, pero dependiendo de su objetivo, eliminar todo el tráfico de IPv4 usando iptables
podría ser suficiente, ¿no?
Algo como esto debería funcionar. No lo he probado en ninguna máquina, ya que estoy accediendo a ellas a través de IPv4.
sudo iptables -I INPUT -j DROP
sudo iptables -O OUTPUT -j DROP