Avvio senza disco con IPv6


16

Nel nostro lavoro stiamo usando circa 80 macchine diskless che eseguono Ubuntu. Vogliamo effettuare il passaggio a IPv6, quindi ora sto cercando di far funzionare il nostro sistema diskless con IPV6. La trasmissione del kernel e di initramfs può essere ancora su una connessione IPv4, ma una volta che la macchina è completamente avviata voglio che tutte le connessioni di rete siano su IPv6.

Ciò significa che nfsroot deve essere montato tramite IPv6. La mia ricerca ha dimostrato che initramfs-tools (1.18.5-1ubuntu4.1) NON supporta IPv6. Ciò significa che né ipconfig, utilizzato per la configurazione dell'interfaccia all'inizio del boot, né la procedura di montaggio mount per la radice nfs sono in grado di supportare IPv6.

Per aggirare questo ho aggiunto due binari a 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

Li uso per (a) richiedere un DHCPv6 all'avvio anticipato con

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

e (b) configurare l'interfaccia con l'indirizzo che ho raggiunto eseguendo:

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

Di solito la radice nfs è montata con il seguente comando in /usr/share/initramfs-tools/scripts/nfs:

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

Ma questo non sembra accettare gli indirizzi IPv6.

Quindi l'ho cambiato in:

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

$NFSROOTin questo caso è [2001:4ca0:2218:1::1:2]:/lb/diskless/rootfs/ubuntu_1204_ipv6.

La configurazione dell'interfaccia sembra funzionare così come il montaggio root, ma quando /sbin/initviene eseguito (penso), l'IPv6 viene nuovamente rilasciato, e quindi il sistema si blocca (perché non può più accedere al root Ubuntu).

Il /etc/network/interfacesfile è simile al seguente:

auto lo
iface lo inet loopback

iface eth0 inet manual
iface eth0 inet6 manual

C'è un modo per mantenere la configurazione dell'interfaccia da initramfs? O sto facendo qualcosa di sbagliato quando configuro l'interfaccia con ip?


2
Dai un'occhiata ai comandi route e arp. Entrambi possono essere chiamati all'avvio e hanno il supporto IPV6
j0h

1
Questo è abbastanza sorprendente. Il root NFS IPv6 è già completamente supportato sui sistemi di tipo Red Hat. Mi lamenterei del launchpad.
Michael Hampton,

Risposte:


1

forse è fuori tema per te ma penso che il tuo problema specifico possa essere evitato ripensando il servizio:

perché preoccuparsi dell'avvio con NFS?

Puoi provare a eseguire l'avvio con iscsi (in modalità di sola lettura per consentire più di una connessione all'immagine) e quindi utilizzare iscsi o nfs (ipv4) per le condivisioni utente, se necessario. Puoi farlo con il progetto ipxe.

Un altro modo è usare squashfs + tmpfs e non disturbare così tanto con le condivisioni durante il processo di avvio del sistema e quindi effettuare rimontaggi a seconda delle autenticazioni dell'utente (tuttavia questo ha un consumo di memoria maggiore sul lato client).

Speranze che ti possano aiutare.


1
Ubuntu supporta anche l'avvio da iSCSI su IPv6?
Michael Hampton,

1
Apparentemente lo fa.
Antoine Rodriguez,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.