Configurar Load Balance com PfSense 

Você já imaginou poder utilizar dois ou mais links com a Internet ao mesmo tempo? Sim, é possível fazer isso com o Load Balance e o PfSense. Além disso, configurar um load balance com PfSense permite que você otimize a utilização de cada link em diferentes velocidades. 

English version: click HERE

Esse tutorial ensina a configurar o load Balance em um PfSense. Além da configuração padrão de load balance, vamos abordar configurações adicionais que podem ser interessantes para seu cenário. 

Tutorial Failover + Load Balance PfSense

Parte 01: Configurar Failover em PfSense

Parte 02: Configurar Load Balance com PfSense

Dentre as configurações adicionais que vamos apresentar temos: Flush all states when a gateway goes down, Skip rules when gateway is down, diferentes pesos para cada gateway. 

A figura abaixo demonstra um cenário onde temos dois links de saída para a Internet e cada link tem sua própria conexão com a Internet. Dessa forma, o pfsense permite que as máquinas da LAN possam acessar a internet utilizando os dois links de saída usando load Balance.  

Load balance scenario
Load balance scenario

Criando o grupo de Load Balance no PfSense

Vamos clicar em (System/Routing/Gateway/Groups/Edit) e em seguida vamos criar um grupo para nosso loadbalance. Nesse caso, usaremos um nome para o grupo “our_loadbalance”.

Observe que estamos usando Tier 1 para as duas WANs. Isso porque, diferentemente do failover, agora estamos querendo fazer um balanceamento de carga. Ou seja, os dois links vão operar normalmente e conduzindo tráfego.

Para o (Trigger Level) vamos deixar a opção de ativar como (Member Down).

Gateway group
Gateway group

Configurando a regra para o Load Balance

Vamos configurar as regras de permissão de tráfego da LAN para passar pelo nosso Loadbalance. Para isso, vamos acessar o “Firewall/Rules/LAN” em seguida vamos editar a regra que permite a passagem do tráfego padrão (Default allow LAN to any rule).

Creating loadbalance rule
Creating loadbalance rule

Agora, vamos selecionar a opção (Display Advanced).

Advanced menu
Advanced menu

Agora vamos procurar a opção “Gateway” e em seguida vamos selecionar nosso grupo de gateways para o Load Balance. Em nosso caso, o grupo usado foi o “our_loadbalance”.

Set LAN gateway
Set LAN gateway

Depois disso, vamos salvar. E aplicar as mudanças.

Aplly
Aplly

Testando o Load Balance do PfSense

Agora podemos acessar uma máquina de nossa LAN e utilizar o comando traceroute para verificar por onde está saindo nosso tráfego.

(Nota) Se não deseja usar o comando traceroute, você pode verificar isso de várias formas como por exemplo realizar conexões com páginas da Internet e verificar nos logs do pfsense ou usar a ferramenta de diagnóstico (Packet Capture).

Na figura abaixo, fizemos um traceroute para o DNS do google (8.8.8.8). Podemos verificar que parte das respostas do traceroute no primeiro salto estão vindo do 10.0.2.2 (Gateway da WAN 1) e pelo 172.16.16.1 (Gateway da WAN2).

Testing loadbalance with traceroute command
Testing loadbalance with traceroute command

Configurações adicionais para o Load Balance no Pfsense

Apresentaremos, a seguir, algumas configurações adicionais que podem ser interessantes para diferentes cenários. Dessa forma, devemos verificar qual serão os requerimentos básicos de nossa rede antes de decidir sobre quais configurações adicionais vamos usar no load balance do pfsnese.

Configurações para manter conexão

Podemos usar uma configuração para manter conexões por um dos gateways escolhidos. Dessa forma, as conexões de um mesmo host de origem vão seguir o mesmo gateway até que não existam mais estados de conexão ou que tenha o tempo expirado por uma configuração manual.

Para isso, vamos acessar (System/Advanced/Miscellaneous) e em seguida vamos procurar o campo “Load Balancing”

Miscellaneous configuration
Miscellaneous configuration
Use sticky connections
Use sticky connections

Configuração para monitoramento dos Gateways

Em seguida, vamos procurar por “gateway Monitoring” e vamos selecionar a opção “Flush all states when a gateway goes down” dentro de “State Killing on Gateway Failure”. Depois vamos para o final da página e vamos clicar em “Save”.

A opção “Flush all states when a gateway goes down” permite que sejam resetados os estados das conexões que estavam usando o gateway que falhou. Dessa forma, isso permite que sejam feitas novas conexões usando o novo gateway que assumiu.

Existe outra opção dentro de Skip rules when gateway is down é a “Do not create rules when gateway is down”. Ao habilitar essa opção, as regras específicas de um gateways serão desconsideradas quando o gateway estiver desabilitado. Isso pode fazer sentido em alguns casos e vai depender do cenário da sua empresa. Nesse tutorial não vamos habilitar essa opção.

Flush all states
Flush all states

Configurando pesos diferentes para cada Gateway

Na maioria dos casos os diferentes links de provedores que temos possuem diferenças. Dessa forma, podemos ter links mais lentos ou com restrições na qualidade de serviço. Entretanto, podemos usar pesos para cada gateway de forma a otimizar o uso de cada gateway.

Vamos ver agora, como configurar pesos para cada gateway. Para isso, vamos para (System/Routing/Gateways).

Em seguida, vamos editar um dos gateways. Nesse caso vamos editar o primeiro gateway.

Edit gateway
Edit gateway

Depois vamos até o final da página e vamos clicar em “Display Advanced”.

Display Advanced
Display Advanced

Então, teremos mais opções disponíveis. No entanto, vamos usar a opção “Weight” que será o peso de prioridade de utilização de gateway. Dessa forma, se desejamos que um gateway tenha mais prioridade de uso em detrimento de outro gateway, devemos aumentar o seu peso.

Aqui no exemplo vamos aumentar o peso para 5. Dessa forma, usaremos a WAN 1 5 vezes mais do que a WAN 2.

Configure Weight
Configure Weight

Depois disso salve e aplique as alterações.

Testando o Load Balance com pesos diferentes

Agora, se desejarmos fazer um teste com o comando traceroute na máquina cliente, vamos verificar que majoritariamente a rota escolhida é usando a WAN 1. Isso porque atribuímos um peso maior para o gateway da WAN 1.

Testing Weight in loadbalance with traceroute
Testing Weight in loadbalance with traceroute

Criando o Cenário de testes

Estamos assumindo que já temos uma instalação de pfsense no virtualbox. Caso ainda não tenha, sugiro que faça as etapas descritas no vídeo abaixo:

https://youtu.be/qIciWxmu540

Depois disso, vamos adicionar uma interface NAT Network no virtualbox. Dessa forma, em nosso cenário de testes teremos duas saídas para a internet, uma pela rede NAT padrão do virtualbox e outra por uma rede NAT network que vamos criar.

(Nota) – Temos um vídeo apresentando toda a configuração no final dessa página.

Criando a segunda WAN

Inicialmente vamos selecionar o menu File do virtualbox e depois Preferences.

Virtualbox Preferences
Virtualbox Preferences

Depois disso, vamos selecionar Network e vamos clicar no ícone de adicionar.

VirtualBox create NAT network
VirtualBox create NAT network

Caso não tenha adicionado uma rede NATNetwork antes, será criada sua primeira rede desse tipo.

Agora vamos clicar no ícone de adicionar nova rede NATNetwork novamente. Isso porque, queremos criar uma segunda rede NATNetwork.

First natnetwork
First natnetwork

Para a segunda rede NATNetwork, daremos o nome de “nat2”. Além disso, vamos usar a subrede 172.16.16.0/24. Poderia ser outro range de rede de sua preferência.

(Nota) É importante deixar o suporte DHCP habilitado. Dessa forma, não precisaremos inserir IPs manualmente nas máquinas que usarem essa NATNetwork.

Second nat network
Second nat network

Podemos observar na figura abaixo que temo duas NATNetworks.

Two Nat Networks
Two Nat Networks

Configurando a máquina do Pfsense

Agora vamos selecionar a máquina virtual que vamos usar para o pfsense e vamos clicar em Settings.

Virtual Machine Settings
Virtual Machine Settings

Depois disso vamos para Network e vamos escolher os tipos de redes que vamos usar nos adaptadores de rede.

No primeiro adaptador de rede (Adapter1) vamos usar a rede NAT padrão do VirtualBox.

Adapter1
Adapter 1

O segundo adaptador de rede (Adpter2) vamos usar a interface em modo “Internal Network” e com o nome “intnet”. Dessa forma, poderemos fazer acesso na interface de configuração WEB do Pfsense usando uma outra máquina virtual.

(Nota) – Devemos lembrar que a máquina virtual que vai acessar o pfsense deve estar com uma interface “Internal Network” e com o mesmo nome “intnet” de interface que usamos para a LAN do PfSense.

Adapter 2
Adapter 2

Em seguida vamos habilitar o terceiro adaptador (Adpter3) de rede e vamos adicioná-lo à Nat Network que criamos recentemente “nat2”.

Adapter 3
Adapter 3

Configurando a interface LAN do PfSense

Para configurar a interface LAN da máquina virtual onde está instalando o pfsense, vamos usar a interface de configuração do terminal do Pfsense. Isso porque, neste caso ainda não temos como acessar a interface WEB do pfsense. Portanto, não podemos realizar a configuração usando um navegador de uma outra máquina conectada a LAN do Pfsense.

Agora vamos inicializar a máquina virtual e abrir o console de configuração. Em seguida, vamos digitar “2” para permitir (Set Interfaces(s) IP address). Estamos querendo inserir um IP para nossa LAN. Portanto vamos escolher a opção “2 LAN”.

Nota- Em seu cenário a LAN pode estar em outra ordem. Portanto, esteja atento a qualquer mudança nessa ordem de interfaces.

Configuring LAN
Configuring LAN

Agora, vamos inserir a máscara de rede. Nesse caso, vamos usar uma máscara 24. Em seguida vem a pergunta se estamos configurando uma WAN ou uma LAN. Em nosso caso é uma LAN , portanto vamos clicar ENTER.

Posterirormente, vem a pergunta se vamos usar IPv6. Nesse caso, não vamos usar IPv6. No entanto, se você desejar usar, esse seria o momento de configurar.

Configuring LAN part 2
Configuring LAN part 2

Agora, vamos habilitar o DHCP. Dessa forma, poderemos doar IPs para as máquinas que forem conectadas a nossa LAN. Para habilitar o DHCP, vamos responder “y”. Em seguida vamos inserir o range de IPs que serão doados via DHCP. Nesse caso, vamos usar 192.168.11.100 como o primeiro IP a ser doado e 192.168.11.200 como o maior IP a ser doado via DHCP.

Por último, teremos uma pergunta relacionada a reverter para HTTP o webconfigurator protocol. Nesse caso, vamos responder com “n” pois não temos interesse.

Configuring LAN part 3
Configuring LAN part 3

Agora, vamos usar uma outra máquina virtual para ser usada como cliente da LAN do pfsense. Para isso, é importante que a interface de rede da máquina cliente esteja na mesma configuração do PfSense. Ou seja, em nosso caso a interface deve estar configurada como “Internal Network” e com o nome “intnet”.

Client network
Client network

Depois disso vamos inicializar a máquina cliente.

Iniciando a configuração da segunda WAN

Agora vamos inicializar nossa máquina virtual cliente e vamos acessar a interface WEB do pfsense. Para isso, vamos usar iniciar o navegador e inserir o IP que configuramos para a LAN do pfsense. Nesse caso o IP foi o 192.168.11.1.

Pfsense WEB access
Pfsense WEB access

Em seguida, no menu principal vamos clicar em Interfaces e depois em Assignments

Interfaces / Assignments
Interfaces / Assignments

Observe que agora temos uma nova possibilidade de interface. Dessa forma, vamos clicar em “+Add”

Add new interface
Add new interface

Após clicar em “+Add” vamos ver uma nova interface com o nome “OPT1”. Então vamos clicar em “OPT1” e vamos editar.

Edit new interface
Edit new interface

Agora, vamos alterar o nome da interface para “WAN 2” e vamos usar a opção de receber IP por DHCP.

Edit new interface part 2
Edit new interface part 2

Agora vamos para o final da página e vamos clicar em “Save”.

Save
Save

Muito bem, agora vamos clicar em “Aplly Changes”. Dessa forma, vamos garantir que as alterações que fizemos sejam aplicadas.

Aplly
Aplly

Agora podemos ver que temos um total de 3 interfaces.

1 LAN and 2 WANs
1 LAN and 2 WANs

Além disso, se formos para a tela inicial do pfsense, vamos ver os IPs de cada interface. Dessa forma, podemos ver na figura abaixo que temos a LAN usando um IP 192.168.11.1 que está sendo usado com a interface em modo “Internal Network” no VirtualBox. Depois, temos o IP 10.0.2.15 para a interface que está em NAT. E depois temos o IP 172.16.16.4 para a interface que está em network NAT nat2.

Como resultado, temos agora duas interfaces WAN uma para o 10.0.2.15 e outra para o 172.16.16.4. Dessa forma, estamos emulando nosso cenário para ter dois ISPs diferentes .

Interfaces IPs
Interfaces IPs

Agora vamos clicar em System/ Routing/Gateways. Podemos observar que agora temos 2 gateways, como na figura abaixo.

Two Gateways
Two Gateways

Muito bem, terminamos aqui a configuração do cenário de testes para a configuração do Load Balance usando PfSense.

Veja também:

Configurar Failover em PfSense

Instalar Open VPN em Linux

Snort PfSense : Detectar ataque DoS

FreeRadius: Instalação e configuração 

Arpwatch: Instalação e Configuração

Links adicionais:

https://docs.netgate.com/pfsense/en/latest/multiwan/policy-route.html

https://docs.netgate.com/pfsense/en/latest/routing/gateways.html#routing-gateways-manage-default

Juliana Mascarenhas

Data Scientist and Master in Computer Modeling by LNCC.
Computer Engineer