Guia de Multihoming BGP no MikroTik para Alta Disponibilidade

8 min de leitura Redes e Infraestrutura
Guia de Multihoming BGP no MikroTik para Alta Disponibilidade

O multihoming BGP (Border Gateway Protocol) é uma das técnicas mais robustas para garantir alta disponibilidade e redundância em infraestruturas críticas. Para administradores de sistemas (sysadmins), desenvolvedores e profissionais de TI, implementar BGP em roteadores MikroTik permite o controle total sobre o trânsito de dados, otimização de latência e failover automático entre múltiplos provedores de internet. Este tutorial técnico detalha o processo completo de configuração do BGP no RouterOS v7.

Pré-requisitos e Planejamento

Antes de aplicar qualquer comando, é fundamental ter os dados dos seus provedores em mãos. Para configurar o multihoming, você precisa de:

  • Dois ou mais links de internet de provedores diferentes (ou o mesmo provedor com caminhos distintos).
  • Acesso SSH ou WebFig ao seu roteador MikroTik.
  • Números de ASN (Autonomous System Number): Um ASN privado (ex: 65000) se você não possui um ASN público, ou um ASN público alocado pela RIR (como o LACNIC).
  • Prefixos IP anunciados: Se você possui blocos IP públicos próprios, eles devem estar anunciados via BGP. Caso contrário, o roteador atuará apenas como cliente dos provedores.

Para este exemplo, utilizaremos a seguinte topologia lógica:

  • Roteador MikroTik (R1): ASN 65001 (Cliente).
  • Provedor A (ISP-A): ASN 64500, Gateway: 203.0.113.1, Link: ether1.
  • Provedor B (ISP-B): ASN 64501, Gateway: 198.51.100.1, Link: ether2.

Etapa 1: Configuração de Endereçamento e Rotas Estáticas

O BGP depende da existência de rotas válidas na tabela de roteamento principal para estabelecer adjacências. No MikroTik, é necessário criar rotas estáticas apontando para os gateways dos provedores e marcar essas rotas como lookup-only para o BGP.

Primeiro, atribua endereços IP aos seus links WAN:

/ip address
add interface=ether1 address=203.0.113.10/30 network=203.0.113.9
add interface=ether2 address=198.51.100.10/30 network=198.51.100.9

Agora, crie as rotas estáticas para os gateways dos provedores. É crucial adicionar a marcação route-mark=bgp-next-hop (ou um nome personalizado) para que o BGP saiba que deve usar esses próximos saltos:

/ip route
add dst-address=0.0.0.0/0 gateway=203.0.113.1 routing-mark=bgp-next-hop check-gateway=ping distance=1
add dst-address=0.0.0.0/0 gateway=198.51.100.1 routing-mark=bgp-next-hop check-gateway=ping distance=2

Neste exemplo, o link do Provedor A tem prioridade (distance=1) sobre o B (distance=2). O parâmetro check-gateway=ping garante que a rota seja desativada se o gateway não responder a ping, ativando o failover imediato.

Etapa 2: Configuração do Filtro de Roteamento (Prefix-Lists)

O BGP pode receber milhares de rotas. Para evitar sobrecarga na CPU do MikroTik e garantir segurança, filtre apenas as rotas que você deseja aceitar dos seus provedores. Geralmente, aceitam-se apenas as rotas padrão (0.0.0.0/0) e os prefixos específicos do provedor.

Crie uma lista de prefixos (Prefix-List) para definir o que é permitido:

/routing prefix-list
add name=accept-from-isp-a comment="Rotas permitidas do ISP A"
add prefix=0.0.0.0/0 le=32 sequence=10 action=permit
add prefix=203.0.113.0/24 le=32 sequence=20 action=permit

Repita o processo para o ISP B, ajustando os prefixes conforme necessário:

/routing prefix-list
add name=accept-from-isp-b comment="Rotas permitidas do ISP B"
add prefix=0.0.0.0/0 le=32 sequence=10 action=permit
add prefix=198.51.100.0/24 le=32 sequence=20 action=permit

Etapa 3: Configuração das Mapeamentos de Rota (Route-Maps)

No MikroTik, as route-maps são usadas para aplicar políticas de roteamento. Vamos criar uma rota-map que aceita as rotas definidas anteriormente e impede outras.

/routing map
add name=map-from-isp-a
add rule name=permit-a route-list=accept-from-isp-a action=permit
add rule name=default-deny action=deny

Faça o mesmo para o segundo provedor:

/routing map
add name=map-from-isp-b
add rule name=permit-b route-list=accept-from-isp-b action=permit
add rule name=default-deny action=deny

Etapa 4: Configuração do BGP Peering

Agora, defina os pares (peers) BGP. Você precisa especificar o ASN do provedor, o endereço IP remoto e aplicar as maps de rota criadas.

Configure a sessão com o Provedor A:

/routing bgp peer
add name=peer-isp-a remote-as=64500 address-families=ipv4 ip-address=203.0.113.1 \
    route-map-in=map-from-isp-a as-path-limit=0 comment="Peering com ISP A"

Configure a sessão com o Provedor B:

/routing bgp peer
add name=peer-isp-b remote-as=64501 address-families=ipv4 ip-address=198.51.100.1 \
    route-map-in=map-from-isp-b as-path-limit=0 comment="Peering com ISP B"

Verifique se as sessões estão estabelecidas executando o comando:

/routing bgp session print

O status deve indicar established. Se estiverem em estado idle ou active, verifique a conectividade IP e as configurações de firewall.

Etapa 5: Propagação da Rota Padrão para a Rede Interna (NAT)

O BGP aprende rotas externas, mas sua rede interna precisa saber como acessar a internet. O MikroTik deve propagar a rota padrão aprendida via BGP para a tabela de roteamento principal, permitindo que o NAT (masquerade) funcione corretamente.

Crie uma regra de route-map para aceitar a rota padrão do BGP e marcá-la para ser instalada na tabela principal:

/routing map
add name=map-bgp-to-main
add rule name=permit-default prefix-list="accept-from-isp-a" action=permit \
    set-route-table=main
add rule name=permit-default-b prefix-list="accept-from-isp-b" action=permit \
    set-route-table=main

Aplicar isso diretamente via BGP pode ser complexo dependendo da versão do RouterOS. Uma abordagem mais comum e robusta no MikroTik para multihoming simples é usar IP Route Scripts ou ajustar a prioridade das rotas estáticas dinamicamente. No entanto, para manter a simplicidade neste tutorial, vamos utilizar a técnica de route-mark na etapa 1 combinada com o BGP.

Ajuste as rotas estáticas para que elas dependam da saúde do link e usem o gateway do BGP se disponível. Mas, para uma implementação padrão onde o MikroTik atua como cliente final:

  1. O BGP aprende 0.0.0.0/0 dos dois provedores.
  2. O BGP seleciona a melhor rota baseada no caminho AS (se houver diferença) ou na métrica local.
  3. Você precisa instalar essa rota BGP na tabela principal.

No MikroTik, isso é feito automaticamente se você não bloquear a instalação. Verifique em:

/ip route print where dynamic=yes and dst-address="0.0.0.0/0"

Se as rotas dinâmicas aparecerem, o tráfego já está sendo balanceado ou failover ocorre automaticamente com base na prioridade configurada no BGP.

Etapa 6: Configuração de NAT (Masquerade)

Para que os clientes da sua rede interna tenham acesso à internet, configure o NAT Masquerade. Como você tem múltiplos links de saída, é recomendável usar out-of-band ou garantir que o NAT funcione em ambas as interfaces.

/ip firewall nat
add chain=srcnat out-interface=ether1 action=masquerade comment="NAT ISP A"
add chain=srcnat out-interface=ether2 action=masquerade comment="NAT ISP B"

Isso garante que o tráfego que sai por ether1 seja traduzido com o IP do ether1, e o mesmo para ether2.

Etapa 7: Monitoramento e Troubleshooting

A parte mais crítica de um sysadmin é monitorar a saúde da conexão. Use os comandos abaixo para diagnosticar problemas:

Verificar status das sessões BGP:

/routing bgp session print

Verificar rotas aprendidas via BGP:

/routing table print where name="default"

Ou mais especificamente:

/ip route print where dynamic=yes

Testar a conectividade com os provedores:

/ping 203.0.113.1 interface=ether1
/ping 198.51.100.1 interface=ether2

Verificar logs do BGP:

/log print where topic~"bgp"

Considerações Finais sobre Alta Disponibilidade

A implementação de multihoming BGP no MikroTik oferece redundância real. Se o link do Provedor A cair, o check-gateway=ping remove a rota estática principal, e o BGP seleciona automaticamente a rota padrão vinda do Provedor B, mantendo a conectividade sem intervenção humana.

Para ambientes empresariais de alta complexidade, considere implementar:

  • BFD (Bidirectional Forwarding Detection): Para detecção de falhas mais rápida que o ping tradicional.
  • Anúncio de Prefixos Próprios: Se você possui IPs públicos, anuncie-os via BGP para garantir que o tráfego de entrada também seja balanceado ou redirecionado corretamente.
  • Scripting de Failover Avançado: Use scripts em /system script para enviar alertas (e-mail/Slack) quando uma rota BGP cair.

Com esta configuração, sua infraestrutura está preparada para lidar com falhas de link e otimizar o roteamento de forma profissional, atendendo aos requisitos de SLA de serviços críticos.

Compartilhar: Link copiado!
Esse tutorial foi útil?

Comentários (0)

Seja o primeiro a comentar.

Deixe seu comentário

Seu comentário será analisado antes de ser publicado.

0/2000