Eu executo minha rede em uma caixa x86 executando o Ubuntu 18.04, firewalld (o UFW não é adequado para uso como roteador), /networks/interfaces (o netplan tinha um bug que o tornava impróprio para o propósito) e dnsmasq para DHCP e DNS.
Eu tinha um ISP que rodava ipv6 com PD e usei a configuração aqui . Meu ISP atual não oferece suporte a IPV6, então configurei um túnel para meu roteador por meio do furacão elétrico - isso está configurado e provavelmente funciona, pois posso fazer ping .
Eu tenho enp1s0 como interface externa e todas as outras interfaces interligadas servindo o resto da rede como br0. Também tem he-ipv6 como túnel, sem ponte para nada
No momento, o roteador está atrás de um roteador ISP, com dois segmentos de rede diferentes - 192.168.1.x para todos os outros e minha própria rede de teste em 192.168.2.x, com o roteador em uma DMZ. Isso não deve ser um problema.
O problema é que eu gostaria de continuar com o dnsmasq e estou tendo problemas para financiar a documentação sobre como configurá-lo.
Aqui está o que eu tenho agora
- Eu configurei ipv6 para meu roteador de acordo com as instruções na página da hurricane electric, incluindo o abaixo em meu /etc/networks/interfaces
auto he-ipv6
iface he-ipv6 inet6 v4tunnel
address 2001:470:YY:YYYY::2
netmask 64
endpoint 216.218.221.6
local xxx.xxx.x.xxx
ttl 255
gateway 2001:470:YY:YYYY::1
Isso funciona. Posso pingar ipv6.google.com e outros sites ipv6 conhecidos. Eu simplesmente não consigo obter IPs para mais nada .
eu tentei
##For HE
enable-ra
dhcp-range = 2001:470:YY:YYYY::
dhcp-option=option6:dns-server,[2001:470:20::2],[2001:4860:4860::8888]
Mas aparentemente a sintaxe está errada.
Como obtenho um endereço IPv6 para clientes que obtêm IPs do roteador, bem como para br0?
Antes de tudo:
Assim como no IPv4, cada link precisa de seu próprio prefixo de sub-rede. O
2001:470:YY:YYYY::/64
"endpoint do túnel" é especificamente para o link entre você e o Hurricane (ou seja, é para o seu "endereço WAN" em termos de IPv4) – ele não pode ser reutilizado para nenhuma das suas LANs. Para o último, você precisa de um dos "Prefixos IPv6 roteados" encontrados na página de configurações do túnel - isso será o equivalente a um prefixo delegado DHCPv6-PD.Normalmente, cada LAN tem um prefixo de sub-rede de tamanho /64, para permitir que a atribuição de endereço baseada em SLAAC padrão funcione (muitos clientes, especialmente Android, não oferecem suporte à atribuição de endereço baseada em DHCPv6). Portanto, se você planeja várias sub-redes, escolha "Atribuir /48" para obter um prefixo com uma quantidade decente (64ki) de /64.
(Você não precisa usar "Atribuir /64" se já atribuiu um /48. Se você usou "Atribuir /64", observe que o prefixo é um pouco diferente do prefixo "pontos de extremidade do túnel"; eles são muitas vezes confuso.)
Depois de ter seu próprio intervalo, digamos 2001:470:ZZ::/48, escolha um /64 dele (variando de 0 a ffff, como 2001:470:ZZ: 1 ::/64) e use-o para sua
br0
interface, bem como para a configuração do dnsmasq.Como mencionado anteriormente, muitos clientes (principalmente Android) não suportam atribuição de endereço via DHCPv6. Eles exigem SLAAC, então você precisa de pelo menos um
slaac
oura-stateless
na configuração 'dhcp-range'. (O modo 'ra-stateless' também informa aos clientes SLAAC que eles ainda podem obter as configurações de DNS do DHCPv6, o que é útil para Windows. Independentemente da seleção, o dnsmasq também fornecerá servidores DNS automaticamente via SLAAC-RDNSS para Android.)No entanto, para br0 (ou qualquer que seja a interface LAN) você deve atribuir um endereço IP estaticamente - não tenho certeza se o kernel recebe seus próprios multicasts, nem se presta atenção a eles. De qualquer forma, suspeito que o próprio dnsmasq possa se recusar a executar em uma interface que não tenha um endereço correspondente (como já acontece com o IPv4) ...
Depois de executar o dnsmasq, use
rdisc6 eth0
outro sistema Linux para solicitar e mostrar o conteúdo de um anúncio de roteador. Certifique-se de que ele tenha um "tempo de vida do roteador" diferente de zero; pelo menos um "Prefixo" (que precisa ser /64, on-link, autônomo, tempo válido diferente de zero); e que vem de umfe80::*
endereço link-local e não de um endereço global.