Gibt es einen Linux-Kernel-Boot-Parameter, um eine IPv6-Adresse zu konfigurieren?


16

Ich weiß, dass es einen Parameter gibt, mit ipdem Sie IPv4-Adressen im Linux-Kernel über den Bootloader konfigurieren können. Das sieht so aus:

ip=192.0.2.1::192.0.2.62:255.255.255.192::eth0:none

Ich suche einen gleichen Parameter für die IPv6-Konfiguration. Darüber konnte ich in den Kernel-Dokumentationen nichts finden.

Update : Da viele von Ihnen gefragt haben, warum ich das brauche: Die Idee, eine Kernel-Konfiguration zu verwenden, ist im Zusammenhang mit diesem Problem entstanden. Ich vermute, dass die reguläre Konfiguration der Startschnittstelle nicht durchgeführt wird, da die Schnittstellen bereits aktiv sind. Der Grund dafür könnte sein, dass ich eine Pre-Boot-Umgebung mit einem Dropbear-SSH-Server verwende, damit ich meine verschlüsselte Root-Partition entsperren kann. Die IP-Adressen für diese Umgebung werden über GRUB mit dem ip=Parameter konfiguriert . In diesem Ethernet-Segment ist keine DHCP- oder Router-Ankündigung verfügbar, und da dies das von einem großen Hosting-Unternehmen bereitgestellte Uplink-Segment ist, gibt es keine Möglichkeit, diese Tatsache zu ändern.


Tatsächlich gibt es keinen. Sie können die automatische IPv6-Konfiguration aktivieren, aber das ist wahrscheinlich nicht das, wonach Sie suchen. Gibt es ein bestimmtes Ergebnis, das Sie erreichen möchten (dh aus welchem ​​Grund möchten Sie die IPv6-Konfiguration beim Initialisierungsprozess des Computers vermeiden?) Der ip=Parameter sollte ursprünglich den IP-Stack konfigurieren, bevor der Kernel versucht, ein NFS-Root-Dateisystem bereitzustellen Ich bin jedoch der Meinung, dass Sie sich auf etwas anderes verlassen sollten, um dasselbe Ergebnis mit IPv6 (höchstwahrscheinlich SLAAC) zu erzielen.
Pino42

Ich kenne SLAAC. Aber ich muss es manuell einrichten.
4.

3
Ich bin der Meinung, dass Sie seit der Einführung der Funktion "Early Userspace" (initramfs entweder im Kernel eingebettet oder als separate Datei wie herkömmliches initrd) aufgefordert werden, dort IP-Adressen zu konfigurieren und nicht nur einmalig Befehlszeilenparameter. Das ist wahrscheinlich der Grund, warum es für IPv4 einen historischen Befehlszeilenparameter gibt, für IPv6 jedoch keinen.
Celada

Wann muss der Startvorgang eingestellt werden?
Pino42

Es ist sehr unwahrscheinlich, dass Sie das brauchen. Was genau versuchst du zu erreichen?
Michael Hampton

Antworten:


7

Entschuldigung, aber wenn Sie dies möchten, müssen Sie es selbst erstellen oder mit größerer Wahrscheinlichkeit die Implementierung einer anderen Person erneut verwenden.

Die ip=Befehlszeilenoption, die Sie verwendet haben, ist tatsächlich Teil des Boot-Codes des Kernels zum Mounten eines NFS-Root-Dateisystems . Es wurde noch nie für IPv6 erweitert und es gibt keinen Kernel-Boot-Parameter zum Konfigurieren von IPv6 beim Booten.

Einige Linux-Distributionen wie Red Hat haben jedoch einen eigenen ipv6=Boot-Parameter für ihre Installationsmedien implementiert . Möglicherweise können Sie diesen Code in Ihren benutzerdefinierten initramfs wiederverwenden.


3

Laut Fedora kann der Parameter ip = mit IPv4- oder IPv6-Adressen verwendet werden. IPv6-Adressen müssen in eckigen Klammern angegeben werden. Wenn Sie beides benötigen, können Sie mehrere ip = -Optionen in der Kernel-Zeile wie folgt verwenden:

... ip = [2001: db8 :: dead: beef] :: [2001: db8 :: cafe: babe]: 64 :: eth0: keine ip = 192.0.2.5 :: 192.0.2.1: 255.255.255.0 :: eth0: keine ...


Diese Antwort widerspricht der akzeptierten Antwort. Dies kann daran liegen, dass die akzeptierte Antwort veraltet ist. Um jeden Zweifel daran zu beseitigen, welche Antwort richtig ist, sollte ein Link zur Quelle dieser Informationen eingefügt werden.
Kasperd

1
Dies ist wahrscheinlich eine Weiterentwicklung der Implementierung von RedHat, die in Michael Hamptons Antwort erwähnt wurde. Ich habe es in Debian Jessie getestet und es hat nicht funktioniert. Ich bin immer noch auf der Suche nach einem generischen Linux-Weg, um dies zu tun.
9.

2

Alle Ihre Boot-Parameter sind nach dem Booten über / proc / cmdline verfügbar. Sie können also einfach alle erforderlichen Optionen über einen benutzerdefinierten mkinitcpio-Hook einrichten, der cmdline bei der Suche nach bestimmten Parametern analysiert. Sie können ipv6 = wie ip = eins verwenden.


Ja. Ich könnte es selbst bauen, aber das war nicht das, wonach ich gesucht habe. Nochmals vielen Dank für die Idee.
16.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.