Adressage IPv6, partie locale statique du préfixe dynamique


10

Le routeur de mon réseau distribue un préfixe IPv6 attribué par mon FAI. Ce préfixe est dynamique mais "assez collant".

J'aimerais que mes machines récupèrent automatiquement le préfixe annoncé dans les RA, mais le combinent avec une partie locale spécifiée par l'utilisateur plutôt que d'en générer une au hasard ou en fonction de l'adresse MAC. Y a-t-il un moyen facile de le faire?


1
Je n'ai vu aucun système d'exploitation vous permettant de faire cela :(
Sander Steffann

@SanderSteffann Vous n'avez jamais utilisé Linux?
Michael Hampton

1
@Michael Je n'ai jamais vu d'OS qui vous permet de configurer des jetons IID. Techniquement, le noyau peut le faire, mais aucun système d'exploitation (comme dans la distribution) ne le prend en charge :(
Sander Steffann

Réponses:


11

Il y a deux façons de faire ça. L'un est le moyen le plus simple et l'autre le plus difficile.

Le moyen le plus simple consiste à exécuter un serveur DHCPv6 sur votre réseau et à attribuer vous-même des adresses d'hôte à chaque périphérique. Ou laissez le serveur choisir la partie hôte; les serveurs DHCPv6 que j'ai vus garderont la même partie hôte même si le préfixe change.

La méthode la plus difficile consiste à utiliser ip tokenpour définir des identificateurs d'interface à jeton. Ceci est décrit comme:

La prise en charge des identificateurs d'interface à jeton IPv6 est utilisée pour attribuer des adresses de partie hôte bien connues aux nœuds tout en obtenant toujours un préfixe de réseau global à partir des publicités de routeur. La cible principale des identificateurs à jeton est les plates-formes de serveur où les adresses sont généralement configurées manuellement, plutôt que d'utiliser DHCPv6 ou SLAAC. En utilisant des identificateurs à jetons, les hôtes peuvent toujours déterminer leur préfixe de réseau à l'aide de SLAAC, mais plus facilement être automatiquement renumérotés si leur préfixe de réseau change. Les identifiants IPv6 Tokenized sont décrits dans le projet: <draft-chown-6man-tokenised-ipv6-identifiers-02>.

La raison pour laquelle cela est difficile est que, bien que Linux comprenne cette fonctionnalité, aucune distribution Linux à ma connaissance ne comprend la prise en charge de la persistance d'une telle configuration et de son application au démarrage, comme elles le font pour les adresses manuelles ou configurées DHCP. Donc, cela ne fonctionnera probablement pas très bien pour vous, jusqu'à ce qu'une distribution le fasse. Notez qu'il est désormais possible de configurer les jetons IPv6 dans NetworkManager et systemd-networkd; les réponses plus récentes ont des instructions de configuration spécifiques.


Enfin, si votre FAI modifie parfois votre préfixe, envisagez d'utiliser des adresses locales uniques au sein de votre réseau. De cette façon, tous vos appareils auront toujours une adresse qui ne changera jamais, avec laquelle ils peuvent se parler. Certains routeurs domestiques / SOHO prenant en charge IPv6 (comme OpenWrt) ont une option pour activer ULA sur l'ensemble du réseau domestique; s'il y a plusieurs routeurs dans la maison, cela doit être activé sur le routeur qui se connecte au FAI.


Le problème qui a suscité la question était que mon routeur FAI envoie des RA avec une courte durée de vie. Cela provoque de gros problèmes avec les adresses de confidentialité. OTOH Je n'aime pas beaucoup l'idée de révéler mon adresse MAC au monde.
plugwash

Une partie locale statique évite les problèmes avec les adresses de confidentialité sans révéler mon adresse MAC, merci.
plugwash

Connaissez-vous un moyen d'ajouter plusieurs jetons à une seule interface pour définir plusieurs adresses IPv6 «statiques dynamiques»?
wedi

@wedi Linux ne prend en charge qu'un seul jeton par interface. Les jetons IPv6 ne sont probablement pas la solution à votre problème, quel qu'il soit.
Michael Hampton

6

Michael a fait un très bon résumé et la récente astuce de plugwash était la meilleure que j'ai pu trouver après avoir cherché pendant plusieurs heures pour une solution CentOS 7 / RHEL (également systemd et network manager). Après m'être habitué à nmcli (j'utilisais principalement ifcfg et ip) - j'ai pu l'appliquer avec succès.

Mais creuser plus profondément selon https://developer.gnome.org/NetworkManager/stable/settings-ipv6.html NetworkManager prend directement en charge les identificateurs d'interface à jeton IPv6 en tant que propriété (à partir de la version 1.4 août 2016 http://news.softpedia.com/ news / networkmanager-1-4-ajoute-support-for-setting-ipv6-tokenized-interface-identifiers-507601.shtml ).

Vous n'avez donc pas besoin de définir les paramètres IPv6 du gestionnaire de réseau pour les ignorer, mais vous devez définir les paramètres sur

nmcli connection modify eth0 ipv6.method "auto" # if not already
nmcli connection modify eth0 ipv6.addr-gen-mode "eui64" # use interface token
nmcli connection modify eth0 ipv6.token "::2"

qui écrira IPV6_TOKEN=::2dans / etc / sysconfig / network-scripts / ifcfg-eth0 pour survivre à un redémarrage. Pour appliquer immédiatement ce redémarrage de l'interface par

nmcli connection up id eth0  # restart

3

Merci à Michael d'avoir confirmé que Linux prend en charge la fonctionnalité et de pointer la commande de bas niveau. Cette réponse explique comment le faire fonctionner en pratique sur un bureau étendu Debian (avec systemd et network-manager).

Modifiez d'abord la connexion dans le gestionnaire de réseau et définissez les paramètres IPv6 à ignorer.

Créez maintenant un fichier /etc/NetworkManager/dispatcher.d/pre-up.d/iptoken. Le fichier doit appartenir à root, aux autorisations 755 et au contenu suivant.

#!/bin/sh
ip token set ::2 dev eth0

Remplacez eth0 par le périphérique souhaité et :: 2 par le suffixe souhaité.


2

Sous Linux, vous pouvez utiliser systemd-network.

Créez simplement un .networkfichier sous /etc/systemd/network/somename.network:

[Match]
Name=e*

[Network]
DHCP=yes
IPv6Token=::1

au lieu de e*faire correspondre toutes les interfaces commençant par e, vous pouvez entrer le nom complet de l'interface. Cela active DHCP {v4, v6} et utilise ::1comme suffixe. Vous pouvez choisir n'importe quelle adresse IPv6, mais les 64 premiers bits doivent être définis sur zéro.

Après cela, activez et démarrez le systemd-networkd.service.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.