Endereçamento IPv6, parte local estática do prefixo dinâmico

8

O roteador na minha rede distribui um prefixo IPv6 atribuído pelo meu provedor. Este prefixo é dinâmico, mas "bastante pegajoso".

Gostaria que minhas máquinas pegassem automaticamente o prefixo anunciado nos RAs, mas combinassem com uma parte local especificada pelo usuário em vez de gerá-la aleatoriamente ou com base no endereço MAC. Existe alguma maneira fácil de fazer isso?

    
por plugwash 07.01.2017 / 14:50

3 respostas

11

Existem duas maneiras de fazer isso. Um é o caminho mais fácil e outro é o caminho mais difícil.

A maneira mais fácil é executar um servidor DHCPv6 em sua rede e atribuir endereços de host a cada dispositivo por conta própria. Ou deixe o servidor escolher a parte do host; os servidores DHCPv6 que vi irão manter a mesma parte do host mesmo que o prefixo mude.

A maneira mais difícil é usar ip token para definir a interface tokenizada identificadores. Isso é descrito como:

IPv6 tokenized interface identifier support is used for assigning well-known host-part addresses to nodes whilst still obtaining a global network prefix from Router advertisements. The primary target for tokenized identifiers are server platforms where addresses are usually manually configured, rather than using DHCPv6 or SLAAC. By using tokenized identifiers, hosts can still determine their network prefix by use of SLAAC, but more readily be automatically renumbered should their network prefix change. Tokenized IPv6 Identifiers are described in the draft: <draft-chown-6man-tokenised-ipv6-identifiers-02>.

A razão pela qual isso é difícil é que, embora o Linux inclua essa funcionalidade, nenhuma distribuição Linux que eu saiba inclui suporte para tornar tal configuração persistente e aplicá-la no momento da inicialização, como acontece para endereços configurados manualmente ou DHCP . Então provavelmente não vai funcionar muito bem para você, até que alguma distribuição o faça.

Por fim, se o seu ISP estiver alterando seu prefixo ocasionalmente, considere o uso de endereços locais exclusivos em sua rede. Dessa forma, todos os seus dispositivos sempre terão um endereço que nunca será alterado, com o qual eles poderão conversar entre si. Alguns roteadores domésticos / SOHO compatíveis com IPv6 (como o OpenWrt) têm a opção de ativar o ULA em toda a rede doméstica; se houver vários roteadores em casa, isso deve ser ativado no roteador que se conecta ao ISP.

    
por 07.01.2017 / 19:09
4

Michael fez um resumo muito bom e a recente dica do plugwash foi o melhor que pude encontrar depois de procurar várias horas por uma solução do CentOS 7 / RHEL (também systemd e network manager). Depois de me acostumar a nmcli (eu ainda estava usando principalmente ifcfg e ip) - eu poderia aplicá-lo com sucesso.

Mas se aprofundar de acordo com o link , o NetworkManager oferece suporte direto aos identificadores de interface tokenized IPv6 como uma propriedade ( a partir do lançamento de 1.4 de agosto de 2016 link ).

Assim, você não precisa definir as configurações do IPv6 do gerenciador de rede para ignorar, mas deve definir as configurações para

nmcli connection modify eth0 ipv6.method "auto" # if not already
nmcli connection modify eth0 ipv6.addr-gen-mode "eui64" # use interface token
nmcli connection modify eth0 ipv6.token "::2"

que gravará IPV6_TOKEN=::2 para / etc / sysconfig / network-scripts / ifcfg-eth0 para sobreviver a uma reinicialização. Para aplicar imediatamente, reinicie a interface por

nmcli connection up id eth0  # restart
    
por 09.11.2017 / 16:30
3

Obrigado ao Michael por confirmar que o Linux suportava o recurso e apontava para o comando de baixo nível. Esta resposta cobre como fazer isso funcionar na prática em um ambiente de trabalho do Debian (com systemd e network-manager).

Primeiro edite a conexão no gerenciador de rede e defina as configurações do IPv6 para ignorar.

Agora crie um arquivo /etc/NetworkManager/dispatcher.d/pre-up.d/iptoken. O arquivo deve ser de propriedade root, permissões 755 e com o seguinte conteúdo.

#!/bin/sh
ip token set ::2 dev eth0

Substitua eth0 pelo dispositivo desejado e :: 2 pelo sufixo desejado.

    
por 08.01.2017 / 00:42

Tags