Resumo
RADVD (Router ADVertisement Daemon) é um utilitário Linux usado em redes IPv6 para anunciar RA (Router Advertisement) aos outros hosts, normalmente utilizado quando não há um roteador dedicado. Um RA é como se o roteador da rede anunciasse para todos os hosts “Eu sou um roteador, e tenho informações sobre os prefixos e rotas utilizados nesta rede”
A instalação e configuração básica é a seguinte:
# Atualização de pacotes disponíveis no reporitório
apt-get update
# Atualização de pacotes e sistema operacional
apt-get upgrade
# Instalação do dameon
apt-get install radvd
# Arquivo /etc/radvd.conf
interface vlan10
{
AdvSendAdvert on;
prefix fd00:1:1:cafe::/64
{
AdvOnLink on;
AdvAutonomous off;
};
};
# Reinicio do Serviço.
systemctl restart radvd.service
Utilizando o post sobre ISC-KEA DHCPv6, aplique a configuração acima no DHCP Server, e verifique que agora é possível pingar a partir do Server B. A configuração acima é suficiente para termos uma instalação funcional do radvd. É realmente simples. Mas pensa em uma ferramenta simples que pode gerar facilmente um livro de explicações…
Muita teoria por trás…
O protocolo IPv6 possui diferenças consideráveis em relação ao protocolo IPv4.
A primeira, e mais notável, é a diferença absurda de endereços disponíveis. Enquanto no IPv4 temos em teoria 232 endereços possíveis, no IPv6 temos 2128. Temos muitas outras diferenças do protocolo em si, e várias diferenças de funcionamento. Uma delas é relacionada a aquisição automática de informações básicas para o funcionamento em uma rede, ou DHCP.
No IPv4, um host configurado para obter informações automaticamente busca por um servidor DHCP na rede, e espera obter um endereço IPv4, mascara de rede, endereço do gateway padrão, e endereço de pelo menos um servidor DNS. Com estas informações o host esta apto para comunicação na rede local e na Internet.
Já no IPv6, um host configurado para obter informações automaticamente pode ou não buscar por um servidor DHCP. Essa decisão depende de informações extras obtidas de um RA (Router Advertisement) normalmente enviada por um roteador da rede em que o host está. Notem que é clara a diferença de funcionamento do mecanismo de aquisição de configurações de rede entre o IPv4 e IPv6. Além disso, o DHCPv6 não entrega o tamanho do prefixo utilizado na rede, e nem o endereço do roteador padrão. Essas informações são responsabilidade do RA.
As principais informações que podem ser anunciadas pelo RA são:
- Prefixos em uso na rede;
- rotas;
- Servidores DNS recursivo;
- Se um servidor DHCPv6 deve ser consultado para obtenção de endereço;
- Se um servidor DHCPv6 deve ser consultado para outras informações;
- MTU do link;
- Se determinado prefixo/tamanho deve ser considerado como pertencente a rede;
- Se o host deve configurar um endereço automaticamente (EUI-64 ou Privacy);
- Timers diversos relacionados a prefixos e rotas.
Além das configurações em si, o RA pode operar de duas formas distintas:
- Enviando pacotes RA na rede periodicamente, o que tecnicamente tem o nome de Unsolicited Router Advertisement
- Enviando pacotes RA em resposta a pacotes RS (Router Solicitation), que leva o nome de Solicited Router Advertisement.
Na prática um roteador opera nas duas formas, enviando Unsolicited RA periodicamente, mas também respondendo caso algum host envie um RS.
RADVD em Detalhes
O daemon radvd implementa a RFC 4861 – Neighbor Discovery for IP version 6 (IPv6). Além da configuração correta, o daemon exige que o encaminhamento IPv6 (IPv6 forwarding) esteja habilitado, ou que debugging esteja habilitado. Através do sysctl podemos habilitar o encaminho IPv6 no Linux. Ainda, o arquivo deve ter permissão de escrita apenas ao usuário root. O daemon espera encontrar a configuração em /etc/radvd.conf, ou então que o caminho seja fornecido na inicialização do daemon.
# Confirme que o seguinte arquivo possui "0" em seu conteúdo
cat /proc/sys/net/ipv6/conf/all/forwarding
# Habilitando encaminhamento de forma manual
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
# Ou, para alterar de forma persistente, edite /etc/sysctl.conf
# Uncomment the next line to enable packet forwarding for IPv6
net.ipv6.conf.all.forwarding=1
# Aplique a mundança
sysctl -p
Sintaxe do RADVD
A sintaxe do arquivo é simples, descrevendo as informações que são incluídas no RA de cada interface referenciada no arquivo. Todas as declarações e opções devem ser finalizadas com ; (ponto e virgula);
# Cada declaração interface X define um RA a ser enviado
# na interface X
interface eth0{
Opções de Interface;
prefix fd00:1:1:cafe::/64
{
Opções do Prefixo;
};
clients
{
Opções de clients;
};
route 2000::/3
{
Opções de rota;
};
RDNS fd00:1:1:cafe::1
{
Opções de RDNS;
};
};
# Abaixo teríamos as definições de RA para a interface eth1 e eth1.10
interface eth1 { };
interface eth1.10 { };
Principais Opções de Interface
AdvSendAdvert on|off;
Flag que habilita ou desabilita o envio periódico de RA ou a resposta a RS.
UnicastOnly on|off;
Normalmente utilizada para representar networks que não suportam multicast, previne Unsolicited RA de ser enviado, apenas respondendo a RS via unicast
MaxRtrAdvInterval segundos;
Tempo máximo permitido entre envio de Unsolicited RA, devendo ser entre 4 e 1800 segundos
MinRtrAdvInterval segundos;
Tempo mínimo permitido entre envios de Unsolicited RA, devendo ser 3 e não mais que 0,75 * MaxRtrAdvInterval
AdvManagedFlag on|off;
Esta é a M-Flag, uma das mais importantes do RA. Quando ativa, indica aos clientes que há um servidor DHCPv6 na rede, e que os clientes deveriam buscar um endereço IPv6, não importando se o cliente já possui outros endereços, obtidos de outras formas.
AdvOtherConfigFlag on|off;
Esta é a O-Flag, outra flag bem conhecida. Quando ativa, indica aos clientes que há um servidor DHCPv6 na rede, e que os clientes deveriam consultá-lo sobre outras informações (mas não endereços).
AdvDefaultLifetime segundos;
Tempo de vida associado com a gateway padrão. 0 (zero) significa que quem enviou o RA não é o gateway padrão e não deveria constar na tabela de roteamento do host
Principais Opções de Prefixo
AdvOnLink on|off;
Flag importante, indicando que o prefixo é alcançável pelo link local. É muito utilizado com a M-Flag, pois o DHCPv6 entrega um endereço /128, e sem essa flag seria necessário rotear o pacote através do gateway padrão para alcançar demais hosts pertencentes a este prefixo.
AdvAutonomous on|off;
Conhecida como A-Flag, é tão importante quanto a M-Flag. Quando a A-Flag esta ativa, indica que os clientes podem utilizar este prefixo para configurar seu endereço IPv6 automaticamente (SLAAC – Stateless Address Auto Configuration), seja utilizando EUI-64 ou a extensão Privacy.
AdvValidLifetime segundos|infinity;
O tempo de vida, em segundos, em que o prefixo é válido. O valor padrão é 86400 segundos (1 dia), e clientes deveriam ignorar prefixos cujo tempo de vida é menor que 2 horas.
AdvPreferredLifetime seconds|infinity;
O tempo de vida, em segundos, em que endereços gerados automaticamente (SLAAC) são os preferidos. O valor padrão é 14400 segundos (4 horas)
Principais Opções de Rota
AdvRouteLifetime seconds|infinity;
O tempo de vida, em segundos, associado com a rota. O padrão é 3 * MaxRtrAdvInterval
AdvRoutePreference low|medium|high;
Preferência associada com a rota, podendo ser baixa, média ou alta.
Principais Opções de RDNSS
AdvRDNSSLifetime seconds|infinity;
Tempo de vida, em segundos, em que os servidores DNS serão usados para resolução de nomes. Um valor de 0 (zero) significa que o servidor não deveria mais ser utilizado
Principais Opções de Clients
Nem essa declaração é usada na prática, quanto mais opções 😀 😀 😀
Como o RAVDV implementa as funcionalidades das RFCs 4861 e 4862, é importante entender as opções acima e mesma vericar as outras opções, disponiveis em “man 5 radvd.conf”, pois as configurações de RA são muito utilizadas em redes que possuem IPv6. Embora normalmente sejam usados equipamentos de rede (roteadores), e a sintaxe varie de fabricante para fabricante, o conhecimento do protocolo em si permite que se encontre as opções na diferentes linhas de comando.
Finalizando
Este post acabou ficando muito mais detalhado do que o esperado, mas ainda não cobre toda a teoria por trás do RADVD. Se você seguiu a configuração, já deve estar com um ambiente funcional. No próximo post, vamos aprofundar testes e validar diferentes cenários de RA.
Já aplicou as configurações no DHCP Server? Conseguiu conectividade? Conte nos comentários e compartilhe este post para ajudar mais pessoas!
Referências