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:
- O BGP aprende
0.0.0.0/0dos dois provedores. - O BGP seleciona a melhor rota baseada no caminho AS (se houver diferença) ou na métrica local.
- 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 scriptpara 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.