Existe um parâmetro de inicialização do kernel do Linux para configurar um endereço IPv6?

16

Eu sei que existe um parâmetro chamado ipque permite configurar endereços IPv4 no kernel do Linux por meio do carregador de inicialização. Parece com o seguinte:

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

Estou procurando um parâmetro igual para a configuração do IPv6. Não consegui encontrar nada sobre isso nas documentações do kernel.

Atualização : Devido a muitos de vocês perguntarem por que eu precisaria disso: surgiu a idéia de usar uma configuração do kernel relacionada a esse problema. Eu suspeito que a configuração regular da interface de inicialização não foi concluída, porque as interfaces já estão ativadas. A razão para isso pode ser que eu estou usando um ambiente de pré-inicialização com um servidor Dropbear SSH para permitir que eu desbloqueie minha partição raiz criptografada. Os endereços IP deste ambiente são configurados através do GRUB com o ip=parâmetro Não há anúncio DHCP ou roteador disponível nesse segmento Ethernet e, como é o segmento de uplink fornecido por uma grande empresa de hospedagem, não há como mudar esse fato.

aef
fonte
De fato, não há um. Você pode ativar a configuração automática do IPv6, mas isso provavelmente não é o que você está procurando. Há um resultado específico que você está tentando alcançar (ou seja, qual é o motivo pelo qual você deseja evitar a configuração do IPv6 no processo de inicialização da máquina?) O ip=parâmetro foi inicialmente concebido para configurar a pilha de IPs antes que o kernel tente montar um sistema de arquivos raiz NFS , mas acho que você deve confiar em outra coisa para obter o mesmo resultado com o IPv6 (provavelmente o SLAAC).
Pino42
Eu sei sobre o SLAAC. Mas preciso configurá-lo manualmente.
aef
3
Meu sentimento é que, desde a introdução do recurso "early userspace" (initramfs, incorporado no kernel ou como um arquivo separado, como o initrd tradicional), você é incentivado a fazer coisas como configurar endereços IP lá em vez de usar um único endereço especial. parâmetros de linha de comando. É provavelmente por isso que existe um parâmetro de linha de comando histórico para o IPv4, mas nenhum foi adicionado para o IPv6.
Celada
A que horas do processo de inicialização você precisa que seja definido?
Pino42 #
É extremamente improvável que você precise disso. O que exatamente você está tentando realizar?
Michael Hampton

Respostas:

7

Desculpe, mas se você quiser isso, precisará construí-lo sozinho ou, mais provavelmente, reutilizar a implementação de outra pessoa.

A ip=opção de linha de comando que você está usando faz parte do código de inicialização do kernel para montar um sistema de arquivos raiz NFS . Ele nunca foi estendido para o IPv6 e não há parâmetro de inicialização do kernel para configurar o IPv6 no momento da inicialização.

Dito isto, algumas distribuições Linux, como a Red Hat, implementaram seu próprio ipv6=parâmetro de inicialização para a mídia de instalação. Você poderá reutilizar esse código em seu initramfs personalizado.

Michael Hampton
fonte
3

De acordo com o Fedora, o parâmetro ip = pode ser usado com endereços IPv4 ou IPv6. Os endereços IPv6 devem estar entre colchetes. Se você precisar de ambos, poderá usar várias opções ip = na linha do kernel, como em:

... 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: nenhum ...

Owen
fonte
Esta resposta está contradizendo a resposta aceita. Isso pode ser devido à resposta aceita estar desatualizada. Para remover qualquer dúvida sobre qual resposta está correta, seria uma boa ideia incluir um link para a fonte dessas informações.
kasperd
11
Esta é provavelmente uma evolução da coisa que o RedHat implementou, mencionado na resposta de Michael Hampton. Eu testei no Debian Jessie e não funcionou. Ainda estou procurando uma maneira genérica de Linux para fazer isso.
aef
2

Todos os seus parâmetros de inicialização estão disponíveis via / proc / cmdline após a inicialização. Portanto, você pode simplesmente configurar todas as opções necessárias através do gancho mkinitcpio personalizado, que analisaria o cmdline em busca de parâmetros específicos. Você pode usar ipv6 = como ip = one.

Alex Laskin
fonte
Sim. Eu mesmo poderia construir, mas não era isso que eu estava procurando. Ainda obrigado pela ideia.
aef