Instalação do FRRouting (FRR) – Roteamento dinâmico no seu linux +Bônus iBGP

FRRouting (FRR) é um conjunto de protocolos de roteamento IP para plataformas Linux e Unix que inclui daemons de protocolo para BGP, IS-IS, LDP, OSPF, PIM e RIP.

A integração perfeita do FRR com as pilhas de rede IP Linux/Unix nativas o torna aplicável a uma ampla variedade de casos de uso.

FRR tem suas raízes no projeto Quagga (Fork do Quagga). Na verdade, ele foi iniciado por muitos desenvolvedores de Quagga de longa data que combinaram seus esforços para melhorar a base bem estabelecida do Quagga para criar a melhor pilha de protocolo de roteamento disponível.

Uma ótima apresentação foi feita pelo Junior Corazza. no GTER 46.
BSDRP – Uma opção de softrouter com FRR

Apresentação: ftp://ftp.registro.br/pub/gter/gter46/11-BSDRP.pdf

Requesitos:
Debian 10 Stretch – Instalação Limpa
Debian 11 Bullseye – Instalação Limpa

Antes de começar não esqueça de virar root da forma correta e atualizar os pacotes, e instalar alguns pacotes que serão necessários.

Instalação do Free Range Routing

Pacotes presente do FRR no repositório do Debian 10 estão na versão 6.x.x, e Debian 11 na 7.5.x vou ir além e usar o repositório mais atualizado do FRR disponíveis em https://deb.frrouting.org, mas fica a seu critério se desejar usar o repositório “default”.

Para usar pacotes do repositório FFR faça:

Iremos usar a versão estável oficial mais recente “frr-stable” na variável “FRRVER”, mas é possíveis para também: frr-6 frr-7 frr-8 frr-stable.

Podemos entrar agora em nosso respositório varios pacores FRR:

frr – FRRouting suite
frr-doc – Manual
frr-rpki-rtrlib – Suporte BGP RPKI
frr-rpki-rtrlib-dbgsym – Debug do pacote frr-rpki-rtrlib
frr-snmp – Suporte SNMP
frr-snmp-dbgsym – Debug do pacote frr-snmp
frr-pythontools – Python tools

Instalarei alguns mas fique a seu critério/necessidade.

Após instalação o diretorio /etc/ffr/ será criado juntamente com seus arquivos de configuração. Arquitetura do diretório:

Como de costume vamos fazer um backup dos arquivos originais caso cometermos alguma “cagada” 😀

Antes de mais nada vamos entender um pouco como a aplicação funciona.

No FRR o roteamento é diferente de um roteamento tradicional, ele tem um conjunto de daemons que trabalham juntos para construir a tabela de roteamento.

Cada protocolo principal é implementado em seu próprio daemon, e esses daemons se comunicam com um daemon intermediário (zebra), que é responsável por coordenar as decisões de roteamento.

Esta arquitetura permite alta resiliência, uma vez que um erro, travamento ou exploração em um daemon de protocolo geralmente não afetará os outros. Também é flexível e extensível, uma vez que a modularidade torna mais fácil implementar novos protocolos e vinculá-los ao conjunto. Além disso, cada daemon implementa um sistema de plug-in permitindo que novas funcionalidades sejam carregadas em tempo de execução.

Ilustração da arquitetura em grande escala:

Todos os daemons FRR podem ser gerenciados por meio de um único shell de interface de usuário integrado chamado vtysh. O vtysh se conecta a cada daemon através de um soquete de domínio UNIX e então funciona como um proxy para a entrada do usuário. Além de um front-end unificado, o vtysh também oferece a capacidade de configurar todos os daemons usando um único arquivo de configuração por meio do modo de configuração integrado. Isso evita a sobrecarga de manter um arquivo de configuração separado para cada daemon.

Você encontra mais informações em: http://docs.frrouting.org/en/latest/overview.html

Módulos do kernel

Na documentação oficial de instalação é recomendado fazer alguns ajustes nas configurações de sysctl do Linux, caso para sua realidade não seja necessário pule esta parte.

Os itens a seguir são definidos para habilitar o encaminhamento de IP no kernel:

Encaminhamento IPv4 e IPv6

Descomente:

Encaminhamento MPLS (Ative se achar necessário)
O suporte MPLS básico foi introduzido no kernel na versão 4.1 e recursos adicionais foram introduzidos na 4.3 e 4.5.

Adicione

Veja quais o(s) nome(s) de sua(s) interface(s) e adicione:

Adicione ao final do arquivo (Anteção para o nome das interfaces: net.mpls.conf.[INTERFACE].input)

Encaminhamento VRF (Ative se achar necessário)
O seguinte impacta como os soquetes BGP TCP são gerenciados em VRFs:

Com essa configuração, um soquete BGP TCP é aberto por VRF. Essa configuração garante que outros serviços TCP, como SSH, fornecidos para fins não VRF, sejam bloqueados nas interfaces Linux associadas a VRF.

Reinicie seu servidor para carregar as novas configurações de kernel.

Acesse novamente seu servidor, não esqueça de virar root com o comando “su -”

Após instalado o FRR não fará nada. Isso ocorre porque os daemons devem ser ativados e até o momento não temos nenhum, para ativar edite o arquivo /etc/frr/daemons e determine quais daemons serão ativados colocando um yes no daemon desejado. No meu exemplo vou ativar o bgpd qual deixarei uma “brincadeira” de exemplo ao final.

Como este tutorial é um laboratório irei ativar os daemons OSPFv2, OSPFv3, BABEL e BGP, (em produção ative somente o necessário) pois em seguida teremos alguns exemplos contribuídos pelo Patrick Brandão.

Alterações feitas no /etc/frr/daemons vamos reiniciar o FRR

Verifique se o mesmo está ok

Pode também conferir se o serviço de cada daemons ativos foi iniciado:

Lista completa das portas:

Entrado no Shell VTY

Vtysh fornece um frontend combinado para todos os daemons FRR em uma única sessão combinada.

vtysh tem um arquivo de configuração /etc/frr/vtysh.conf que contém opções que controlam o comportamento da autenticação. Este arquivo também não será escrito por comandos de salvamento de configuração, ele deve ser atualizado manualmente.

Isso também significa que os comandos hostname e (que têm efeito para vtysh) precisam ser atualizados manualmente no vtysh.conf

Todas as configurações salvas (write) no terminal do vtysh são escritas no arquivo frr.conf.

A documentação também ressalta que é possível salvar os arquivos separados por daemons, para alterar esse comportamento é precisamos editar o /etc/frr/vtysh.conf (Fica a seu critério também, eu particularmente não altero)

Estão o que isso faz?
service integrated-vtysh-config
– O vtysh sempre salvará no frr.conf.

no service integrated-vtysh-config
– vtysh nunca vai salvar no frr.conf, em vez disso, ele pedirá aos daemons que escrevam/crie seus arquivos de configuração individuais.

Se fizer a altração reinicie a aplicação

Mais sobre vtysh: http://docs.frrouting.org/en/latest/vtysh.html

Acessamos o terminal do vtysh e usamos o comando write (salvar).

Na próxima vez que salvar (write) um “____.conf.sav” será criado também preservando a configuração posterior.

Você também pode acessar o terminal vtysh (zebra) por telnet, lembra que vimos as porta que cada serviço estava rodando, logo o zebra roda na porta 2601(tcp), porém responde apenas localmente (localhost/127.0.0.1) caso você deseje abrir esse acesso externamente (restringi-lo por firewall o acesso a determinados IPs é uma boa prática) faça e alteração no arquivo daemons.

Encontre:

E altere por:

Se você desejar alterar esta porta basta incluir “-P porta”

Salve e reinicie o FRR

Porém se você tentar acessar mesmo que localmente não será possível, pois uma senha não foi definida.

Para configura as senha de login e de enable:

Ex.:

Faça um teste localmente ou externamente caso tenha liberado o acesso:

Por mais inseguro que seja o uso do telnet, em alguns casos é comum o acesso de servidores Looking Glass publicamente. Para tornar o acesso telnet público (não vai exigir senha) apenas leitura, basta remove a senha. (Ainda assim é possível ter poderes com em enable+senha)

Removendo senha:

Zerando as configurações

Caso você queira começar tudo do zero, basta remover todos os .conf e copiar os arquivos originais que estão na pasta backup, e dar suas devidas permissões!
Ex.:

Modelos de configurações:

Alguns exemplos de configurações para os daemons podem ser encontrados em:

Em http://docs.frrouting.org/en/latest/ você encontra uma ampla documentação com muitos exemplos.

Bônus iBGP

Vou deixar aqui um modelo simples iBGP entre um servidor Linux vs Mikrotik.

Exemplo para iBGP para um DNS Anycast distribuído, usando os IPs do DNS Google, mas não estou incentivando a fazer isso é apenas um exemplo!

Configuração Linux DNS

Nesta configuração vamos adicionar os IPs de loopbacks em seguida fechar os peers IPv4 e IPv6, e finalizando configurando os filtros para receber rota default (Logo no RouterOS será necessário envia) e ensinar apenas as IPs de lo. Este é apenas um exemplo para você começar a brincar e estudar mais sobre o assunto.

Configuração no Mikrotik/RouterOS (Gateway DNS)

Configuração Linux Accel-PPP

Nesta configuração vamos fechar os peers IPv4 e IPv6, e configurar os filtros para receber rota default (Logo no RouterOS será necessário envia) e ensinar apenas as IPs possíveis ips dinâmicos desta rede (45.0.0.0/22, 100.64.0.0/10). Lembrando que este é apenas um exemplo simples para você começar a brincar e estudar mais sobre o assunto.

Configuração no Mikrotik/RouterOS (Gateway Accel-PPP)

Espero que tenha lhe instigado a buscar mais sobre o FRR.

Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!

Participe do canal no telegram para ficar atualizado sempre que publicar um novo tutorial.

Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato clique aqui.

Deixo aqui agradecimento ao Patrick Brandão que está elaborando um belo tutorial com muitos exemplos.

Fontes:
https://frrouting.org/
http://docs.frrouting.org/

Rudimar Remontti

Trabalho atualmente como Gerente de Redes em um Provedor de Internet no Rio Grande do Sul.

Você pode gostar...

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *