Boot Diskless dengan IPv6

16

Di tempat kerja kami, kami menggunakan sekitar 80 mesin tanpa disk yang menjalankan Ubuntu. Kami ingin melakukan transisi ke IPv6, jadi sekarang saya mencoba agar sistem diskless kami berfungsi dengan IPV6. Transmisi kernel dan initramfs masih dapat melalui koneksi IPv4, tetapi begitu mesin ini sepenuhnya boot saya ingin semua koneksi jaringan menjadi lebih dari IPv6.

Ini berarti bahwa nfsroot harus dipasang melalui IPv6. Penelitian saya tentang ini menunjukkan bahwa initramfs-tools (1.18.5-1ubuntu4.1) TIDAK mendukung IPv6. Itu berarti bahwa baik ipconfig, yang digunakan untuk konfigurasi antarmuka pada waktu boot awal, maupun prosedur pemasangan mount untuk root nfs mampu IPv6.

Untuk menghindari ini saya menambahkan dua binari ke 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

Saya menggunakan ini untuk (a) meminta DHCPv6 pada saat boot awal dengan

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

dan (b) untuk mengkonfigurasi antarmuka dengan alamat yang saya dapatkan dengan mengeksekusi:

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

Biasanya root nfs di-mount dengan perintah berikut di /usr/share/initramfs-tools/scripts/nfs:

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

Tapi ini sepertinya tidak menerima alamat IPv6.

Jadi saya mengubahnya menjadi:

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

$NFSROOTdalam hal ini adalah [2001:4ca0:2218:1::1:2]:/lb/diskless/rootfs/ubuntu_1204_ipv6.

Konfigurasi antarmuka tampaknya berfungsi serta pemasangan root, tetapi ketika /sbin/initdijalankan (saya pikir), IPv6 dijatuhkan lagi, dan karena itu sistem membeku (karena tidak dapat mengakses root ubuntu lagi).

The /etc/network/interfacesfile terlihat seperti ini:

auto lo
iface lo inet loopback

iface eth0 inet manual
iface eth0 inet6 manual

Apakah ada cara untuk menjaga konfigurasi antarmuka dari initramfs? Atau apakah saya melakukan sesuatu yang salah ketika saya mengkonfigurasi antarmuka ip?

moritz
sumber
2
Lihatlah perintah rute dan arp. Keduanya dapat dipanggil saat boot, dan memiliki dukungan IPV6
j0h
1
Ini cukup mengejutkan. Root IPv6 NFS sudah sepenuhnya didukung pada sistem tipe Red Hat. Saya akan mengeluh di launchpad.
Michael Hampton

Jawaban:

1

mungkin itu diluar topik untuk Anda tetapi saya pikir masalah spesifik Anda dapat dihindari dengan memikirkan kembali layanan:

mengapa repot-repot boot dengan NFS?

Anda dapat mencoba mem-boot dengan iscsi (dalam mode hanya baca untuk memungkinkan lebih dari satu koneksi ke gambar) dan kemudian menggunakan iscsi atau nfs (ipv4) untuk yang dibagikan pengguna jika perlu. Anda dapat mencapai ini dengan proyek ipxe.

Cara lain adalah dengan menggunakan squashfs + tmpfs dan tidak terlalu repot dengan saham selama proses boot sistem dan kemudian melakukan remount tergantung pada otentikasi pengguna (namun ini memiliki konsumsi memori yang lebih tinggi di sisi klien).

Harapan yang membantu Anda.

Antoine Rodriguez
sumber
1
Apakah Ubuntu bahkan mendukung booting dari iSCSI melalui IPv6?
Michael Hampton
1
Ternyata itu benar.
Antoine Rodriguez