Gerenciamento de conexões

Este artigo tem por objetivo mostrar como pode ser feito uma redundância com duas conexões de modo que uma possa substituir a outra em caso de falta de uma das duas.

[ Hits: 42.932 ]

Por: Márcio Araújo Lopes em 10/02/2005


Criando as tabelas de roteamento



Bom, iremos criar agora o conteúdo das tabelas, vamos criar um pasta dentro do /etc com o nome "rotas" e dentro, um arquivo com o conteúdo da tabela, que ficará desta forma:

## TABLE 1 ROUTS ##
ip route add 10.1.10.0/24 dev eth2 proto kernel scope link src 10.1.10.1 table tabela1
ip route add 192.168.10.0/24 dev eth1 proto kernel scope link src 192.168.10.1 table tabela1
ip route add 200.144.22.0/21 dev eth0 proto kernel scope link src 200.144.22.1 table tabela1
ip route add default via 200.144.22.1 dev eth0 table tabela1

## TABLE 2 ROUTS ##
ip route add 10.1.10.0/24 dev eth2 proto kernel scope link src 10.1.10.1 table tabela2
ip route add 192.168.10.0/24 dev eth1 proto kernel scope link src 192.168.10.1 table tabela2
ip route add 200.144.22.0/21 dev eth0 proto kernel scope link src 200.144.22.1 table tabela2
ip route add default via 192.168.10.1 dev eth0 table tabela1

ip rule add from 10.1.10.0/24 table tabela1

Observe que iremos usar também 3 redes distintas, são somente exemplos, vou explicar o que cada linha quer dizer, ou melhor, será necessário explicar somente as 2 últimas linhas de cada tabela, pois segue-se o mesmo raciocínio para as demais linhas, cada linha corresponde a uma determinada placa de rede (ver introdução).

ip route add 200.144.22.0/21 dev eth0 proto kernel scope link src 200.144.22.1 table tabela1
ip route add default via 200.150.128.1 dev eth0 table tabela1


A primeira linha diz que a rede "200.144.22.0/24" corresponde a um gateway específico, no caso "200.144.22.1". A segunda linha diz que o default gateway vai ser "200.144.128.1". Agora, o que é essa linha no final? Muito bem, vamos lá.

ip rule add from 10.1.10.0/24 table tabela1

Essa linha quer dizer que a rede interna, que é "10.1.10.0/24", sairá pela tabela1, ou seja, o meu link que é o correspondente a tabela1, é simplesmente uma regra, passemos pra frente...

Observe agora que as duas rotas são praticamente iguais, como visto obedece ao mesmo raciocínio, mas com os "gateways default" diferentes, um corresponde a um link e o outro a outro. Muito bem, agora salve o arquivo, torne executável:

# chmod a+x tabela1

Agora, temos que fazer com que isso possa ser carregado na inicialização, o procedimento é bem simples, acho até que vocês já sabem. Pra quem não sabe, aí vai.

Edite um arquivo qualquer dentro de: /etc/rc.boot ou /etc/rc.local (depende da distro) e coloca dentro o caminho:

/etc/rotas/rc.rotas

Isso vai chamar o arquivo "rc.rotas" que está dentro do /etc/rotas que foi criado por você, isso, na hora que o sistema iniciar.

OK, tudo entendido, iremos passar para próxima etapa. Bem, até aqui criamos as tabelas, definimos quem é o que e colocamos pra iniciar junto com o sistema. Agora vamos aos scripts, a partir daqui iremos fazer o gerenciamento dos links por scripts, colocarei os scripts e direi como funcionam. São um total de três scripts que irão interagir entre eles, são pequenos e bem simples, porém muito práticos:

Teremos um script em especial que irá chamar os demais, caso seja realmente necessário, este, eu vou chamar de matriz, então teremos o seguinte:

#!/bin/sh
#
# By Márcio-MaRuJo®
#
# "MONITORAMENTO ENTRE 2 LINKS", CHAMARÁ SCRIPTS SECUNDÁRIOS DE ACORDO COM A NECESSIDADE.
#
# SCRIPT "MATRIZ"
#
# IRÁ GERAR UM ARQUIVO COM O NOME "ROTAS", DENTRO DA PASTA


ip rule >/tmp/rotas

# DEPOIS IRÁ CONSULTAR O ARQUIVO, E DE ACORDO COM O "GW DEFAULT" REGISTRADO, EXECUTARÁ O PROPOSTO.

if [ `cat /tmp/rotas | grep -c "tabela1"` -eq 1 ];
then
   pasta/script2 # (ainda não definido
else if [ `cat /tmp/rotas | grep -c "tabela2"` -eq 1 ];
   then
      pasta/script3 # ainda não definido
   fi
fi

OK, como eu disse é bem simples, o script de uma forma geral irá gerar um arquivo de nome "rotas", em seguida irá fazer uma procura dentro do arquivo e vai ver qual a "tabela" que está especificada no momento, se é a tabela1 ou da tabela2, então, chamará o script correspondente. Observe que não coloquei um diretório em especial, fica a seu critério.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Criando as tabelas de roteamento
   3. Segundo script de roteamento
   4. Terceiro script de roteamento
   5. Ajustes finais
Outros artigos deste autor

Instalando e configurando SNMP e MRTG no Linux

Leitura recomendada

Postfix autenticando com o SASL no Conectiva 8

Redes, Modelos de Referência, suas Camadas e seus Protocolos

Instalando e configurando um servidor DNS (Bind)

Configurando o DjbDNS

Newsbeuter Feed Reader - Instalação e configuração

  
Comentários
[1] Comentário enviado por leandro.teixeira em 10/02/2005 - 09:50h

Cara,
Parabéns... Faz tempo que eu procuro uma solução assim. Todo mundo me mandava comprar um routeador com load balance, pq o linux não fazia isso.
Show de bola... Resolveu um problemão...
Parabens, comunidade VOL, cada dia melhor....

[2] Comentário enviado por removido em 10/02/2005 - 11:44h

alahhh! grande marcio!
truta de trabalho esse aew ;D
dahora teu artigo rapah, teh depois..

[3] Comentário enviado por dmelorj em 10/02/2005 - 19:38h

Realmente é muito bom o seu artigo. Está de parabéns!

Aproveitando o assunto, voce saberia informar se é possível fazer com que sejam aproveitadas 2 conexões de internet de forma que a velocidade das duas atuem como uma unica conexao? Por exemplo, gerenciar 2 conexões aDSL de 256Kbps de forma que seja possivel fazer o download de um único arquivo ao mesmo tempo pelas duas conexões, como se utilizassemos 1 unica conexão de 512Kbps ?
Grato.

[4] Comentário enviado por t4t0 em 07/11/2006 - 15:03h

dae cara... uma perguntinha... ve se dá para fazer isto:

http://www.vivaolinux.com.br/perguntas/verPergunta.php?codigo=52308

[5] Comentário enviado por hildonluis em 28/09/2009 - 17:22h

Gostaria de saber sem alguém conseguiu colocar 100% em pratica este ARTIGO????

[6] Comentário enviado por marujo em 29/09/2009 - 14:49h

Hildon, no caso, eu que escrevi, coloquei sim pra funcionar... Porem, quando escrevi este documento, por falta de experiencia coloquei as coisas de forma bem superficial, de tal forma que algumas coisas podem nao funcionar por conta de ajustes tecnicos, relevantes... Se for o caso, podera colcar suas duvidas ou problemas pra tentar sana-las comigo.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts