Como configurar BGP no MikroTik: passo a passo para provedores
Como configurar BGP no MikroTik: no RouterOS 7, você cria um template com o ASN do provedor, uma connection para cada vizinho, uma address-list com o bloco a anunciar e duas cadeias de filtro, uma de entrada e outra de saída. O bloco também precisa existir na tabela de rotas, quase sempre como rota blackhole, ou não é anunciado.
Resumo
- No RouterOS 7, os antigos instance e peer deram lugar a template, connection e session.
- O bloco só é anunciado se estiver na address-list da connection e também na tabela de rotas.
- O filtro de saída termina em reject, para a borda nunca repassar rotas de uma operadora para a outra.
- Antes de mexer, um export da configuração garante o caminho de volta se algo der errado.
O que mudou no BGP do RouterOS 7
O RouterOS 7 reescreveu o BGP do zero, e quase nada da sintaxe do 6 funciona igual. Quem migra copiando comandos antigos costuma ter a sessão no ar e os filtros sem efeito nenhum.
| Função | RouterOS 6 | RouterOS 7 |
|---|---|---|
| ASN e router-id | /routing bgp instance | /routing/bgp/template |
| Vizinho | /routing bgp peer | /routing/bgp/connection |
| Estado da sessão | Coluna de status do peer | /routing/bgp/session |
| Prefixos anunciados | /routing bgp network | address-list ligada em output.network |
| Filtros | Regras com match e action | /routing/filter/rule com sintaxe de if |
A mudança mais profunda está nos filtros. No 6, cada regra tinha campos de condição e de ação; no 7, cada regra é uma pequena expressão, como "if (dst-len > 24) { reject }", lida em ordem até a primeira decisão.
A configuração abaixo é a base de uma borda com um trânsito. Os serviços de BGP para provedores partem dela e acrescentam IX.br, caches, RPKI e a política de cada link.
O que ter em mãos antes de começar
Sem os dados abaixo, a sessão até pode subir, mas sobe errada. Peça à operadora por escrito e guarde junto da documentação da borda.
- ASN e bloco: o seu número de AS e os prefixos IPv4 e IPv6 em seu nome.
- Dados do vizinho: IP de cada lado do enlace, ASN da operadora e senha MD5, se houver.
- Tipo de tabela: se a operadora vai mandar a tabela completa, só a rota padrão ou rotas parciais.
- ROA criado: a autorização de origem do seu bloco no RPKI, para o anúncio não ser marcado como inválido.
- Cópia da configuração: um export recente, guardado fora do roteador.
Como configurar BGP no MikroTik, passo a passo
São quatro blocos de comandos, sempre nesta ordem: rota do bloco, lista de anúncio, template e connection. Os filtros vêm logo depois, antes de a sessão ser liberada.
- Rota do bloco: crie uma rota blackhole para o prefixo próprio, para ele existir na tabela de rotas.
- Lista de anúncio: coloque o prefixo numa address-list, que a connection vai usar para anunciar.
- Template: defina o ASN do provedor e o router-id, que valem para todas as sessões que usarem o modelo.
- Connection: crie a sessão com o IP e o ASN da operadora, a senha e o nome das cadeias de filtro.
- Filtros: escreva as cadeias de entrada e de saída antes de a operadora liberar a sessão do lado dela.
# 1. Bloco próprio na tabela de rotas
/ip/route
add dst-address=203.0.113.0/24 blackhole comment="Bloco do AS64500"
# 2. Prefixos que a borda anuncia
/ip/firewall/address-list
add list=bgp-anuncios address=203.0.113.0/24
# 3. Modelo com o ASN e o router-id do provedor
/routing/bgp/template
add name=borda as=64500 router-id=192.0.2.1
# 4. Sessão com o trânsito A
/routing/bgp/connection
add name=transito-a templates=borda local.role=ebgp \
local.address=198.51.100.2 remote.address=198.51.100.1 \
remote.as=64496 tcp-md5-key="TROQUE-ESTA-SENHA" \
input.filter=transito-a-in output.filter-chain=transito-a-out \
output.network=bgp-anunciosRepare que a connection aponta para duas cadeias que ainda não existem. Enquanto elas não forem criadas, o comportamento depende da versão, por isso o mais seguro é escrever os filtros antes de pedir a liberação.
O que cada parte da configuração faz
Cada linha resolve um problema que, sem ela, aparece só depois da sessão no ar. Vale entender antes de copiar.
- Blackhole: mantém o prefixo na tabela mesmo que nenhum cliente esteja usando aquele trecho do bloco.
- Address-list: é a lista que o output.network lê; prefixo fora dela não é anunciado.
- Local.role: marca a sessão como externa; papéis como ebgp-customer somam a proteção contra vazamento da RFC 9234 [CONFIRMAR na versão do RouterOS].
- Tcp-md5-key: autentica a sessão TCP; precisa ser idêntica à senha cadastrada pela operadora.
- Input.filter e output.filter-chain: ligam a sessão às cadeias de entrada e de saída.
Para IPv6, repita o mesmo desenho com uma connection própria, os endereços IPv6 do enlace, uma rota blackhole IPv6 e a lista em /ipv6/firewall/address-list.
Filtros de entrada e saída no RouterOS 7
O filtro de saída define o que o mundo aprende do seu provedor, e o de entrada define o que a sua borda aceita do mundo. Os dois são lidos de cima para baixo e param na primeira regra que aceita ou rejeita.
/routing/filter/rule
# Saída: só o bloco próprio, com a máscara exata
add chain=transito-a-out rule="if (dst in 203.0.113.0/24 && dst-len == 24) { accept }"
add chain=transito-a-out rule="reject"
# Entrada: descarta o próprio bloco, faixas privadas e prefixos longos
add chain=transito-a-in rule="if (dst in 203.0.113.0/24) { reject }"
add chain=transito-a-in rule="if (dst in 10.0.0.0/8 || dst in 172.16.0.0/12) { reject }"
add chain=transito-a-in rule="if (dst in 192.168.0.0/16) { reject }"
add chain=transito-a-in rule="if (dst-len > 24) { reject }"
add chain=transito-a-in rule="accept"Esse é o mínimo, e não o filtro completo de uma borda em produção. A lista de faixas que nunca deveriam circular é maior, e o guia de configuração de prefix-lists mostra como montá-la e mantê-la a partir do IRR.
Quer a sua borda MikroTik revisada antes de anunciar?
Nos serviços de BGP, um Especialista escreve as sessões e os filtros no RouterOS 7, aplica com plano de volta e documenta cada cadeia.
Por que a cadeia de saída precisa terminar em reject?
Porque, sem ela, a borda pode repassar ao trânsito A as rotas que aprendeu do trânsito B. O provedor vira caminho entre duas operadoras, o link lota em minutos e as operadoras derrubam a sessão.
A RFC 7454, que reúne boas práticas de operação de BGP, recomenda anunciar só os prefixos próprios e os de clientes. A regra final de reject custa uma linha e fecha a porta para esse vazamento na saída.
Onde entra a política de preferência
A cadeia de entrada também é o lugar de marcar preferências, como LOCAL_PREF maior para as rotas do IX.br. O guia sobre como o BGP faz a seleção da melhor rota explica em que ordem esses valores pesam.
Coloque as regras de preferência depois dos rejects de segurança. Assim, nenhuma rota que deveria ser descartada recebe atributo antes de sair da disputa.
Como conferir se a sessão subiu e o que está sendo anunciado?
Confira três coisas, nesta ordem: o estado da sessão, o número de rotas recebidas e o que a borda está anunciando. Sessão estabelecida com zero prefixo em algum dos lados quase sempre é filtro ou falta da rota blackhole.
# Estado de cada sessão e tempo no ar
/routing/bgp/session/print
# Quantas rotas BGP chegaram à tabela
/ip/route/print count-only where bgp
# O que a borda anunciou ao vizinho
/routing/bgp/advertisements/print
# De onde veio a rota de um destino e por que está ativa
/routing/route/print detail where dst-address=198.51.100.0/24| O que você vê | O que significa | Onde olhar |
|---|---|---|
| Sessão ausente na lista | A conexão TCP não fechou | IP, ASN, senha e firewall da porta 179 |
| Sessão estabelecida, zero rotas recebidas | O filtro de entrada barra tudo ou a operadora não liberou | Ordem das regras da cadeia de entrada |
| Nenhum prefixo anunciado | O bloco não está na tabela ou na lista | Rota blackhole e address-list |
| Rotas recebidas, tráfego saindo pelo outro link | Política de preferência | LOCAL_PREF nas cadeias de entrada |
Se a sessão nem aparece, o problema está antes do BGP. O guia de sessão BGP que não sobe percorre essas causas por ordem de frequência.
Confirmar o anúncio do lado de fora
O roteador mostra o que enviou, não o que a internet recebeu. A conferência final é feita no looking glass da operadora ou de outra rede, procurando o seu prefixo e o seu ASN na origem do caminho.
Faça essa consulta logo após a liberação e de novo no dia seguinte. Um prefixo que aparece numa hora e some na outra costuma indicar filtro da operadora ou ROA ausente.
Erros comuns ao configurar BGP no MikroTik
Os erros mais frequentes vêm de hábitos do RouterOS 6 e de filtros escritos na ordem errada. Quase todos deixam a sessão estabelecida, o que atrasa o diagnóstico.
Evite
- Colar comandos de /routing bgp peer do RouterOS 6 num roteador com o 7.
- Esquecer a rota blackhole e esperar que a address-list anuncie sozinha.
- Deixar a cadeia de saída sem o reject final.
- Começar a cadeia de entrada com accept, o que torna inúteis as regras abaixo.
- Receber a tabela completa num modelo com pouca memória.
- Mexer na borda sem um export guardado fora do roteador.
O último erro é o que transforma um ajuste simples numa noite longa. Se a configuração se perder, o guia de recuperar a configuração do MikroTik mostra os caminhos de volta.
Exemplo: sessão estabelecida e bloco que não sai
Um provedor migra a borda para o RouterOS 7, a sessão sobe e as rotas da operadora chegam. Mas ninguém de fora alcança os assinantes.
- Sintoma: a lista de anúncios está vazia e o looking glass da operadora não mostra o prefixo.
- Causa: o bloco só existia como rotas menores, dos pools de clientes, e não como o /24 inteiro.
- Correção: a rota blackhole para 203.0.113.0/24 foi criada, e o anúncio saiu na mesma hora.
A blackhole não descarta o tráfego dos clientes, porque as rotas mais específicas dos pools continuam ganhando na tabela. Ela só garante que o prefixo agregado exista para ser anunciado.
Quando o MikroTik deixa de dar conta da borda?
O RouterOS 7 sustenta bem a borda de muitos provedores regionais, desde que o modelo tenha memória e processamento para a tabela e para o volume de tráfego. O limite costuma aparecer na reconvergência e no pico, não na configuração.
Os sinais são conhecidos: sessão que demora a voltar depois de uma queda, CPU alta à noite e rotas que levam minutos para trocar de link. O guia do roteador de borda com CPU em 100% mostra como separar o que é tráfego do que é processamento de rotas.
Marque o que já acontece na sua borda MikroTik
- A sessão leva muito tempo para voltar a receber todas as rotas depois de uma queda.
- A CPU fica perto do limite no horário de pico, mesmo sem ataque.
- A memória livre cai muito depois de receber a tabela completa.
- Uma segunda operadora vai entrar e o modelo já está no limite.
Uma marca pede monitoramento mais próximo. Duas ou mais indicam que vale reavaliar o equipamento ou receber menos rotas, como rota padrão mais rotas parciais.
Como configurar BGP no MikroTik com um segundo trânsito
Com um segundo trânsito, a configuração ganha outra connection, com cadeias próprias de entrada e saída. O template e a lista de anúncios podem ser os mesmos.
O que muda de verdade é a política: qual link é preferido na saída, como dividir a entrada e o que acontece quando um deles cai. A Táquion Tech configura essa borda com dois links e testa a troca com tráfego real antes de dar o trabalho por encerrado.
Perguntas frequentes
Qual a diferença entre template e connection no RouterOS 7?
O template guarda as opções comuns a várias sessões, como o ASN do provedor e o router-id. A connection é cada sessão com um vizinho e herda do template o que não for definido nela.
Os comandos de BGP do RouterOS 6 funcionam no 7?
Não. Os menus instance, peer e network foram substituídos, e os filtros mudaram de formato; na atualização, o roteador tenta converter a configuração, mas os filtros precisam ser conferidos um por um.
Preciso receber a tabela completa da operadora?
Só se a borda tem mais de um link e precisa escolher a saída por destino. Com um link só, a rota padrão resolve; com dois links e pouco equipamento, rota padrão mais rotas parciais é um meio-termo comum.
Como anunciar o bloco IPv6 por BGP no MikroTik?
Crie uma connection separada com os endereços IPv6 do enlace, uma rota blackhole para o bloco IPv6 e uma address-list IPv6 ligada ao output.network. Os filtros seguem a mesma lógica, com o tamanho máximo de prefixo ajustado para IPv6.
Como saber se a operadora recebeu o meu prefixo?
Consulte o looking glass da operadora ou de outra rede e procure o seu prefixo com o seu ASN na origem. Se ele não aparece, confira a lista de anúncios no roteador, o filtro da operadora e o ROA do bloco.
Fontes
- BGP no RouterOS (documentação MikroTik): template, connection, session e parâmetros de entrada e saída no RouterOS v7.
- RFC 7454, BGP Operations and Security: filtros de prefixo, faixas que não devem circular e prevenção de vazamento de rotas.
- RFC 9234, Route Leak Prevention and Detection Using Roles: papéis de sessão usados pelo parâmetro local.role.