是否有一个 Linux 内核启动参数可以配置 IPv6 地址?

是否有一个 Linux 内核启动参数可以配置 IPv6 地址?

我知道有一个名为的参数,ip它允许您通过引导加载程序在 Linux 内核上配置 IPv4 地址。如下所示:

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

我正在寻找 IPv6 配置的等效参数。我在内核文档中找不到有关此内容的任何信息。

更新:因为很多人问我为什么需要这个:使用内核配置的想法与以下方面有关:问题。我怀疑常规启动接口配置未完成,因为接口已经启动。原因可能是我使用带有 Dropbear SSH 服务器的预启动环境来解锁加密的根分区。此环境的 IP 地址通过 GRUB 使用参数配置。ip=该以太网段上没有可用的 DHCP 或路由器通告,而且由于这是大型托管公司提供的上行链路段,因此无法改变这一事实。

答案1

抱歉,但如果您想要这个,您必须自己构建它,或者更有可能重用其他人的实现。

你使用的命令行选项ip=实际上是内核启动代码的一部分挂载 NFS 根文件系统. 它从未针对 IPv6 进行扩展,并且没有用于在启动时配置 IPv6 的内核启动参数。

尽管如此,一些 Linux 发行版(如 Red Hat)已经实施的为安装介质指定自己的ipv6=启动参数。您也许可以在自定义 initramfs 中重复使用此代码。

答案2

根据 Fedora 的说法,ip= 参数可以与 IPv4 或 IPv6 地址一起使用。IPv6 地址必须用方括号括起来。如果两者都需要,您可以在内核行上使用多个 ip= 选项,如下所示:

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

答案3

启动后,所有启动参数都可通过 /proc/cmdline 获取。因此,您只需通过自定义 mkinitcpio 钩子设置所有需要的选项,该钩子将解析 cmdline 以搜索特定参数。您可以像 ip= one 一样使用 ipv6=。

答案4

以下是 Hetzner 救援模式 (Debian 11) 下的样子:

root@rescue ~ # cat /proc/cmdline
initrd=rescue/current-amd64/initramfs.cpio.zst nfsdir=[2a01:4ff:ff00::b007:1]:/nfs RFILE=rescue-amd64-bullseye-v002.ext2 HASH=$5$XuSCY.REDACTED net.ifnames=0 vga=0x317 lang=de quiet IP6=REDA:CTED:4a:28c5:: IP6MASK=64 IP6GW=fe80::1 config_url=https://admin-robot.your-server.de/admin/api/boot/order/redacted BOOT_IMAGE=rescue/current-amd64/vmlinuz BOOTIF=aa-bb-cc-ee-7b-e6

相关内容