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.
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.
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).
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).
Agora, vamos selecionar a opção (Display Advanced).
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”.
Depois disso, vamos salvar. E aplicar as mudanças.
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).
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”
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.
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.
Depois vamos até o final da página e vamos clicar em “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.
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.
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:
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.
Depois disso, vamos selecionar Network e vamos clicar no ícone de adicionar.
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.
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.
Podemos observar na figura abaixo que temo duas NATNetworks.
Configurando a máquina do Pfsense
Agora vamos selecionar a máquina virtual que vamos usar para o pfsense e vamos clicar em 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.
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.
Em seguida vamos habilitar o terceiro adaptador (Adpter3) de rede e vamos adicioná-lo à Nat Network que criamos recentemente “nat2”.
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.
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.
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.
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”.
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.
Em seguida, no menu principal vamos clicar em Interfaces e depois em Assignments
Observe que agora temos uma nova possibilidade de interface. Dessa forma, vamos clicar em “+Add”
Após clicar em “+Add” vamos ver uma nova interface com o nome “OPT1”. Então vamos clicar em “OPT1” e vamos editar.
Agora, vamos alterar o nome da interface para “WAN 2” e vamos usar a opção de receber IP por DHCP.
Agora vamos para o final da página e vamos clicar em “Save”.
Muito bem, agora vamos clicar em “Aplly Changes”. Dessa forma, vamos garantir que as alterações que fizemos sejam aplicadas.
Agora podemos ver que temos um total de 3 interfaces.
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 .
Agora vamos clicar em System/ Routing/Gateways. Podemos observar que agora temos 2 gateways, como na figura abaixo.
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
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