Comment désactiver IPv6 mappé IPv4?

17

Sur ma boîte Linux, j'ai différents démons qui peuvent se lier à toutes les interfaces compatibles IPv6 ::. Quand ils le font, Linux envoie des requêtes IPv4 à ce démon cartographié comme, par exemple, ::ffff:198.51.100.37.

J'aimerais plutôt que les connexions IPv4 soient refusées et que seules les connexions IPv6 soient acceptées lorsqu'un démon se lie à ::. Pour recevoir des connexions IPv4, je veux que le démon doive se lier explicitement à 0.0.0.0(ainsi que ::).

En d'autres termes, je veux exécuter un service exclusivement sur IPv6 et non sur IPv4.

Existe-t-il un moyen d'y parvenir?

Michael Hampton
la source

Réponses:

22

Ceci est contrôlé par le net.ipv6.bindv6onlysysctl. Ajoutez ce qui suit à /etc/sysctl.confet exécutez sudo sysctl -ppour effectuer la modification.

net.ipv6.bindv6only=1

Les applications peuvent également se lier explicitement uniquement à l'adresse IPv6 au lieu de la modifier globalement, par exemple, nginx a l' ipv6onlyoption de la listendirective. Cela correspond à l' IPV6_V6ONLYoption pour setsockopt().

mgorven
la source
Heureusement, j'ai trouvé que l'application (dans ce cas, OpenSSH) définissait déjà IPV6_V6ONLY sur le socket lorsque j'ai défini ListenAddress ::, je n'ai donc pas eu besoin de recourir à l'utilisation de sysctl (et de reconfigurer tout le reste).
Michael Hampton