Bezdyskowy rozruch z IPv6

16

W naszej pracy korzystamy z około 80 bezdyskowych maszyn z systemem Ubuntu. Chcemy przejść na IPv6, więc teraz staram się, aby nasz bezdyskowy system działał z IPv6. Transmisja jądra i initramfs może nadal odbywać się za pośrednictwem połączenia IPv4, ale po pełnym uruchomieniu komputera chcę, aby wszystkie połączenia sieciowe były realizowane przez IPv6.

Oznacza to, że nfsroot musi być zamontowany przez IPv6. Moje badania tego wykazały, że initramfs-tools (1.18.5-1ubuntu4.1) NIE obsługuje IPv6. Oznacza to, że ani ipconfig, który jest używany do konfiguracji interfejsu podczas wczesnego rozruchu, ani procedura montowania montowania dla katalogu głównego nfs nie są w stanie obsługiwać IPv6.

Aby to obejść, dodałem dwa pliki binarne do 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

Używam ich do (a) żądania DHCPv6 przy wczesnym uruchomieniu z

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

oraz (b) w celu skonfigurowania interfejsu z adresem, który uzyskałem wykonując:

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

Zwykle katalog główny nfs jest montowany za pomocą następującego polecenia w /usr/share/initramfs-tools/scripts/nfs:

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

Ale to nie wydaje się akceptować adresów IPv6.

Więc zmieniłem to na:

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

$NFSROOTw tym przypadku jest [2001:4ca0:2218:1::1:2]:/lb/diskless/rootfs/ubuntu_1204_ipv6.

Wygląda na to, że konfiguracja interfejsu działa tak samo jak montowanie roota, ale kiedy /sbin/initjest wykonywana (myślę), IPv6 jest ponownie upuszczany, a zatem system zawiesza się (ponieważ nie może już uzyskać dostępu do roota Ubuntu).

/etc/network/interfacesPlik wygląda tak:

auto lo
iface lo inet loopback

iface eth0 inet manual
iface eth0 inet6 manual

Czy istnieje sposób na zachowanie konfiguracji interfejsu przed initramfs? Czy robię coś złego, konfigurując interfejs ip?

Moritz
źródło
2
Zobacz polecenia route i arp. Oba mogą być wywoływane podczas uruchamiania i mają obsługę IPV6
j0h
1
To jest dość zaskakujące. Katalog główny NFS protokołu IPv6 jest już w pełni obsługiwany w systemach typu Red Hat. Narzekałbym na starterze.
Michael Hampton

Odpowiedzi:

1

może to nie jest dla ciebie temat, ale myślę, że możesz uniknąć tego konkretnego problemu, ponownie przemyśleć usługę:

po co zawracać sobie głowę uruchamianiem NFS?

Możesz spróbować uruchomić z iscsi (w trybie tylko do odczytu, aby umożliwić więcej niż jedno połączenie z obrazem), a następnie użyj iscsi lub nfs (ipv4) dla udziałów użytkowników, jeśli to konieczne. Możesz to osiągnąć dzięki projektowi ipxe.

Innym sposobem jest użycie squashfs + tmpfs i nie zawracanie sobie głowy udziałami podczas uruchamiania systemu, a następnie ponowne podłączanie w zależności od uwierzytelnienia użytkownika (jednak ma to większe zużycie pamięci po stronie klienta).

Mam nadzieję, że ci pomoże.

Antoine Rodriguez
źródło
1
Czy Ubuntu obsługuje nawet uruchamianie z iSCSI przez IPv6?
Michael Hampton
1
Najwyraźniej tak.
Antoine Rodriguez