Démarrage sans disque avec IPv6

16

Dans notre travail, nous utilisons environ 80 machines sans disque exécutant Ubuntu. Nous voulons faire la transition vers IPv6, alors maintenant j'essaie de faire fonctionner notre système sans disque avec IPV6. La transmission du noyau et des initramfs peut toujours se faire via une connexion IPv4, mais une fois que la machine est complètement démarrée, je veux que toutes les connexions réseau soient via IPv6.

Cela signifie que le nfsroot doit être monté via IPv6. Ma recherche a montré que initramfs-tools (1.18.5-1ubuntu4.1) ne prend pas en charge IPv6. Cela signifie que ni ipconfig, qui est utilisé pour la configuration d'interface au début du démarrage, ni la procédure de montage de montage pour la racine nfs ne sont compatibles IPv6.

Pour contourner cela, j'ai ajouté deux binaires aux initramfs ( /etc/initramfs-tools/hooks/ipv6):

#!/bin/bash 
. /usr/share/initramfs-tools/hook-functions
copy_exec /sbin/dhclient /sbin
copy_exec /sbin/mount.nfs4 /sbin

Je les utilise pour (a) demander un DHCPv6 au début du démarrage avec

/sbin/dhclient -6 -1 -cf /tmp/dhclient.conf -pf /tmp/dhclient6.eth0.pid -lf /tmp/dhclient6.eth0.leases eth0

et (b) pour configurer l'interface avec l'adresse que j'ai atteinte en exécutant:

ipv6=$(cat /tmp/dhclient6.eth0.leases | grep iaaddr | egrep -o "([a-f0-9]{1,4}:){3}([a-f0-9]{0,4}:){0,4}[a-f0-9]{1,4}")
ip -6 addr add $ipv6/112 dev eth0

Habituellement, la racine nfs est montée avec la commande suivante dans /usr/share/initramfs-tools/scripts/nfs:

nfsmount -o nolock ${roflag} ${NFSOPTS} ${NFSROOT} ${rootmnt}

Mais cela ne semble pas accepter les adresses IPv6.

Je l'ai donc changé en:

mount ${roflag} -t nfs4 ${NFSROOT} ${rootmnt}

$NFSROOTdans ce cas est [2001:4ca0:2218:1::1:2]:/lb/diskless/rootfs/ubuntu_1204_ipv6.

La configuration de l'interface semble fonctionner aussi bien que le montage racine, mais quand il /sbin/initest exécuté (je pense), l'IPv6 est à nouveau abandonné, et donc le système se bloque (car il ne peut plus accéder à la racine ubuntu).

Le /etc/network/interfacesfichier ressemble à ceci:

auto lo
iface lo inet loopback

iface eth0 inet manual
iface eth0 inet6 manual

Existe-t-il un moyen de conserver la configuration de l'interface des initramfs? Ou est-ce que je fais quelque chose de mal lorsque je configure l'interface avec ip?

moritz
la source
2
Jetez un œil aux commandes route et arp. Les deux peuvent être appelés au démarrage et prennent en charge IPV6
j0h
1
C'est assez surprenant. La racine NFS IPv6 est déjà entièrement prise en charge sur les systèmes de type Red Hat. Je me plaindrais sur le tableau de bord.
Michael Hampton

Réponses:

1

c'est peut-être hors sujet pour vous mais je pense que votre problème spécifique peut être évité en repensant le service:

pourquoi s'embêter à démarrer avec NFS?

Vous pouvez essayer de démarrer avec iscsi (en mode lecture seule pour autoriser plusieurs connexions à l'image), puis utiliser iscsi ou nfs (ipv4) pour les partages utilisateur si vous en avez besoin. Vous pouvez y parvenir avec le projet ipxe.

Une autre façon consiste à utiliser squashfs + tmpfs et à ne pas trop déranger avec les partages pendant le processus de démarrage du système, puis à effectuer des remontages en fonction des authentifications de l'utilisateur (mais cela a une consommation de mémoire plus élevée du côté client).

Des espoirs qui vous aident.

Antoine Rodriguez
la source
1
Ubuntu prend-il même en charge le démarrage à partir d'iSCSI sur IPv6?
Michael Hampton
1
Apparemment, c'est le cas.
Antoine Rodriguez