¿Cómo deshabilito IPv4 mapeado IPv6?

17

En mi caja de Linux, tengo varios demonios que pueden unirse a todas las interfaces habilitadas para IPv6 ::. Cuando lo hacen, Linux envía solicitudes de IPv4 a ese demonio asignada como, por ejemplo, ::ffff:198.51.100.37.

En cambio, me gustaría que se rechacen las conexiones IPv4 y que solo se acepten las conexiones IPv6 cuando se vincula un demonio ::. Para recibir conexiones IPv4, quiero que el demonio tenga que vincularse explícitamente 0.0.0.0(así como ::).

En otras palabras, quiero ejecutar un servicio exclusivamente en IPv6 y no en IPv4.

¿Hay alguna manera de lograr esto?

Michael Hampton
fuente

Respuestas:

22

Esto es controlado por el net.ipv6.bindv6onlysysctl. Agregue lo siguiente /etc/sysctl.confy ejecute sudo sysctl -ppara efectuar el cambio.

net.ipv6.bindv6only=1

Las aplicaciones también pueden vincularse explícitamente a la dirección IPv6 en lugar de cambiar esto globalmente, por ejemplo, nginx tiene la ipv6onlyopción de la listendirectiva. Esto corresponde a la IPV6_V6ONLYopción de setsockopt().

mgorven
fuente
Afortunadamente, descubrí que la aplicación (en este caso, OpenSSH) ya estaba configurando IPV6_V6ONLY en el zócalo cuando lo configuré, ListenAddress ::por lo que no tuve que recurrir a usar el sysctl (y reconfigurar todo lo demás).
Michael Hampton