Debian / Mint / Raspbian / Ubuntu - Comment forcer la configuration automatique SLAAC EUI64 IPv6?

3

J'ai un préfixe IPv6 / 62 statique et j'utilise radvd sur mon routeur (sous Debian) pour publier un / 64 depuis celui-ci sur l'ensemble de mon réseau. Autre que mon routeur (qui est :: 1), je laisse EUI64 définir le suffixe en fonction de l'adresse MAC (c'est-à-dire correspondre au suffixe de l'adresse automatique fe80 ::).

La plupart des Linux migrent vers le masquage pour des raisons de confidentialité. Je ne suis vraiment pas préoccupé par les implications en termes de confidentialité, et souhaite en outre une adresse IPv6 parfaitement prévisible pour des services tels que sshd.

En théorie, cela devrait être facile à configurer. Par exemple, sur un Raspberry Pi exécutant Raspbian, j'ai ajouté au fichier /etc/sysctl.conf:

################################################## ###################

# Activer IPv6 EUI64

#

net.ipv6.conf.all.use_tempaddr = 0

net.ipv6.conf.default.use_tempaddr = 0

net.ipv6.conf.eth0.use_tempaddr = 0

Hélas, rien ne change. (La dernière ligne était une tentative ultime; les deux précédentes devaient vraiment fonctionner seules.)

Quelque chose dans ces systèmes empêche EUI64 de fonctionner. De quoi s'agit-il et comment l'activer?

Cette machine particulière n'exécute pas NetworkManager, mais certaines d'entre elles le sont.

Jim MacKenzie
la source

Réponses:

4

Vous confondez deux types d'adresses différents:

  • adresses temporaires générées selon RFC 4941 "Privacy extensions",
  • adresses permanentes générées conformément à la RFC 7217 "Identificateurs d'interface opaques".

Les premiers sont toujours générés en plus de l'adresse par défaut et ne les remplacent pas, donc certainement pas ce que vous avez en tête.

Ces derniers remplacent l'adresse par défaut basée sur EUI64, mais ils ne sont pas temporaires et n'ont rien à voir avec le use_tempaddrbouton. Au lieu de cela, vous devez changer le mode de génération d'adresse principale:

  • Si SLAAC est exécuté par le noyau, changez ce sysctl:

    net.ipv6.conf.default.addr_gen_mode = 0
    net.ipv6.conf.eth0.addr_gen_mode = 0
    

    (En regardant le code source, il ne semble pas que ce all.addr_gen_modesoit implémenté.)

  • Si SLAAC est exécuté par dhcpcd , utilisez cette dhcpcd.confoption:

    slaac hwaddr
    
  • Si SLAAC est exécuté par NetworkManager:

    nmcli con modify "Connection name" ipv6.addr-gen-mode eui64
    
Grawity
la source
Je vous remercie; Je vais essayer ceci. Je n'ai pas absolument besoin que mes systèmes utilisent les adresses EUI64 par défaut, bien que je les préfère car elles sont prévisibles. Un suffixe IPv6 permanent d'une autre sorte conviendrait également. L’adresse que j’ai maintenant semble être temporaire 2: eth0: <BROADCAST, MULTICAST, UP, LOWER_UP> mtu 1500 état UP qlen 1000 inet6 blahblah :: 4d6a: b4b0: 7b0d: 41af / 64 scope global mngtmpaddr noprefixroute dynamic
Jim MacKenzie
Le secret de cette situation était "slaac hwaddr" dans /etc/dhcpcd.conf. Je vous remercie.
Jim MacKenzie
1
Non, s'il ne dit pas le mot exact temporary , vous recherchez toujours une adresse permanente et vous pouvez l'utiliser dans le DNS et ailleurs. (Il est basé sur le hachage du préfixe du réseau et d'une clé secrète ... euh, dans le cas de dhcpcd probablement /etc/dhcpd.duid?)
grawity
1
Ne soyez pas confus par mngtmpaddrce qui a un sens presque opposé. (Il dit au noyau "si use_tempaddr est actif, veuillez gérer les adresses temporaires en fonction de cette adresse".)
grawity