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.979 ]

Por: danilorpneves em 21/12/2011


Configuração



No ambiente que estou configurando o servidor tem 3 interfaces, duas interfaces do link e uma dos clientes.

Agora precisamos definir o IP de cada uma delas.

No meu caso, a interface do meu link principal é a 're1', vou configurar ela manualmente e depois configurar no 'rc.conf', para que na hora do boot do servidor já fique configurada.

IP da interface:

# ifconfig re1 187.64.174.186/30

Gateway:

# route add default 187.64.174.85

Obs.: Devemos configurar o DNS:

# ee /etc/resolv.conf

  nameserver 8.8.8.8


Feito isto, o servidor já deve está disponível para internet. Agora devemos configurar o segundo link em uma outra interface, que no meu caso é a 'bge0'.

# ifconfig bge0 186.68.173.182/30

Nesse momento não precisamos colocar o rota default porque já colocamos no passo anterior, e no momento não precisamos dessa rota default.

Por fim vamos configurar a interface do Gateway de seus clientes, no meu caso a 're2':

# ifconfig re2 192.168.1.1/24

Agora todas as interfaces estão com IP, vou colocar todas essas configurações no 'rc.conf', não coloquei antes para fins didático. Não é preciso fazer as configurações das interfaces que eu fiz acima, basta apenas seguir o exemplo do 'rc.conf' e reiniciar o servidor que o mesmo já vai iniciar com todas as configurações das interfaces.

Meu 'rc.conf' ficou da seguinte forma:

# ee /etc/rc.conf

# CONFIGURACAO DAS INTERFACES
# Link 1

ifconfig_re1="inet 187.64.174.186/30"

#Link 2
ifconfig_bge0="inet 186.68.173.182/30"

#Clientes
ifconfig_re1="inet 192.168.1.1/24"

#GATEWAY DEFAULT
defaultrouter="187.64.174.85"


Pronto, agora estão todas as interfaces configuradas.

Vamos agora configurar o PF, para fazer o NAT dos clientes e assim eles poderem saírem para a internet.

Para o PF funcionar é necessário adicionar no 'rc.conf':  pf_enable="YES",  e também o: gateway_enable="YES".

Pode ser logo abaixo da configuração do Gateway:

# ee /etc/rc.conf
pf_enable="YES"
gateway_enable="YES"


Feito isto, vamos fazer backup do arquivo de configuração do 'pf.conf' e criar um novo.

# mv /etc/pf.conf /etc/pf.conf.old

Vamos criar um novo arquivo com as seguintes configurações:

# ee /etc/pf.conf

nat on re1 from 192.168.1.0/24 to any -> 187.64.174.186
nat on bge0 from 192.168.1.0/24 to any -> 186.68.173.182


Agora é só salvar, para carregar o arquivo de configurações devemos digitar:

# pfctl -f /etc/pf.conf
# pfctl -e /etc/pf.conf


A primeira regra no arquivo de configuração faz que os clientes da faixa: 192.168.1.0/24, saiam "nateado" pelo IP: 187.64.174.186 (que é meu IP do link principal).

A outra regra só vai funcionar caso o primeiro link fique indisponível, e assim o segundo link vai assumir e todos os clientes vão sair pelo IP: 186.68.173.182.

Neste momento, todos seus clientes estarão navegando.

Agora vem o 'Ifstated', a parte mais importante desse artigo.

Vamos fazer um backup do arquivo de configuração padrão o 'ifstated.conf':

# mv /usr/local/etc/ifstated.conf /usr/local/etc/ifstated.conf.old

Vamos criar um novo 'ifstated.conf' com as novas configurações:

# ee /usr/local/etc/ifstated.conf

init-state master

if_up="re1.link.up"

net = '( "ping -q -c 1 -t 1  187.64.174.85 > /dev/null" every 5 )'

state master {

if ( $net) {

run "route delete default && route add default 187.64.174.85"

}

if ( ! $net) {
run "route delete default && route add default 186.68.173.181"

}
}


Veja que o arquivo de configuração não tem segredo nenhum.

Ele faz uma checagem de ping no seu Gateway principal 187.64.174.85 a cada 5 segundos. Caso nesse tempo o Gateway fique indisponível, ele vai alterar a rota para o 186.68.173.181.

Depois de 5 segundos ele faz um checagem novamente o Gateway principal e caso ele volte a ficar disponível, automaticamente vai alterar a rota para o Gateway principal.

Você pode escolher para fazer a checagem de ping no Gateway do seu roteador e também diminuir ou aumentar o tempo de checagem, isto depende de você.

Feito tudo isso, preciso colocar Daemon para fazer a checagem, digitando:

# ifstated -f /usr/local/etc/ifstated.conf

Pronto, agora o Daemon está rodando e checando seu link a cada 5 segundos, e assim temos um alta disponibilidade.
Página anterior     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

Criando um servidor DNS com o DJBDNS

Sabayon Linux: Migrando KDE4 para KDE5

Criando uma imagem de instalação do Ubuntu

Fedora 18 - Customização pós-instalação

UNR (Ubuntu Netbook Remix) 9.04 no Acer Aspire One (AA1)

  
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