Introdução à Redistribuição de Rotas Estáticas no BGP com MikroTik
O Border Gateway Protocol (BGP) é a espinha dorsal da internet, responsável por trocar informações de roteamento entre sistemas autônomos. Em ambientes corporativos e de provedores de serviços, o uso do MikroTik como borda de rede exige uma configuração precisa para garantir que o tráfego seja direcionado corretamente. Uma das tarefas mais comuns e críticas é a redistribuição de rotas estáticas para dentro da tabela BGP.
A redistribuição permite que rotas aprendidas localmente (como gateways padrão ou sub-redes internas) sejam anunciadas aos seus peers BGP. Isso é essencial quando você deseja anunciar sua faixa de IPs ou garantir que, em caso de falha em um link primário, o tráfego alternativo seja conhecido pelos parceiros. Neste tutorial, vamos detalhar passo a passo como configurar essa funcionalidade em um routerboard ou sistema CHR (Cloud Hosted Router) do MikroTik, focando em boas práticas de infraestrutura e segurança.
Pré-requisitos e Topologia Lógica
Antes de aplicar os comandos, é fundamental entender o cenário. Vamos considerar uma topologia simples onde:
- O MikroTik atua como um Sistema Autônomo (AS) independente.
- Existe uma conexão BGP estabelecida com um provedor de internet ou peer upstream.
- Há uma rota estática configurada, geralmente a rota padrão (
0.0.0.0/0), que aponta para o gateway do ISP.
O objetivo é anunciar essa rota estática (ou outras sub-redes específicas) através do BGP. Atenção: Nunca redistribua rotas estáticas sem filtros adequados em produção, pois isso pode causar loops de roteamento ou blackholes se a rota estiver instável.
Passo 1: Verificação da Topologia e Conectividade
O primeiro passo é garantir que a conectividade básica esteja estabelecida. Antes de mexer no BGP, verifique se o link está ativo e se há rotas válidas na tabela de roteamento.
Use o comando abaixo para listar as interfaces ativas e seus endereços IP:
/ip address print
Em seguida, verifique se a rota estática alvo existe. Por exemplo, se você quer anunciar a rota padrão:
/ip route print where dst-address="0.0.0.0/0"
O resultado deve mostrar o status active e static. Se a rota não estiver ativa, o BGP não a redistribuirá, pois o protocolo exige que a rota esteja na tabela de roteamento principal (main routing table) antes de ser injetada no BGP.
Passo 2: Configuração Básica do BGP
Vamos configurar o processo BGP e definir o número do Sistema Autônomo (AS). Substitua 65001 pelo seu AS real. Se você não possui um AS numérico público, use um AS privado na faixa 64512-65534 para testes ou ambientes internos.
/routing bgp/template add name=DEFAULT-template default-as=65001
Agora, crie a instância do BGP vinculada ao template criado:
/routing bgp/session add name=upstream-peer template=DEFAULT-template remote-address=IP_DO_PEER remote-as=AS_DO_PEER authentication-key=sua_senha_segura
Verifique se a sessão BGP subiu corretamente:
/routing bgp/session print
O status deve indicar established. Se estiver em idle ou connect, verifique firewalls e conectividade TCP na porta 179.
Passo 3: Configurando a Redistribuição de Rotas Estáticas
Aqui está o núcleo do tutorial. No MikroTik, a redistribuição é feita através dos parâmetros da sessão BGP ou do template global. A melhor prática é usar o export-from para especificar exatamente quais tabelas de roteamento devem ser exportadas para o BGP.
Por padrão, se você não especificar nada, o MikroTik pode tentar exportar rotas da tabela principal. Para ter controle total, vamos configurar explicitamente a redistribuição de rotas estáticas.
Atualize a sessão BGP para incluir a opção de exportação:
/routing bgp/session set [find name=upstream-peer] export-from=main
No entanto, apenas dizer "exporte da tabela main" não filtra o que sai. Precisamos garantir que apenas as rotas estáticas desejadas sejam anunciadas. Para isso, utilizaremos Scripts de Exportação (Export Scripts) ou filtros de roteamento. A abordagem mais limpa e moderna no RouterOS v7 é usar os recursos nativos de roteamento.
Vamos configurar o template para permitir a redistribuição:
/routing bgp/template set [find name=DEFAULT-template] export-rib=yes
O parâmetro export-rib=yes permite que o BGP injete rotas na tabela de roteamento e vice-versa, facilitando a redistribuição. Agora, vamos definir quais rotas são candidatas. Em vez de redistribuir todas as estáticas, é recomendável criar uma lista de controle de acesso (ACL) ou usar prefix-lists.
Crie uma lista de prefixes para permitir apenas o que você deseja anunciar:
/ip firewall address-list add list=bgp-allowed-routes address=SEU_CIDR/24
Agora, vincule essa lógica à exportação. No MikroTik, a forma mais robusta de filtrar o que sai do BGP é através de Routing Filters. Vamos criar um filtro de roteamento:
/routing filter add chain=bgp-export rule="where dst-address ~ SEU_CIDR/24" action=accept
E outro para rejeitar o resto:
/routing filter add chain=bgp-export rule="action=reject"
Por fim, aplique esse filtro à sessão BGP:
/routing bgp/session set [find name=upstream-peer] export-filter=bgp-export
Com essa configuração, o MikroTik verificará cada rota estática na tabela main. Se a rota de destino corresponder ao prefixo definido em SEU_CIDR/24, ela será anunciada. Caso contrário, será rejeitada.
Passo 4: Ajuste da Métrica Local (Local Preference) e Origem
Ao redistribuir rotas estáticas, é importante definir atributos BGP claros para influenciar o caminho do tráfego. Um atributo crucial é a Métrica de Origem (ORIGIN). Rotas redistribuídas geralmente recebem a origem incomplete, enquanto rotas aprendidas via IGP têm igp.
Para melhorar a visibilidade e o controle, você pode forçar atributos específicos durante a exportação. Adicione uma regra de filtro que modifique os atributos:
/routing filter add chain=bgp-export rule="where dst-address ~ SEU_CIDR/24" action=set-attribute attribute="origin igp"
Além disso, defina o Local Preference se você estiver em um ambiente multi-homed. Embora o Local Preference não seja enviado para peers externos (eBGP), ele é vital se você tiver múltiplos links BGP internos ou iBGP.
Passo 5: Validação e Monitoramento
Após aplicar as configurações, é hora de validar se a redistribuição está ocorrendo conforme o esperado. Não assuma que funcionou apenas porque não houve erros de sintaxe.
Verifique as rotas BGP na tabela de roteamento do MikroTik:
/ip route print where routing-table=main dynamic
Você deve ver suas rotas estáticas agora marcadas como bgp. Verifique o atributo de origem e o próximo salto (next-hop).
Para uma visão mais detalhada dos pacotes trocados, use o debug do BGP. Use com cautela em ambientes de produção:
/debug log print where topic~"bgp"
Procure por mensagens como advertise route. Se você vir a mensagem indicando que o prefixo foi anunciado, sua configuração está correta.
Boas Práticas e Segurança na Redistribuição
A redistribuição de rotas é uma operação poderosa, mas perigosa. Siga estas diretrizes para manter a estabilidade da sua infraestrutura:
- Sempre use Filtros de Entrada e Saída: Nunca faça
export-from=mainsem um filtro rigoroso. Isso evita que rotas internas acidentais ou loops sejam anunciados à internet. - Monetize a Rota Padrão com Cuidado: Anunciar
0.0.0.0/0via BGP significa que você está dizendo ao mundo "eu tenho o caminho para tudo". Isso só deve ser feito se você tiver links redundantes e estiver preparado para absorver tráfego global. - Use Prefix-Lists: Em vez de depender apenas de listas de acesso, utilize
/ip route filterou prefix-lists específicos para BGP. Eles são mais eficientes e legíveis. - Monitoramento Contínuo: Configure alertas no seu sistema de monitoramento (Zabbix, PRTG, Prometheus) para mudanças na tabela BGP. Se uma rota estática desaparece e o BGP ainda a anuncia (devido a cache ou atrasos), você precisa saber imediatamente.
Troubleshooting Comum
Se as rotas não estão sendo anunciadas, verifique os seguintes pontos:
- Rota Inativa: Se a rota estática não está
activena tabela de roteamento, o BGP a ignorará. Verifique se o gateway de próxima salto é alcançável. - Filtros Bloqueando: Revise suas regras em
/routing filter. Uma regra derejectmal posicionada pode silenciar toda a redistribuição. - Maximum Prefixes: Seu peer BGP upstream pode ter configurado um limite máximo de prefixes que você pode anunciar. Se você exceder esse limite, a sessão cairá ou as rotas extras serão ignoradas. Verifique os logs do peer ou entre em contato com o suporte do ISP.
Conclusão
A configuração de BGP com redistribuição de rotas estáticas no MikroTik é uma habilidade essencial para qualquer profissional de redes que gerencie infraestruturas complexas. Ao seguir os passos deste tutorial — desde a verificação da conectividade até a aplicação de filtros rigorosos — você garante não apenas a funcionalidade, mas também a segurança e a estabilidade do seu domínio.
Lembre-se: o BGP é um protocolo de política. A tecnologia é apenas o veículo; a lógica de roteamento e as regras de negócio definem para onde os dados vão. Teste suas configurações em ambiente de homologação antes de aplicar em produção e documente sempre as mudanças realizadas.
Para mais tutoriais sobre infraestrutura, cloud e redes, continue acompanhando nossos conteúdos técnicos.