BGP, PTT e IPTables: Entendendo o Roteamento Avançado e Suas Aplicações em Servidores Linux
O protocolo BGP (Border Gateway Protocol) é um dos pilares mais críticos da infraestrutura de redes modernas, responsável por garantir que pacotes de dados trafeguem corretamente entre diferentes sistemas autônomos ao redor do mundo. Para profissionais de infraestrutura e DevOps que atuam com ambientes Linux, compreender o funcionamento do BGP, sua relação com os Pontos de Troca de Tráfego (PTT) e como aplicar políticas de filtragem com IPTables representa um diferencial técnico significativo. Neste artigo, vamos explorar esses conceitos de forma aprofundada, com exemplos práticos e comandos aplicáveis em ambientes reais.
O Que é o BGP e Por Que Ele é Fundamental para a Internet
O BGP é o protocolo de roteamento entre sistemas autônomos (AS — Autonomous Systems) utilizado em escala global. Diferentemente de protocolos de roteamento interior como OSPF ou RIP, o BGP foi projetado para operar entre organizações distintas, permitindo que ISPs (Provedores de Serviço de Internet), data centers, CDNs e grandes empresas troquem informações de roteamento de forma controlada e política.

Cada organização que participa do roteamento BGP na internet possui um número de sistema autônomo, o ASN (Autonomous System Number), atribuído por RIRs (Regional Internet Registries) como o LACNIC para a América Latina. Esse identificador é o que permite que o BGP diferencie rotas entre diferentes entidades administrativas.
O BGP opera sobre TCP na porta 179, estabelecendo sessões de peering entre roteadores denominados “BGP speakers”. Uma vez estabelecida a sessão, os roteadores trocam tabelas de roteamento contendo prefixos IP e atributos que determinam o caminho preferido para cada destino.
Tipos de BGP: eBGP e iBGP
Existem dois modos principais de operação do BGP que todo profissional de redes Linux precisa dominar:
eBGP (External BGP): Utilizado entre sistemas autônomos diferentes. É o modelo clássico de peering entre ISPs, data centers e empresas. As sessões eBGP normalmente são estabelecidas entre interfaces diretamente conectadas.
iBGP (Internal BGP): Utilizado dentro do mesmo sistema autônomo, permitindo que múltiplos roteadores internos compartilhem informações de roteamento aprendidas via eBGP. Um detalhe técnico importante: o iBGP exige que todos os roteadores sejam interconectados em full mesh ou que se utilize Route Reflectors para escalar a solução.
O Que é um PTT e Seu Papel na Infraestrutura de Internet
O PTT, ou Ponto de Troca de Tráfego, é uma infraestrutura física e lógica onde múltiplas redes se interconectam para trocar tráfego de forma direta, sem a necessidade de um intermediário. No Brasil, o PTT.br é gerenciado pelo NIC.br e representa um dos maiores e mais distribuídos ecossistemas de internet exchange da América Latina.

A lógica por trás de um PTT é simples, porém poderosa: em vez de um provedor regional precisar rotear o tráfego destinado a outro provedor nacional passando por um trânsito IP internacional caro e com latência elevada, ambos se conectam ao mesmo PTT e trocam tráfego diretamente, em um modelo chamado de peering.
Vantagens do Peering via PTT
Conectar-se a um PTT e estabelecer peerings BGP traz benefícios concretos para qualquer organização com ASN próprio:
- Redução de latência: O tráfego percorre um caminho mais curto, sem passar por múltiplos provedores de trânsito.
- Redução de custos: Diminui a dependência de trânsito IP pago, que cobra por volume de dados transferidos.
- Redundância e resiliência: Múltiplos caminhos para o mesmo destino aumentam a disponibilidade da conexão.
- Melhor performance: Usuários finais percebem menor tempo de resposta em aplicações como streaming, VoIP e acesso a conteúdo.
Como Funciona a Troca de Rotas no PTT
No ambiente de um PTT, existe uma infraestrutura de switching de alta velocidade (geralmente com capacidade de 100Gbps ou superior) à qual todos os membros se conectam. Cada membro configura sessões BGP com os demais participantes com os quais deseja realizar peering.
Além do peering bilateral, muitos PTTs oferecem a figura do Route Server, um servidor BGP centralizado que simplifica o processo de peering multilateral. Em vez de configurar N sessões individuais com cada participante, o membro configura apenas uma sessão com o Route Server, que redistribui os prefixos anunciados por todos os membros participantes.
BGP em Servidores Linux: Implementação Prática
Uma das grandes vantagens do ecossistema Linux é a disponibilidade de ferramentas maduras e open source para implementar BGP diretamente em servidores. As principais soluções são FRRouting (FRR) e BIRD Internet Routing Daemon.
Instalando o FRRouting no Linux
O FRRouting é amplamente utilizado em ambientes de produção, inclusive por grandes operadoras. A instalação em distribuições baseadas em Debian/Ubuntu é direta:
# Adicionando o repositório oficial do FRR
curl -s https://deb.frrouting.org/frr/keys.gpg | sudo tee /usr/share/keyrings/frrouting.gpg > /dev/null
echo deb '[signed-by=/usr/share/keyrings/frrouting.gpg]' https://deb.frrouting.org/frr \
$(lsb_release -s -c) frr-stable | sudo tee -a /etc/apt/sources.list.d/frr.list
sudo apt-get update && sudo apt-get install frr frr-pythontools -y
Após a instalação, habilite os daemons necessários editando o arquivo de configuração:
sudo nano /etc/frr/daemons
Altere as seguintes linhas para ativar o BGP:
bgpd=yes
zebra=yes
Reinicie o serviço para aplicar:
sudo systemctl restart frr
sudo systemctl enable frr
Configurando uma Sessão BGP Básica
Acesse o shell de configuração do FRR:
sudo vtysh
Dentro do shell, configure seu sistema autônomo e um peering básico:
configure terminal
router bgp 65001
bgp router-id 203.0.113.1
neighbor 203.0.113.2 remote-as 65002
neighbor 203.0.113.2 description "Peering PTT"
neighbor 203.0.113.2 soft-reconfiguration inbound
!
address-family ipv4 unicast
network 200.10.0.0/24
neighbor 203.0.113.2 activate
neighbor 203.0.113.2 route-map RM-IN in
neighbor 203.0.113.2 route-map RM-OUT out
exit-address-family
!
Configurando Route Maps e Filtros BGP
O controle de quais prefixos são aceitos e anunciados é uma prática de segurança indispensável no BGP. Utilizamos prefix-lists e route-maps para isso:
ip prefix-list PL-IN seq 5 permit 0.0.0.0/0 le 24
ip prefix-list PL-IN seq 10 deny 0.0.0.0/0 le 32
ip prefix-list PL-OUT seq 5 permit 200.10.0.0/24
ip prefix-list PL-OUT seq 10 deny 0.0.0.0/0 le 32
route-map RM-IN permit 10
match ip address prefix-list PL-IN
set local-preference 100
route-map RM-OUT permit 10
match ip address prefix-list PL-OUT
Esses filtros garantem que apenas prefixos IPv4 com máscara até /24 sejam aceitos (prevenindo leaks de rotas mais específicas) e que somente seus próprios prefixos sejam anunciados ao peer.
Aplicações Práticas do BGP com IPTables em Servidores Linux
A integração entre BGP e IPTables abre um conjunto poderoso de casos de uso para administradores de sistemas Linux. O BGP informa ao kernel quais prefixos estão acessíveis e por onde rotear o tráfego, enquanto o IPTables atua como firewall e controlador de tráfego na camada de pacotes.
Caso de Uso 1: Blackhole Remoto via BGP (RTBH)
O Remote Triggered Black Hole (RTBH) é uma das técnicas mais eficazes para mitigação de ataques DDoS utilizando BGP. Quando um endereço IP está sendo alvo de um ataque volumétrico, o operador anuncia via BGP uma rota específica para esse IP com o next-hop apontando para um endereço de blackhole (normalmente 192.0.2.1), instruindo todos os peers a descartarem o tráfego destinado ao endereço atacado.
No Linux, você pode combinar isso com o IPTables para logging e monitoramento local:
# Criar uma cadeia personalizada para blackhole
sudo iptables -N BLACKHOLE
# Logar e descartar tráfego da cadeia BLACKHOLE
sudo iptables -A BLACKHOLE -j LOG --log-prefix "BLACKHOLE-DROP: " --log-level 4
sudo iptables -A BLACKHOLE -j DROP
# Redirecionar tráfego destinado ao IP sob ataque
sudo iptables -A FORWARD -d 200.10.0.50/32 -j BLACKHOLE
sudo iptables -A INPUT -d 200.10.0.50/32 -j BLACKHOLE
No FRR, configure a rota de blackhole:
ip route 200.10.0.50/32 blackhole
router bgp 65001
address-family ipv4 unicast
network 200.10.0.50/32
neighbor 203.0.113.2 route-map RM-BLACKHOLE out
route-map RM-BLACKHOLE permit 10
match ip address prefix-list PL-BLACKHOLE
set community no-export additive
set ip next-hop 192.0.2.1
Caso de Uso 2: Policy-Based Routing com BGP e IPTables
Em ambientes com múltiplos uplinks (multi-homing), é comum precisar rotear determinados tipos de tráfego por caminhos específicos. O Linux suporta roteamento baseado em política (PBR — Policy-Based Routing) utilizando múltiplas tabelas de roteamento e regras ip rule.
# Criar tabelas de roteamento adicionais
echo "200 UPLINK1" >> /etc/iproute2/rt_tables
echo "201 UPLINK2" >> /etc/iproute2/rt_tables
# Adicionar rotas específicas em cada tabela
ip route add default via 203.0.113.2 table UPLINK1
ip route add default via 198.51.100.1 table UPLINK2
# Criar regras de roteamento com base em marcação do IPTables
ip rule add fwmark 100 table UPLINK1
ip rule add fwmark 200 table UPLINK2
Com o IPTables, marque o tráfego que deve seguir por cada uplink:
# Tráfego HTTP/HTTPS vai pelo UPLINK1
sudo iptables -t mangle -A PREROUTING -p tcp --dport 80 -j MARK --set-mark 100
sudo iptables -t mangle -A PREROUTING -p tcp --dport 443 -j MARK --set-mark 100
# Tráfego de vídeo (UDP alto) vai pelo UPLINK2
sudo iptables -t mangle -A PREROUTING -p udp --dport 5004:5010 -j MARK --set-mark 200
Caso de Uso 3: Proteção de Sessões BGP com IPTables
As sessões BGP são altamente sensíveis e devem ser protegidas contra ataques externos. Utilize o IPTables para restringir o acesso à porta 179 somente aos peers autorizados:
# Permitir sessões BGP apenas com peers conhecidos
sudo iptables -A INPUT -p tcp --dport 179 -s 203.0.113.2 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 179 -s 198.51.100.1 -j ACCEPT
# Bloquear todas as demais tentativas de conexão BGP
sudo iptables -A INPUT -p tcp --dport 179 -j LOG --log-prefix "BGP-UNAUTHORIZED: "
sudo iptables -A INPUT -p tcp --dport 179 -j DROP
# Limitar taxa de conexões TCP para proteção adicional
sudo iptables -A INPUT -p tcp --dport 179 -m state --state NEW -m limit --limit 10/minute -j ACCEPT
# Salvar as regras
sudo iptables-save > /etc/iptables/rules.v4
Caso de Uso 4: BGP FlowSpec e Integração com Firewall Linux
O BGP FlowSpec (RFC 5575) é uma extensão do BGP que permite distribuir regras de filtragem de tráfego diretamente via protocolo de roteamento, eliminando a necessidade de configurar manualmente cada dispositivo. Em servidores Linux com FRR, é possível receber regras FlowSpec e convertê-las automaticamente em regras de firewall.
# Habilitar FlowSpec no FRR
sudo vtysh -c "configure terminal" \
-c "router bgp 65001" \
-c "address-family ipv4 flowspec" \
-c "neighbor 203.0.113.2 activate" \
-c "exit-address-family"
Monitoramento e Troubleshooting de BGP no Linux
Nenhuma implementação de BGP está completa sem ferramentas adequadas de monitoramento. Veja os comandos essenciais:
# Verificar status das sessões BGP no FRR
sudo vtysh -c "show bgp summary"
# Ver tabela de roteamento BGP
sudo vtysh -c "show bgp ipv4 unicast"
# Verificar prefixos recebidos de um peer específico
sudo vtysh -c "show bgp neighbors 203.0.113.2 received-routes"
# Verificar prefixos anunciados para um peer
sudo vtysh -c "show bgp neighbors 203.0.113.2 advertised-routes"
# Monitorar sessões em tempo real
sudo vtysh -c "show bgp neighbors 203.0.113.2"
# Verificar a tabela de roteamento do kernel
ip route show table main
ip route show table all | grep bgp
Para monitorar o tráfego nas interfaces com contexto BGP, o tcpdump é indispensável:
# Capturar tráfego BGP (TCP 179)
sudo tcpdump -i eth0 -n "tcp port 179" -v
# Salvar captura para análise posterior no Wireshark
sudo tcpdump -i eth0 -n "tcp port 179" -w /tmp/bgp_capture.pcap
Boas Práticas de Segurança para Ambientes BGP em Linux
A segurança em ambientes BGP vai além do IPTables. Algumas práticas fundamentais que todo administrador deve implementar:
MD5 Authentication: Autentique todas as sessões BGP para prevenir ataques de session hijacking:
router bgp 65001
neighbor 203.0.113.2 password S3nh@S3cur4BGP2026
RPKI (Resource Public Key Infrastructure): Valide a origem dos prefixos BGP utilizando RPKI para prevenir sequestros de rotas (BGP hijacking). O FRR suporta validação RPKI nativamente via integração com validators como o Routinator:
# Instalar Routinator (RPKI validator)
sudo apt-get install routinator -y
sudo routinator init --accept-arin-rpa
sudo routinator server --routers 127.0.0.1:3323
# Configurar RPKI no FRR
rpki
rpki cache 127.0.0.1 3323 preference 1
exit
!
router bgp 65001
bgp bestpath prefix-validate allow-invalid
Limitação de prefixos: Configure o número máximo de prefixos que um peer pode anunciar para evitar ataques de exaustão de memória:
router bgp 65001
neighbor 203.0.113.2 maximum-prefix 100000 warning-only
Automatizando a Gestão de BGP e IPTables com Scripts Bash
A automação é essencial em ambientes de produção. Veja um script que combina anúncio BGP de blackhole com regras IPTables:
#!/bin/bash
# Script de mitigação DDoS via RTBH + IPTables
# Portal do Linux - portaldolinux.com.br
IP_ALVO=$1
AS_LOCAL="65001"
PEER_IP="203.0.113.2"
LOG_FILE="/var/log/rtbh_mitigation.log"
if [ -z "$IP_ALVO" ]; then
echo "Uso: $0 <IP_ALVO>"
exit 1
fi
echo "$(date) - Iniciando mitigação para $IP_ALVO" >> $LOG_FILE
# Adicionar regra IPTables de blackhole local
iptables -A INPUT -d $IP_ALVO -j DROP
iptables -A FORWARD -d $IP_ALVO -j DROP
# Anunciar rota de blackhole via BGP
vtysh -c "configure terminal" \
-c "ip route ${IP_ALVO}/32 blackhole" \
-c "router bgp ${AS_LOCAL}" \
-c "address-family ipv4 unicast" \
-c "network ${IP_ALVO}/32" \
-c "exit-address-family" \
-c "end" \
-c "write memory"
echo "$(date) - Mitigação ativada para $IP_ALVO" >> $LOG_FILE
echo "Mitigação RTBH ativada para $IP_ALVO. Verifique $LOG_FILE para detalhes."
Torne o script executável e teste em ambiente controlado:
chmod +x /usr/local/bin/rtbh_mitigate.sh
sudo /usr/local/bin/rtbh_mitigate.sh 200.10.0.50
O BGP é um protocolo fundamental para qualquer profissional que trabalha com infraestrutura de redes em escala. Compreender seu funcionamento, a importância dos PTTs no ecossistema brasileiro de internet e como integrá-lo com ferramentas nativas do Linux como IPTables e FRRouting coloca o administrador de sistemas em um nível técnico diferenciado. As possibilidades de automação, mitigação de ataques e otimização de tráfego que essa combinação oferece são vastas e diretamente aplicáveis em ambientes de produção reais. O PortalDoLinux.com.br continuará trazendo conteúdos aprofundados sobre esses temas para que você, profissional de TI, esteja sempre à frente das melhores práticas do mercado.
Sou um profissional na área de Tecnologia da informação, especializado em monitoramento de ambientes, Sysadmin e na cultura DevOps. Possuo certificações de Segurança, AWS e Zabbix.


