Untitled-1

Balanceamento de Carga e Per Connection Classifier: Como Resolver o Bloqueio de IP com Mikrotik

Recentemente um cliente nos procurou com o seguinte problema: seu servidor, ao realizar requisições para um servidor externo, estava sendo bloqueado devido ao número excessivo de requisições. O servidor de destino possuía uma regra que bloqueava o IP de origem após mais de 500 requisições em 5 minutos. O cliente tentou resolver diretamente com o suporte do servidor de destino, mas as soluções oferecidas envolviam alterações demoradas. Então, ele entrou em contato para buscar uma solução alternativa utilizando seu próprio ambiente de rede.

O servidor do cliente estava configurado com IP privado atrás de NAT, e o objetivo era permitir que ele se conectasse ao servidor de destino através de 3 IPs públicos diferentes, usando um roteador Mikrotik.

Como nosso foco é sempre resolver o problema do cliente, aqui está o processo técnico de como resolvemos esse desafio.

O Problema: Bloqueio de IP no Servidor de Destino

O servidor de destino possui uma regra que limita o número de requisições provenientes de um mesmo IP. Caso o servidor detecte mais de 500 requisições em 5 minutos, ele bloqueia o IP de origem. Isso gerava uma falha no processo de comunicação e impactava diretamente a operação do cliente.

A Solução: Balanceamento de Carga com Mikrotik usando Per Connection Classifier

A solução que propusemos envolveu o uso do Mikrotik RouterOS para balancear a carga entre os 3 IPs públicos disponíveis, de forma que as requisições do servidor privado do cliente fossem distribuídas de forma balanceada. Dessa forma, o servidor de destino passaria a receber as requisições de diferentes IPs públicos, evitando o bloqueio.

Configuração no Mikrotik

1 – Identificação dos IPs do cliente

Começamos identificando os 3 IPs públicos do cliente bem como sua rede LAN.

2 – Address list com o IP privado

Criamos uma Addres List com o IP privado do servidor do cliente, poderíamos ter colocado esse IP diretamente nas regras, mas caso o cliente queira que outros IPs funcionem nas mesmas regras é só adicionar na lista.

3 – Regras de Mangle

Utilizamos regras de Mangle para marcar as conexões de saída com base no IP e porta de origem. Isso é necessário para garantir que as conexões sejam identificadas e roteadas corretamente. Criamos as seguintes regras de Mangle:

General: o Chain ficou prerouting com a Address List dos IPs privados.

Advanced: no Per Connection Classifier colocamos para utilizar both addresses and ports, como o cliente possui 3 IPs públicos a configuração ficou :3/0, isso referência que será utilizado o primeiro IP público (as outras duas regras utilizaram o :3/1 e :3/2).

Extra: no Dst Address Type marcamos o !(exceto) local, para que as comunicações locais não sejam processadas nas regras.

Action: em Action utilizamos mark connection e no New Connection Mark colocamos o nome “navega-ip-45-163-13-247” (as outras duas regras utilizaram os nomes “navega-ip-45-163-13-248” e “navega-ip-45-163-13-249”) e deixamos o Passthrough marcado para que o pacote marcado passe para outras regras de processamento sem ser alterado ou interrompido.

Criamos as outras duas regras para a utilização dos 3 IPs públicos e no fim ficou dessa forma:

Como Funciona o Per Connection Classifier?

O Per Connection Classifier (PCC) é uma ferramenta do Mikrotik para balanceamento de carga. Ele distribui conexões de forma dinâmica e equilibrada entre diferentes IPs públicos, de acordo com certos critérios, como endereços IP de origem e destino e números de porta. O PCC no Mikrotik pode ser configurado para agir de forma inteligente e distribuir as conexões, garantindo uma utilização eficiente de múltiplos IPs.

A principal vantagem do PCC é a sua capacidade de “classificar” as conexões com base em uma combinação dos endereços IP e portas, de forma que todas as conexões de uma mesma origem sejam roteadas pelo mesmo IP público. Isso resolve problemas de sessões de comunicação que poderiam ser interrompidas caso as conexões fizessem uso de IPs diferentes a cada nova requisição.

No caso do cliente, configuramos o PCC para usar endereço de origem e porta de origem como critérios de balanceamento. Isso significa que todas as requisições feitas pelo servidor seriam identificadas e mapeadas para um dos 3 IPs públicos, com base nesses parâmetros.

4 – NAT

Utilizamos SRC-NAT para realizar a tradução de endereço de origem, de forma que o tráfego de saída fosse roteado através de um dos 3 IPs públicos disponíveis. Com isso, cada requisição de saída do servidor privado seria mascarada por um IP público diferente. Criamos as seguintes regras no NAT:

General: o Chain ficou como src-nat, especificamos a Src Address List com a lista de IPs de origem, ajustamos o Out Interface para apenas aplicar quando o destino fosse a interface WAN e pegamos as conexões marcadas em Connection Mark com o nome “navega-ip-45-163-13-247” (as outras duas regras pegam os nomes “navega-ip-45-163-13-248” e “navega-ip-45-163-13-249”).

Action: o Action foi src-nat com To Address com o IP 45.163.13.247 (as outras duras regras com o IP 45.163.13.248 e 45.163.13.249).

Criamos as outras duas regras para a utilização dos 3 IPs públicos e no fim ficou dessa forma:

5 – Testes e validações

Após configurar as regras no Mikrotik, realizamos o teste de conexão utilizando o site meuip.com.br. Como esperado, frequentemente o IP de origem era alterado, confirmando que o balanceamento de carga estava funcionando corretamente, após isso o servidor de destino não bloqueou mais o IP do cliente.

Conclusão

Utilizando as regras de Mangle com Per Connection Classifier (PCC) e SRC-NAT no Mikrotik, conseguimos distribuir as requisições de saída entre os três IPs públicos disponíveis, evitando o bloqueio do IP pelo servidor de destino. O Per Connection Classifier foi fundamental para garantir que cada nova conexão fosse atribuída de forma inteligente a um IP público diferente, o que resultou em um balanceamento de carga eficaz e na resolução do problema.

Se você também enfrenta desafios relacionados a balanceamento de carga e bloqueios de IP em sua rede, o Mikrotik oferece uma solução eficiente e fácil de configurar, com a flexibilidade de usar múltiplos IPs públicos.

Ti na Prática surgiu como uma forma de ajuda para o pessoal da TI, contamos com wikis práticas e diretas, vídeos com passo a passo no YouTube. 

contato@tinapratica.com.br