Balanceamento de 2 Modens 3G

1. Balanceamento de 2 Modens 3G

Jair Viana
jairviana

(usa Slackware)

Enviado em 18/12/2011 - 21:39h

Boa noite a todos.

Sou analista de sistemas e iniciante em Linux
Escolhi o Slackware 13 para montar um servidor Internet 3G.
Como preciso de uma conexão confiável e em meu local não tenho cobertura de ADSL, utilizo dois modens 3G da Claro.

Conecto os dois modens normalmente pelo WvDial depois disso é que começa meu problema.
Criei um script para fazer o balanceamento das duas conexões e outro para monitorar as se as conexões estão ativas. Quando uma conexão cai eu faço a rediscagem pelo WvDial e refaço as rotas do balanceamento.

Faço o teste do trafego nas duas conexões, ppp0 e ppp1 pelo tcpdump e verifico que existe trafego nas duas conexões. Porém a velocidade de da minha Internet fica lenta. Mais lenta que quando utilizo apenas um modem.

Com muita pesquisa e leitura de post's e script consegui montar algo.

Meu script de balanceamento é este:

#!/bin/sh
# eth0 -> Rede interna (192.168.0.1/24)
# ppp0 -> Modem 1 - rt_tables -> Tabela 202 claro1
# ppp1 -> Modem 2 - rt_tables -> Tabela 203 claro2

# Variaveis - Pego o Endereço IP Dinânimo, a Mascara e o Getw das duas conexões
ppp0_addr=`ifconfig ppp0 | grep inet | cut -d : -f 2 | cut -dP -f 1`
ppp0_mask=`ifconfig ppp0 | grep inet | cut -d : -f 4 | cut -dP -f 1`
ppp0_net=`ifconfig ppp0 | grep inet | cut -d ":" -f 3 | tr -d "A-Z, a-z,-"`
ppp1_addr=`ifconfig ppp1 | grep inet | cut -d : -f 2 | cut -dP -f 1`
ppp1_mask=`ifconfig ppp1 | grep inet | cut -d : -f 4 | cut -dP -f 1`
ppp1_net=`ifconfig ppp1 | grep inet | cut -d ":" -f 3 | tr -d "A-Z, a-z,-"`

# Zerando TabelasClaro1 e Claro 2 e Main
ip route flush table claro1
ip route flush table claro2
ip route flush table main

# Claro 1
echo -n " Setando Tabela claro 1"
ip route add $ppp0_mask dev ppp0 src $ppp0_addr table claro1
ip route add default via $ppp0_addr dev ppp0 table claro1
echo " [OK]"

# Claro 2
echo -n " Setando Tabela claro 2"
ip route add $ppp1_mask dev ppp1 src $ppp1_addr table claro2
ip route add default via $ppp1_addr dev ppp1 table claro2
echo " [OK]"

# Regras das Tabelas
echo -n " Criando Regras para tabelas Claro "
ip rule add from $ppp0_net table claro1
ip rule add from $ppp1_net table claro2
echo " [OK]"

#Criando rotas na tabela main
echo -n " Setando Rotas na Tabela Principal "
ip route add $ppp0_net dev ppp0 src $ppp0_addr
ip route add $ppp1_net dev ppp1 src $ppp1_addr
ip route add 192.168.0.0/24 dev eth0 src 192.168.0.1
ip route add 127.0.0.0/8 via 127.0.0.1 dev lo
ip route add default nexthop via $ppp0_net dev ppp0 weight 2 nexthop via $ppp1_net dev ppp1 weight 1
echo " [OK]"

# flush no roteamento
echo -n " Flush no Roteamento "
ip route flush cache
echo " [OK]"



Creio que estou deixando passar algo, mas não sei.

Espero ajuda dos amigos.


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts