Guia Avançado: BGP Multi-homing com Mikrotik RouterOS 7 (Operadora e IX)
Cenário Proposto
Este guia aborda um cenário comum e robusto para Provedores de Internet (ISPs): a configuração de BGP em **multi-homing**. Teremos uma conexão com uma **Operadora de Trânsito** (para receber a rota default e anunciar nossos prefixos) e uma conexão com um **Ponto de Troca de Tráfego (IX)** para otimizar a rota de tráfegos locais.
Usaremos os seguintes parâmetros como base:
- AS Number (ASN): 65535
- Prefixo IPv4 Agregado: 172.16.0.0/22
- Prefixo IPv6 Agregado: 2001:db8::/32
Passo 1: Instância BGP e Loopback
Como boa prática, iniciamos configurando a interface de loopback para garantir um `router-id` estável.
/ip address
add address=172.16.0.1/32 interface=lo
/routing bgp instance
add name=bgp-instance as=65535 router-id=172.16.0.1
Passo 2: Gerenciando Prefixos com Address Lists
Uma técnica poderosa no RouterOS é usar `Address Lists` para gerenciar quais prefixos anunciar para cada peer. Para o IX, anunciaremos nossos prefixos mais específicos (/24), enquanto para a operadora, podemos anunciar o bloco agregado (/22).
/ip firewall address-list
# Lista de prefixos específicos para anunciar no IX
add address=172.16.0.0/24 list=IX-NETWORKS
add address=172.16.1.0/24 list=IX-NETWORKS
add address=172.16.2.0/24 list=IX-NETWORKS
add address=172.16.3.0/24 list=IX-NETWORKS
# Lista com nosso bloco agregado para a Operadora
add address=172.16.0.0/22 list=OPERADORA-NETWORKS
# Lista de prefixos específicos para anuciar no IX v6
/ipv6 firewall address-list
add address=2001:db8::/34 list=IXv6-NETWORKS
add address=2001:db8:4000::/34 list=IXv6-NETWORKS
add address=2001:db8:8000::/34 list=IXv6-NETWORKS
add address=2001:db8:c000::/34 list=IXv6-NETWORKS
# Lista com nosso bloco agregado para a Operadora v6
add address=2001:db8::/32 list=OPERADORAv6-NETWORKS
Passo 3: Criando Filtros de Rota Avançados
Os filtros são a parte mais crítica. Vamos criar conjuntos de regras de entrada (IMPORT) e saída (EXPORT) para cada tipo de conexão (IX e Operadora), tanto para IPv4 quanto para IPv6.
Filtros para o IX.br
No IX, anunciamos apenas nossos prefixos específicos e nunca aceitamos uma rota default.
/routing filter rule
# IPv4 - Exporta apenas os /24 listados em IX-NETWORKS
add chain=IX_EXPORT rule="if (dst in IX-NETWORKS) { accept } else { reject }"
# IPv4 - Rejeita a rota default
add chain=IX_IMPORT rule="if (dst == 0.0.0.0/0 || dst-len > 24) { reject } else { accept }"
# IPv6 - Exporta apenas prefixos /48 do nosso bloco
add chain=IX-V6_EXPORT rule="if (dst in IXv6-NETWORKS) { accept } else { reject }"
# IPv6 - Rejeita a rota default IPv6
add chain=IX-V6_IMPORT rule="if (dst == ::/0) { reject } else { accept }"
Filtros para a Operadora de Trânsito
Para a operadora, anunciamos nosso bloco agregado. Na importação, aceitamos a rota default e aplicamos um `local-preference` para definir prioridades.
/routing filter rule
# IPv4 - Exporta nosso bloco agregado /22
add chain=OPERADORA_EXPORT rule="if (dst in OPERADORA-NETWORKS) { accept } else { reject }"
# IPv4 - Aceita a rota default
add chain=OPERADORA_IMPORT rule="if (dst == 0.0.0.0/0) { set bgp-local-pref 100; accept } else { reject }"
# IPv6 - Exporta nosso bloco agregado /32
add chain=OPERADORA-V6_EXPORT rule="if (dst in OPERADORAv6-NETWORKS) { accept } else { reject }"
# IPv6 - Aceita tudo da operadora (incluindo rota default v6)
add chain=OPERADORA-V6_IMPORT rule="accept"
Passo 4: Configurando as Conexões BGP
Com os filtros prontos, aplicamos as regras nas conexões com nossos peers.
/routing bgp connection
# Conexão com a Operadora
add afi=ip as=65535 disabled=no input.filter=OPERADORA_IMPORT \
instance=bgp-instance local.role=ebgp name=OPERADORA \
output.filter-chain=OPERADORA_EXPORT .network=OPERADORA-NETWORKS \
remote.address=203.0.113.1/32 .as=64512 routing-table=main
add afi=ipv6 as=65535 disabled=no input.filter=OPERADORA-V6_IMPORT \
instance=bgp-instance local.role=ebgp name=OPERADORAv6 \
output.filter-chain=OPERADORA-V6_EXPORT .network=OPERADORAv6-NETWORKS \
remote.address=2001:db9::a/128 .as=64512 routing-table=main
# Conexão com o IX
add afi=ip as=65535 disabled=no input.filter=IX_IMPORT \
instance=bgp-instance local.role=ebgp name=IX \
output.filter-chain=IX_EXPORT .network=IX-NETWORKS \
remote.address=187.16.216.253/32 .as=26162 routing-table=main
add afi=ipv6 disabled=no input.filter=IX-V6_IMPORT \
instance=bgp-instance local.role=ebgp name=IXv6 \
output.filter-chain=IX-V6_EXPORT .network=IXv6-NETWORKS \
remote.address=2001:12f8::253/128 .as=26162 routing-table=main
Passo 5: Anunciando os Prefixos
Finalmente, criamos rotas `blackhole` e as redistribuímos no BGP. Esta é a forma mais estável de originar seus prefixos.
/ip route
add blackhole dst-address=172.16.0.0/22
add blackhole dst-address=172.16.0.0/23
add blackhole dst-address=172.16.0.0/24
add blackhole dst-address=172.16.1.0/24
add blackhole dst-address=172.16.2.0/24
add blackhole dst-address=172.16.3.0/24
add blackhole dst-address=172.16.2.0/23
/ipv6 route
add blackhole dst-address=2001:db8::/32
add blackhole dst-address=2001:db8::/34
add blackhole dst-address=2001:db8:4000::/34
add blackhole dst-address=2001:db8:8000::/34
add blackhole dst-address=2001:db8:c000::/34
Conclusão
Esta configuração implementa uma arquitetura de rede redundante e otimizada, separando o tratamento de rotas de trânsito e de peering. A utilização de `address-lists` e `local-preference` oferece um controle granular sobre o fluxo de tráfego, essencial para a operação de um ISP moderno.
Para cenários mais complexos envolvendo comunidades BGP, engenharia de tráfego avançada ou mitigação de DDoS, a expertise de uma consultoria especializada é fundamental. A BGP Consultoria está à disposição para desenhar a solução ideal para sua rede.
← Voltar para a lista de artigos