Diskless Boot พร้อม IPv6


16

ที่งานของเราเราใช้เครื่องจักรไร้ดิสก์ประมาณ 80 เครื่องที่ใช้งาน Ubuntu เราต้องการเปลี่ยนไปใช้ IPv6 ดังนั้นตอนนี้ฉันพยายามทำให้ระบบ diskless ของเราทำงานกับ IPV6 การส่งเคอร์เนลและ initramfs สามารถยังคงผ่านการเชื่อมต่อ IPv4 แต่เมื่อเครื่องบูตเต็มฉันต้องการเชื่อมต่อเครือข่ายทั้งหมดจะผ่าน IPv6

นี่หมายความว่าต้องติดตั้ง nfsroot ผ่าน IPv6 งานวิจัยของฉันเกี่ยวกับเรื่องนี้แสดงให้เห็นว่าเครื่องมือเริ่มต้น (1.18.5-1ubuntu4.1) ไม่รองรับ IPv6 นั่นหมายความว่าไม่ใช่ ipconfig ที่ใช้สำหรับการกำหนดค่าอินเทอร์เฟซในเวลาบูตตอนต้นหรือขั้นตอนการเมานท์เมาท์สำหรับรูท nfs นั้นสามารถใช้งาน IPv6 ได้

ในการหลีกเลี่ยงสิ่งนี้ฉันได้เพิ่มสองไบนารีไปยัง 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

ฉันใช้สิ่งเหล่านี้เพื่อ (a) ร้องขอ DHCPv6 เมื่อถึงเวลาบูตด้วย

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

และ (b) เพื่อกำหนดค่าอินเทอร์เฟซด้วยที่อยู่ที่ฉันได้รับโดยการดำเนินการ:

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

โดยปกติรูท nfs จะถูกเมาท์ด้วยคำสั่งต่อไปนี้ใน/usr/share/initramfs-tools/scripts/nfs:

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

แต่ดูเหมือนว่าจะไม่ยอมรับที่อยู่ IPv6

ดังนั้นฉันเปลี่ยนเป็น:

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

$NFSROOT[2001:4ca0:2218:1::1:2]:/lb/diskless/rootfs/ubuntu_1204_ipv6ในกรณีนี้คือ

ดูเหมือนว่าการกำหนดค่าอินเทอร์เฟซจะทำงานได้ดีเท่ากับการติดตั้งรูท แต่เมื่อ/sbin/initมีการใช้งาน (ฉันคิดว่า) IPv6 จะถูกดร็อปอีกครั้งดังนั้นระบบจะหยุดทำงาน (เพราะไม่สามารถเข้าถึงรูท Ubuntu ได้อีก

/etc/network/interfacesไฟล์มีลักษณะเช่นนี้

auto lo
iface lo inet loopback

iface eth0 inet manual
iface eth0 inet6 manual

มีวิธีในการป้องกันการกำหนดค่าอินเทอร์เฟซจาก initramfs หรือไม่? หรือฉันทำอะไรผิดพลาดเมื่อฉันกำหนดค่าอินเทอร์เฟซด้วยip?


2
ดูคำสั่งเส้นทางและ arp ทั้งสองสามารถถูกเรียกใช้ในเวลาบูตและได้รับการสนับสนุน IPV6
j0h

1
มันค่อนข้างน่าแปลกใจ รองรับ IPv6 NFS root แล้วบนระบบชนิด Red Hat ฉันจะบ่นบน launchpad
Michael Hampton

คำตอบ:


1

อาจเป็นเรื่องนอกเรื่องสำหรับคุณ แต่ฉันคิดว่าปัญหาเฉพาะของคุณสามารถหลีกเลี่ยงได้โดยคิดใหม่บริการ:

ทำไมต้องทำการบูทด้วย NFS

คุณสามารถลองบูทด้วย iscsi (ในโหมดอ่านอย่างเดียวเพื่ออนุญาตการเชื่อมต่อกับรูปภาพมากกว่าหนึ่งภาพ) จากนั้นใช้ iscsi หรือ nfs (ipv4) สำหรับผู้ใช้ร่วมกันหากคุณต้องการ คุณสามารถทำสิ่งนี้ได้ด้วยโครงการ ipxe

อีกวิธีหนึ่งคือการใช้ squashfs + tmpfs และไม่ต้องรำคาญกับการแชร์ในระหว่างกระบวนการบูทของระบบจากนั้นทำการ remounts ขึ้นอยู่กับการพิสูจน์ตัวตนของผู้ใช้

ความหวังที่ช่วยคุณ


1
Ubuntu รองรับการบูทจาก iSCSI ผ่าน IPv6 หรือไม่
Michael Hampton

1
เห็นได้ชัดว่ามันทำ
Antoine Rodriguez
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.