Alta disponibilidade de link - rápido e simples

Nesse artigo vou explicar detalhadamente como ter um gateway com alta disponibilidade de link em um único servidor,
de uma forma rápida e simples.

[ Hits: 20.666 ]

Por: danilorpneves em 21/12/2011


Introdução



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.
    Próxima página

Páginas do artigo
   1. Introdução
   2. Configuração
   3. Finalizando
Outros artigos deste autor

Instalando Cacti no Debian 5.0

Webconferência com OpenMeetings no Debian 5.0

Leitura recomendada

Configurando o Slackware 12

Servidor web nginx com PHP-FPM e memcached

Instalar um LAMP com boa performance

Configurando o CACIC (parte 5)

XFCE + Openbox no Debian e derivados

  
Comentários
[1] Comentário enviado por danniel-lara em 21/12/2011 - 11:42h

Parabens muito bom esse artigo

[2] Comentário enviado por removido em 21/12/2011 - 14:42h

Excelente artigo !

[3] Comentário enviado por rafaelc.lopes em 21/12/2011 - 16:32h

Parabéns, excelente a explicação!

[4] Comentário enviado por sansimon em 24/12/2011 - 01:24h

E se o link for dinâmico? Qual seria a mudança?


saudações.

[5] Comentário enviado por danilorpneves em 24/12/2011 - 14:55h

sansimon

Preciso saber como é seu ambiente.
Como por exemplo se seu modem tem opção de fazer aquelas configurações de registrar no NOIP. Assim fica simples e você faz o ping no domínio.
E configure seu roteador pra entregar IP privado amarrado com MAC no seu servidor. Assim vai pingar no domínio e caso não conseguir, vai alterar a rota para o outro modem também entregando IP privado. Acho que é isso :D.

[6] Comentário enviado por radeschi em 26/12/2011 - 00:14h

Fiz um script shell para redundância de links em FreeBSD, mas pode funcionar também em Linux com poucas alterações.. Com ele não existe necessidade de nenhum tipo de software adicional..

O que ele faz é criar uma rota pelo link principal para algum IP externo que dificilmente cai, assim como uma rota com outro IP externo pelo link2, e outros 3 IPs externos para fazer o teste de conexão..

Então ele fica em loop pingando um ip externo (8.8.8.8 por exemplo), se esse IP não responder, ele tenta o próximo cadastrado, se esse também falhar, ele testar o terceiro, sendo que se esse falhar, ele assume que o link atual está fora do ar, então ele testa pra ver qual link está sendo usado(com as rotas estáticas criadas anteriormente), e o link que responder, é o que assume o tráfego, após isso, ele envia um email avisando sobre o ocorrido, e altera a página de acesso negado do squid, informando os usuários que o servidor está operando com a redundância de link(que no meu caso o limite de banda é menor, prejudicando a navegação), inclusive o próprio script adiciona alguns sites na lista de acesso negado do squid(youtube,vimeo, etc)..
A partir daí, além de testar a conexão, o script começa a monitorar o link principal, assim que ele voltar a responder, a rota é alterada novamente, e todas as modificações são desfeitas...

Depois vou ajeitar mais ele, comentar e se possível postar aqui!

[7] Comentário enviado por danilorpneves em 26/12/2011 - 15:03h

bacana em radeschi
depois você compartilha esse script com a galera :D.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts