Muitas vezes, provedores de internet ou até mesmo empresas, não têm 2 servidores para ter uma alta disponibilidade de link e servidor. E com isso, eles apenas garantem a disponibilidade de link em único servidor, isso garante que o usuário não vá ligar reclamando que não consegue navegar e bla bla bla, caso o link principal venha ficar indisponível.
Para fazer isso, vou usar 2 ferramentas no FreeBSD, uma vai ser o Ifstated para fazer o monitoramento dos link e alterar a rota. E a outra vai ser o Packet Filter, o famoso PF.
Caso o link venha ficar indisponível, o Ifstated vai alterar a rota para o outro link.
Caso o link indisponível venha ficar disponível automaticamente, a rota vai voltar para a rota default, para o link principal.
Já com o PF, vou usar para criar os NAT dos clientes em uma única linha. Ele também pode ser usado como Firewall, redundância de link (round-robin ou source-hash), redirecionamento de portas, e etc.
Vamos ao trabalho.
Preparando o ambiente
Precisamos compilar o Kernel para o PF e instalar o Ifstated.
Primeiro vou compilar o Kernel, e para isso vou descobrir qual o nome do meu Kernel atual:
# uname -a
/usr/obj/usr/src/sys/GENERIC
Veja que no final temos o nome do Kernel que no meu caso o nome padrão: GENERIC.
Precisamos agora editar e adicionar algumas opções para que o PF funcione corretamente.
Para editar:
# ee /usr/src/sys/i386/conf/GENERIC
Vá até o final do arquivo e adicione as seguintes opções:
device pf
options ALTQ
options ALTQ_CBQ
options ALTQ_RED
options ALTQ_RIO
options ALTQ_HFSC
options ALTQ_CDNR
options ALTQ_PRIQ
Feito isto é só salvar, agora vamos compilar o Kernel modificado.
# cd /usr/src
# make buildkernel KERNCONF=GENERIC
Espere, porque isso demora um pouco. Assim que terminar execute o comando abaixo
# make installkernel KERNCONF=GENERIC
Depois é só reiniciar o servidor.
Agora que já compilamos nosso Kernel para o PF, vamos agora instalar o Ifstated pelo ports:
# cd /usr/ports/net/ifstated/
# make install clean
Finalizamos o ambiente, agora vamos para a configuração.