Eu tenho um roteador caseiro tipo PC executando o debian 9 stretch (o atual estável até hoje).
Por vários meses, consegui configurar automaticamente WAN ipv4 e WAN ipv6 assim:
# WAN vlan 832 internet
auto enp1s0.832
iface enp1s0.832 inet dhcp
iface enp1s0.832 inet6 manual
A parte inet6 usa dois scripts:
- um primeiro script /etc/network/if-up.d/99-ipv6, usado para iniciar o cliente ISC dhcp no modo de delegação de prefixo IPV6
- um segundo script /etc/dhcp/dhclient-exit-hooks.d/dhclient-ipv6, usado para atribuir uma sub-rede IPV6 "/64" à interface LAN
Isso funcionou bem por vários meses. Nas reinicializações, o sistema estava funcionando rapidamente com IPV4 e IPV6 totalmente funcionais.
Após uma atualização de rotina de pacotes, o debian systemd "networking.service" começou a travar na inicialização, durante a configuração da interface WAN do roteador. Ele travou por 5 minutos e foi eliminado pelo tempo limite "network.service" padrão. Como resultado, a interface WAN está ATIVA, mas as instâncias dhclient para IPV4 e IPV6-PD também foram eliminadas. Isso é muito ruim, pois o roteador não está atualizando as concessões de DHCP, se os clientes DHCP não estiverem em execução.
O debian networking.service estava travando na configuração da parte IPV6. Quando tentei comentar a parte do IPV6 assim:
# WAN vlan 832 internet
auto enp1s0.832
iface enp1s0.832 inet dhcp
O sistema estava reiniciando normalmente, porém sem IPV6.
Eu também tentei usar o modo "cacher" assim:
auto enp1s0.832
iface enp1s0.832 inet dhcp
iface enp1s0.832 inet6 dhcp
request_prefix 1
accept_ra 2
Com o acima, o Debian "networking.service" inicia ambas as instâncias do cliente ISC DHCP para IPV4 e IPV6: https://wiki.debian.org/IPv6PrefixDelegation
No entanto, o debian systemd networking.service ainda trava 5 minutos com esta configuração.
Então, tive que recorrer a um truque de último recurso muito sujo:
auto enp1s0.832
iface enp1s0.832 inet dhcp
up /sbin/dhclient -6 -P -pf /run/dhclient6.enp1s0.832.pid -lf /var/lib/dhcp/dhclient6.enp1s0.832.leases -df /var/lib/dhcp/dhclient.enp1s0.832.leases enp1s0.832&
Com isso, o debian networking.service não está expirando, e ambas as instâncias dhclient para IPV4 e IPV6 são executadas corretamente.
Qual é a maneira limpa de ter o debian configurando automaticamente o IPV4 e o IPV6 sem travar na inicialização?
A maneira correta de fazer isso é usar o arquivo /etc/network/interfaces "native ipv6 features". Há alguns anos, o ifupdown DHCP para gerenciamento IPV6 foi aprimorado. Ainda não é muito conhecido...
Com relação a como seu ISP decide fornecer endereços IPV6, os detalhes podem variar.
Na maioria dos casos, seu ISP está usando DHCPV6-PD (Prefix Delegation). Neste caso, o /etc/network/interfaces deve ficar assim (no trecho debian):
request_prefix é obrigatório para DHCPV6-PD. Caso contrário, o cliente DHCP iniciado por ifupdown solicitará um único endereço. Isso pode não funcionar muito bem com seu ISP. No meu caso, com a Orange na França, os pedidos inválidos de DCHP v6 são completamente ignorados, uma mensagem de rejeição nem mesmo é respondida pelo servidor DHCP do meu ISP. Que nojo...
A parte que não é gerenciada pelo debian é a alocação de endereços IPV6 na LAN. Para isso, é preciso usar scripts personalizados, conforme explicado aqui https://wiki.debian.org/IPv6PrefixDelegation
Uma palavra de advertência, no entanto. Meu próprio script de gancho DHCPv6 estava causando um bloqueio nos serviços systemd. Como eu confio em radvd (anúncio de roteador) para expor endereços IPV6 na interface LAN, preciso reiniciar o serviço radvd quando o prefixo WAN IPV6 mudar. O comando normal para conseguir isso é:
No entanto, isso estava causando um bloqueio do systemd no momento da inicialização. A configuração inicial das interfaces é feita por um serviço systemd chamado "networking.services" (esse serviço chama principalmente ifup --all).
Para evitar o intertravamento com "networking.service", deve-se usar:
Consulte https://www.freedesktop.org/software/systemd/man/systemctl.html para obter detalhes.