Balanceamento com 2 links ADSL - Under-Linux.org Fóruns
Visite também: Br-Linux ·  VivaOLinux ·  LinuxSecurity ·  Dicas-L ·  NoticiasLinux ·  SoftwareLivre.org ·  [mais]
Voltar   Under-Linux.org Fóruns > Geral > Serviços > Alta Disponibilidade, Clustering e Load Balance
Wiki Classificados Galeria Reviews Jogos Comunidades RSS Feeds FAQ Termos de Uso Sobre
Cadastre-se FotosBlogs Lista de Membros Calendário Pesquisar Mensagens de Hoje Marcar Fóruns Como Lidos

Balanceamento com 2 links ADSL



Tópico Trancado
 
LinkBack Opções do Tópico
Antigo 10-03-2005, 11:19   #1 (permalink)
Padrão Balanceamento com 2 links ADSL

Olá comunidade Underlinux! Estou com o seguinte problema na qual irei descrever com bastante detalhe para que talvez alguem possa me ajudar, mas antes tenho algumas perguntas.


1 - Alguem aqui desse fórum já conseguiu fazer um balanceamento de carga entre 2 links ADSL? Já vi muitos por aí que dizem ter feito mas já estou a 1 mês tentando diversas soluções e nenhuma foi bem sucedida.
2 - Quais as ferramentas? Utilizei iproute2 com marcação de pacotes pelo iptables e tb não tive sucesso.
3 - É necessário alguma ferramenta extra ou algum patch no kernel alem do que já vem com o slackware 10.0? Algum protocolo de roteamento diferente?


O problema que estou tendo é óbvio, o 2º link não funciona, somente o default. E necessário apagar as rotas na tabela default? E mesmo quando rodo o script as rotas se perdem e todo o trafego na rede se perde.
Em fim segue abaixo uma descrição dos procedimentos que efetuei para que analizem.

tabelas criadas no rt_tables:
Código:
10    link1 
11    link2 
30    interna
Script usado:
Código:
#!/bin/bash 
###################################### 
#    Script de Configuração para     # 
#    Balanceamento de Carga entre    # 
#            2 links ADSL            # 
###################################### 


# Definindo variaveis 
IP1=192.168.0.2 # ip da interface ligada ao link 1 
GW1=192.168.0.1 # ip do link 1 
NET1=192.168.0.0/24 # rede 1 
IF1=eth0 # placa de rede do link 1 
IP2=192.168.157.1 # ip da interface ligada ao link 2 
GW2=192.168.157.100 # ip do link 2 
NET2=192.168.157.0/24 # rede 2 
IF2=eth2 # placa de rede do link 2 
RI=10.10.1.0/24 # ip da rede interna 

# Carregando os modulos basicos: 

echo -n "Carregando os modulos..." 
modprobe ip_tables 
modprobe iptable_filter 
modprobe ip_conntrack 
modprobe ip_conntrack_ftp 
modprobe iptable_nat 
modprobe ip_nat_ftp 
modprobe ipt_LOG 
modprobe ipt_state 
modprobe ipt_MASQUERADE 
echo "                                     [OK]" 

# Resetando o Firewall: 

echo -n "Resetando o firewall..." 
iptables -F 
iptables -Z 
iptables -X 

iptables -t nat -F 
#iptables -P INPUT DROP 
#iptables -P FORWARD DROP 
#iptables -P OUTPUT ACCEPT 
echo "                                      [OK]" 

# Habilitando o roteamento de pacotes: 

echo -n "Habilitando o roteamento..." 
echo "1" > /proc/sys/net/ipv4/ip_forward 
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 

echo "                                  [OK]" 

# Liberando a chain INPUT para o localhost: 

echo -n "Liberando acesso do localhost..." 
iptables -A INPUT -p ALL -s 127.0.0.1 -i lo -j ACCEPT 
iptables -A INPUT -p ALL -s $RI -i lo -j ACCEPT 
iptables -A INPUT -p ALL -s $IP1 -i lo -j ACCEPT 
iptables -A INPUT -p ALL -s $IP2 -i lo -j ACCEPT 
echo "                             [OK]" 

# Otimizando o firewall: 

echo -n "Otimizando o roteamento..." 
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
echo "                                   [OK]" 

# Liberando resposta dos servidores DNS: 

echo -n "Liberando servidores DNS..." 
#iptables -A INPUT -p udp -s $RI --sport 53 -d $DNS1 -j ACCEPT 
#iptables -A INPUT -p udp -s $RI --sport 53 -d $DNS2 -j ACCEPT 
echo "                                  [OK]" 
    
# Descartar pacotes fragmentados: 

echo -n "Bloqueando pacotes fragmentados..." 
iptables -A INPUT -i $IF1 -f -j LOG --log-prefix "Pacote fragmentado: " 
iptables -A INPUT -i $IF1 -f -j DROP 
iptables -A INPUT -i $IF2 -f -j LOG --log-prefix "Pacote Fragmentado: " 
iptables -A INPUT -i $IF2 -f -j DROP 
echo "                           [OK]" 

# Liberando alguns acessos por ping: 

echo -n "Liberando acesso por ping..." 
iptables -A INPUT -p icmp --icmp-type 8 -i $IF1 -j ACCEPT 
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT 
iptables -A INPUT -p icmp -s $NET1 -d 0/0 -j ACCEPT 
echo "                                 [OK]" 

# Regra para SSH: (opcional) 

echo -n "Liberando acesso ao SSH..." 
iptables -A INPUT -p tcp --dport 22 -j ACCEPT 
echo "                                   [OK]" 

# Regras do FORWARD 

# Descarta pacotes invalidos: 

echo -n "Descartando pacotes invalidos para reenvio..." 
iptables -A FORWARD -m state --state INVALID -j DROP 
echo "                [OK]" 

# Mantendo conexoes ativas: 

echo -n "Manutencao de conexoes ativas..." 
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT  
echo "                             [OK]" 

# Liberando acesso de dentro para fora 

echo -n "Liberando FORWARDING" 

iptables -A FORWARD -s $RI -j ACCEPT 
#iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128 

echo "                           [OK]" 

# Fazendo mascaramento de enderecos IP (NAO NAT): 

echo -n "Habilitando o mascaramento..." 
iptables -t nat -A POSTROUTING -j MASQUERADE 
iptables -t nat -A POSTROUTING -o $IF1 -j MASQUERADE 
iptables -t nat -A POSTROUTING -o $IF2 -j MASQUERADE 
echo "                                [OK]" 

# Marcando pacotes 

echo -n "Marcando pacotes..." 
iptables -A PREROUTING -t mangle -s $RI -d 0/0 -j MARK --set-mark 3 
echo "                                [OK]" 
# Desabilitando o filtro de pacotes do martian source 
echo -n "Desligando rp_filter..." 
for eee in /proc/sys/net/ipv4/conf/*/rp_filter; do 
echo 0 > $eee 
done 
echo "                                [OK]" 

# Definindo regras de balanceamento de Link: 
echo -n "Balanceando links ADSL..." 

# Link 1 
ip route add $NET1 dev $IF1 src $IP1 table link1 
ip route add default via $GW1 table link1 

# Link 2 
ip route add $NET2 dev $IF2 src $IP2 table link2 
ip route add default via $GW2 table link2 

# Colocando os links na tabela principal de roteamento 
ip route add $NET1 dev $IF1 src $IP1 
ip route add $NET2 dev $IF2 src $IP2 

# setando a rota preferencial 
ip route add default via $GW1 

# regras das tabelas 
ip rule add from $IP1 table link1 
ip rule add from $IP2 table link2 

# balanceamento de link 
ip rule add fwmark 3 lookup interna prio 3 
ip route add default table interna nexthop via $GW1 dev $IF1 \ 
weight 1 nexthop via $GW2 dev $IF2 weight 1 
    
# flush no roteamento 
ip route flush cache 
echo "               [OK]" 
sleep 3
Espero que possamos discutir bem esse assunto, ou até mesmo montar-mos um tutorial para que os usuários fiquem mais esclarecidos a respeito desse assunto visto que é muito interessante alem de ser uma solução barata.

Agradeço a juda que puderem dar!
__________________
Quer Desempenho?<br />-------------------------------<br />Use as Flags do GCC<br />-------------------------------<br />CHOST=&quot;i686-pc-linux-gnu&quot;<br />CFLAGS=&quot;-march=pentium4 -O3 -pipe -fomit-frame-pointer&quot;<br />CXXFLAGS=&quot;-march=pentium4 -O3 -pipe -fomit-frame-point
Usuário
 
Avatar de maverick_cba
 
Registrado em: Mar 2005
Idade: 23
Mensagens: 237
Agradeceu: 0
Agradecido 0 vez(es) em 0 Posts
Reputação: 0 maverick_cba
Enviar mensagem via ICQ para maverick_cba Enviar mensagem via MSN para maverick_cba
maverick_cba está offline  
Antigo 02-04-2005, 21:24   #2 (permalink)
Padrão Balanceamento com 2 links ADSL

Maverick, eu sei que o Windows NT oferece este tipo de conexão, já vi isso a muito tempo atras, mas só funciona se o sistema do outro lado (Provedor, router,etc) disponibilizar esse tipo de conexão também. Infelizmente é tudo que sei sobre o assunto.
Usuário
 
Avatar de meraki
 
Registrado em: Jan 2004
Mensagens: 118
Agradeceu: 0
Agradecido 0 vez(es) em 0 Posts
Reputação: 0 meraki
meraki está offline  
Antigo 03-04-2005, 21:04   #3 (permalink)
Padrão Balanceamento de links

Guest
 
Mensagens: n/a
 
Antigo 03-04-2005, 21:56   #4 (permalink)
Padrão Balanceamento com 2 links ADSL

Cara te digo, ja tentei de tudo, não da, o unico jeito que da se não me engano eh se tiver mtos ips ae a provedora faz o balanceamento, usando AS se não me engano.

falows
__________________
Linux User: #241330
CCNA Certified
http://fuzzytech.wordpress.com
Super Moderador
 
Avatar de ruyneto
 
Registrado em: Jul 2004
Localização: São Paulo
Mensagens: 2.930
Agradeceu: 0
Agradecido 16 vez(es) em 16 Posts
Reputação: 347 ruyneto
ruyneto está offline  
Antigo 03-04-2005, 23:55   #5 (permalink)
Padrão Balanceamento com 2 links ADSL

Non pirem... balaceamento de link é uma coisa, agregacao de link é outra.

agregacao é onda as pontas precisam "chegar em um acordo", balanceamento nao, ou entao voce ta me dizendo que um pacote sai por um link e nao pode retornar por outro? se voce pensar que as rotas tem que ser obrigatoriamente simetrica voce esta enganado.

eu jah fiz isso faz um certo tempo com links ADSLs, _aparentemente_ seu script parece ok e tudo mais, mas na realidade voce so precisa dessa linha de fato:

ip route add default nexthop via ip.addr \
weight 1 nexthop via ip.addr weight 1

nao precisa ficar criando tabela, etc, etc, etc nem marcando pacote, voce esta somente balanceando os links de saidas, voce precisa _sim_ marcar o pacote quando voce quer fazer um QoS da vida ou marcar um pacote para sair sempre por um link, coisas nesse estilo, mas simplesmente para balancear o link, basta criar uma rota default com 2 nexthops (coisa que o route nao faz, so faz para uma)

bom jah falei muito, tente da maneira simples e veja se voce consegue, sem muitas regras de firewall nem nada... se conseguir, veja onde esta errando... ah.. nao espere que voce conseguia baixar usando somente um "download" uma taxa de 1Mbit, supondo q voce tem 2 links de 512k. Ai realmente nao vai funcionar legal.

Vou te dar uma dica onde voce deve ler, eu jah respondi essa pergunta nesse forum uma vez, pode pesquisar depois se quiser mas leia o seguinte: Adv-Routing-Howto (advanced routing howto), voce pode encontrar ele na tldp (www.tldp.org), ele cobre tanto load balance, quanto outros quesitos de roteamento avancado no linux, basta seguir passo a passo o howto que funciona legal.
__________________
Better Safe Than Sorry


Participe do Underlinux Wiki!
http://www.under-linux.org/wiki/
Super Moderador
 
Avatar de mistymst
 
Registrado em: Jan 2003
Localização: Pará
Idade: 24
Mensagens: 3.081
Agradeceu: 2
Agradecido 41 vez(es) em 39 Posts
Reputação: 385 mistymst
mistymst está offline  
Tópico Trancado

Opções do Tópico

Regras de Mensagens
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Ligado
Smiles estão Ligado
Código [IMG] está Ligado
Código HTML está Desligado
Trackbacks are Ligado
Pingbacks are Ligado
Refbacks are Ligado
Ir para...

Tópicos Similares
Tópico Tópico Iniciado Por Fórum Respostas Última Mensagem
Balanceamento de carga usando 2 links dumer99 Mikrotik Balanceamento 16 14-12-2006 16:42
balanceamento de links lucianogf Proxy/NAT/Firewall 6 01-11-2006 3:50
Balanceamento de links RafaelAndrade Proxy/NAT/Firewall 3 06-09-2005 9:15
balanceamento de links joaoricardofs Adm. em Geral 3 24-05-2005 8:59
Balanceamento entre links jairof Adm. em Geral 3 23-06-2004 23:35

Horários baseados na GMT -3. Agora são 23:11.


Powered by vBulletin®
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd
SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.