Em ambientes de infraestrutura crítica, a disponibilidade da conexão com a internet e a estabilidade do tráfego de rede são fundamentais. O VyOS, uma distribuição Linux baseada em Debian que implementa o projeto OpenBSD VYatta, tornou-se uma referência robusta para roteamento, firewall e gerenciamento de redes. Uma das capacidades mais poderosas dessa plataforma é o load balancing (balanceamento de carga) combinado com alta disponibilidade.
Muitas empresas utilizam múltiplos links de internet (ISP A, ISP B ou até mesmo links 4G/5G como backup) para garantir redundância. No entanto, apenas ter dois cabos conectados não garante desempenho otimizado. O objetivo deste tutorial é demonstrar como configurar o VyOS para distribuir o tráfego ativo entre esses links, maximizando a largura de banda total e garantindo que, em caso de falha de um dos provedores, as sessões ativas sejam mantidas ou redirecionadas com mínima interrupção.
Vamos abordar duas camadas principais: o link bonding (agregação de links) para aumentar a largura de banda agregada e fornecer redundância em nível de camada 2, e o load balancing de roteamento (ECMP ou políticas de roteamento) para distribuir fluxos de saída entre diferentes gateways. Esta configuração é essencial para profissionais de TI que buscam otimizar recursos de rede sem depender exclusivamente de equipamentos de hardware proprietário caro.
1. Topologia Lógica e Pré-requisitos
Antes de aplicar qualquer comando, é crucial entender a topologia lógica da sua rede. Para este tutorial, assumiremos o seguinte cenário:
- WAN 1 (eth0): Link primário do ISP A, IP público
203.0.113.10/30, Gateway203.0.113.9. - WAN 2 (eth1): Link secundário ou de backup do ISP B, IP público
198.51.100.10/30, Gateway198.51.100.9. - LAN (eth2): Interface interna, sub-rede
192.168.1.0/24, IP do VyOS192.168.1.1/24.
O VyOS utiliza uma configuração baseada em texto, similar ao Cisco IOS ou Juniper Junos, mas com a flexibilidade de scripts Python por trás dos panos. A interface de linha de comando (CLI) do VyOS opera em modos hierárquicos: configure para modificar, commit para aplicar e save para persistir no disco.
Atenção: Certifique-se de que as interfaces físicas estão fisicamente conectadas e com link UP antes de prosseguir. Verifique com o comando show interfaces.
2. Configurando as Interfaces WAN
O primeiro passo é definir os endereços IP estáticos nas interfaces de uplink. No VyOS, isso é feito dentro do contexto interfaces ethernet.
configure
set interfaces ethernet eth0 address '203.0.113.10/30'
set interfaces ethernet eth0 description 'WAN-ISP-A'
set interfaces ethernet eth1 address '198.51.100.10/30'
set interfaces ethernet eth1 description 'WAN-ISP-B'
commit
save
Ao executar o commit, o VyOS valida a configuração e aplica as mudanças em tempo real. O save garante que, se o servidor reiniciar, essas configurações não serão perdidas.
3. Criando um Link Bonding (Agregação de Links)
Para uma verdadeira alta disponibilidade e distribuição de carga eficiente entre os links físicos, a melhor prática é criar uma interface lógica bond0. Isso agrupa eth0 e eth1 em uma única entidade lógica. O VyOS suporta diversos modos de bonding; o modo active-backup (modo 1) é o mais comum para WAN, onde um link é ativo e o outro fica em standby, mas pode ser configurado para balanceamento baseado em hashes se os switches de borda suportarem LACP.
No entanto, para fins de load balancing de roteamento (distribuir fluxos diferentes por links diferentes), muitas vezes é mais simples e eficaz tratar os links como gateways independentes e usar políticas de roteamento. Se o seu objetivo é apenas redundância pura (um cai, o outro sobe), use bonding. Se o objetivo é usar a largura de banda dos dois simultaneamente para saída, vamos pular diretamente para a configuração de roteamento dinâmico ou estático com múltiplos caminhos.
Vamos focar na abordagem mais flexível para provedores residenciais/empresariais não agregados: Múltiplos Gateways e Roteamento por Fonte.
4. Configurando a Rotas Estáticas e Monitoramento de Saúde
O VyOS precisa saber para onde enviar o tráfego. Vamos adicionar rotas estáticas para ambas as gateways, mas com métricas diferentes ou condições de monitoramento.
set protocols static route 0.0.0.0/0 next-hop '203.0.113.9' table '100'
set protocols static route default next-hop '203.0.113.9'
set protocols static route default next-hop '198.51.100.9' table '200'
Aqui, criamos uma rota padrão principal (tabela 200 ou default) e uma secundária. Mas a mágica do load balancing no VyOS não está apenas nas rotas, mas no monitoramento de conexão. O VyOS possui um módulo poderoso chamado health-check que permite monitorar a disponibilidade dos gateways através de ping.
set system health-check gateway '203.0.113.9'
set system health-check gateway '203.0.113.9' interval '5s'
set system health-check gateway '203.0.113.9' timeout '3s'
set system health-check gateway '203.0.113.9' threshold '3'
set system health-check gateway '203.0.113.9' source-address '203.0.113.10'
Repita o processo para o segundo gateway 198.51.100.9, alterando os IPs de origem e destino. O threshold '3' significa que se 3 pings consecutivos falharem, o link é considerado down. Isso evita flapping (oscilação) desnecessária.
5. Implementando Load Balancing com FRRouting (BGP/OSPF)
Para distribuir o tráfego ativamente entre os dois links (não apenas standby), a abordagem profissional é usar um protocolo de roteamento dinâmico. O VyOS integra-se nativamente ao FRRouting (fork do Quagga/Zebra). Vamos configurar o OSPF para anunciar as rotas e permitir que o balanceamento ocorra naturalmente baseado no custo ou na equalização de caminho (ECMP).
Primeiro, habilite o FRR:
set service frr ospf
Agora, configure a área OSPF e as interfaces. Assumindo que você tenha redes internas ou roteamento com outros equipamentos de borda, mas para balanceamento de saída pura, muitas vezes usamos MARTIAL ROUTING (Roteamento Marcado) ou políticas de origem.
No entanto, a forma mais didática e eficaz para usuários finais configurar load balancing simples sem BGP complexo é usar Source-Based Routing (Roteamento Baseado em Fonte). Isso permite que você diga: "O tráfego vindo da VLAN A vai pelo Link 1, o tráfego da VLAN B vai pelo Link 2".
6. Configurando Roteamento Baseado em Fonte (Source-Based Routing)
Esta técnica utiliza tabelas de roteamento adicionais no Linux. Vamos criar uma tabela 100 para o Link 1 e 200 para o Link 2.
Passo 6.1: Definir as rotas nas tabelas customizadas
set protocols static route 0.0.0.0/0 next-hop '203.0.113.9' table '100'
set protocols static route 0.0.0.0/0 next-hop '198.51.100.9' table '200'
Passo 6.2: Criar regras de policy routing
Agora, dizemos ao VyOS: "Qualquer pacote que venha da interface eth2 (LAN) e tenha o IP de origem específico, use a tabela X". Para simplificar, vamos dividir os clientes.
set policy route LB rule 10 source address '192.168.1.10/32'
set policy route LB rule 10 outbound-interface 'eth0'
# Ou melhor, usar a tabela de roteamento:
set policy route LB rule 10 lookup-table '100'
E para o segundo grupo:
set policy route LB rule 20 source address '192.168.1.20/32'
set policy route LB rule 20 lookup-table '200'
Com isso, o cliente .10 sempre sairá pelo ISP A e o .20 pelo ISP B. Para um balanceamento mais granular (por exemplo, por sub-rede ou aleatoriedade), você pode usar scripts personalizados ou ferramentas como mwan3 (se disponível via pacotes extras), mas a configuração nativa de Policy Routing é extremamente robusta.
7. Configuração de NAT e Masquerading
Não esqueça que, para que os clientes da LAN tenham acesso à internet, é necessário configurar o NAT (Network Address Translation) ou Masquerade nas interfaces WAN. Como temos duas saídas, precisamos garantir que o NAT ocorra corretamente.
set nat source rule 10 outbound-interface 'eth0'
set nat source rule 10 source address '192.168.1.0/24'
set nat source rule 10 type 'masquerade'
set nat source rule 20 outbound-interface 'eth1'
set nat source rule 20 source address '192.168.1.0/24'
set nat source rule 20 type 'masquerade'
Esta configuração garante que, independentemente de qual rota seja escolhida (via Policy Routing ou Load Balancing dinâmico), o pacote será traduzido para o IP público correto da interface de saída.
8. Validação e Troubleshooting
Após aplicar todas as configurações, é hora de validar. Use os seguintes comandos para verificar o estado do sistema:
show interfaces: Verifique se as interfaces estão UP e recebendo pacotes.show ip route: Visualize a tabela de roteamento principal e as tabelas customizadas (table 100,table 200). Você deve ver duas rotas padrão se estiver usando ECMP, ou rotas separadas nas tabelas.show system health-check: Confirme que os gateways estão respondendo aos pings e marcados como "healthy".ping 8.8.8.8 source-address 203.0.113.10: Teste a conectividade saindo pelo primeiro link.traceroute 8.8.8.8: Observe o caminho que os pacotes estão tomando.
Se você desconectar fisicamente o cabo do eth0, o VyOS deve detectar a falha via health-check em poucos segundos e redirecionar todo o tráfego para o eth1. Se estiver usando Policy Routing, os clientes atribuídos à tabela 100 podem perder conexão até que uma regra de fallback seja estabelecida (o que requer configuração avançada de scripts). Para evitar isso, muitos administradores preferem usar MWA (Multi-WAN) com failover onde o link secundário assume todas as cargas se o primário cair, mantendo a simplicidade.
9. Boas Práticas e Considerações Finais
Ao implementar load balancing em VyOS, considere os seguintes pontos:
- Consistência de Sessão (Sticky Sessions): O balanceamento baseado em hash pode causar problemas se um pacote de resposta vier por uma interface diferente da que o pedido foi enviado. Por isso, o NAT é crucial e o monitoramento de saúde deve ser preciso.
- DNS: Certifique-se de que os servidores DNS configurados nos clientes sejam acessíveis via ambas as interfaces ou use DNS recursivo no próprio VyOS para evitar vazamentos de DNS que possam quebrar a resolução de nomes se um link falhar.
- Backup da Configuração: Sempre salve a configuração com
saveapós cada etapa significativa. O VyOS permite rollback, mas prevenir é melhor que remediar. - Monitoramento Contínuo: Integre o VyOS ao seu sistema de monitoramento (Zabbix, Prometheus, PRTG) para alertar sobre queda de link e aumento de latência em um dos ISPs.
A configuração de load balancing no VyOS oferece um nível de controle granular que equipamentos consumer não conseguem igual. Ao combinar roteamento dinâmico, monitoramento de saúde e políticas de fonte, você cria uma infraestrutura resiliente capaz de suportar falhas e maximizar o throughput da sua empresa.
Lembre-se: cada ambiente de rede é único. Ajuste os tempos de heartbeat, thresholds e métricas de rota conforme a latência e estabilidade dos seus provedores locais. Teste exaustivamente antes de colocar em produção crítica.