Re: [GTER] Balanceamento de link - roteamento avançado

Sergio Oliveira sergiotux at gmail.com
Thu Jul 20 00:23:28 -03 2006


Ola Pessoal...
Quero agradecer a todos pela ajuda, em especial ao Rubens, estou começando a
entender melhor o assunto.
Mas ainda tenho algumas dúvidas.

Alguns links que me enviaram eu já tinha visto, mas não funcionaram bem.
Provavelmente por minha culpa mesmo.

Bom, com o iptraf no balanceador eu vejo o trafego dos "pacotes", as
estações navegam e tudo bem. Quando eu troco o router default tambem, apesar
de ser bem mais lento, mas navego.

Tenho até vergonha de peguntar, mas... Como faço para ter certeza que o
balanceamento está funcionando? HELPPP.......

Assim que isso estiver oque eu vou fazer como o Rubens disse, o script para
a redundancia...ou melhor, adaptar o script que ele sugeriu.

Pessoal...Agradeço muito pela ajuda e atenção que vcs tem dado e se puderem
me ajudar em mais essa!!! Agradeço.

Algumas saidas de alguns comandos estao abaixo. Estão corretos???

O escript que inicia o servido de balanceamento está ficando assim: (graças
ao Rubens) ..:->

--------------------  Balance

#!/bin/bash

iptables -t nat -F
iptables -t nat -X
iptables -F
iptables -X

#---------------------------------------------------
P0_NET=10.0.0.0/24              #mascara
IF0=eth1                               #interface interna

IF1=eth2                               #interface do speedy
P1_NET=200.168.158.192      #network of speedy
P1=200.168.158.193              #gateway of speedy (pelos calculos que
fiz, acho que é  esse. :-) Mascara 255.255.255.192
IP1=200.168.158.205             #ip of speedy

#-As infomações referentes as IF2 são da rede interna que tem um outro link
#aqui vou trocar pelos ips da ajato no futuro (assim que o balance
funcionar) :->
IF2=eth0                                #iface of ajato
P2_NET=192.168.1.0              #network of ajato
P2=192.168.1.1                      #gateway of ajato
IP2=192.168.1.100                  #ip of ajato

#---------------------------------------------------
ip route add $P1_NET dev $IF1 src $IP1 table speedy
ip route add default via $P1 table speedy
ip route add $P2_NET dev $IF2 src $IP2 table ajato
ip route add default via $P2 table ajato

ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2

ip rule add from $IP1 table speedy
ip rule add from $IP2 table ajato

ip route add $P0_NET dev $IF0 table speedy
ip route add $P2_NET dev $IF2 table speedy
ip route add 127.0.0.0/8 dev lo table speedy
ip route add $P0_NET dev $IF0 table ajato
ip route add $P1_NET dev $IF1 table ajato
ip route add 127.0.0.0/8 dev lo table ajato

ip route del default
ip route add default scope global nexthop via $P1 dev $IF1 weight 1 nexthop
via $P2 dev $IF2 weight 1
#ip route add default table rede nexthop via $P1 dev $IF1 weight 1 nexthop
via $P2 dev $IF2 weight 1
ip route flush cache

#-------------------------------------------------------
iptables -t nat -A POSTROUTING -o $IF1 -j SNAT --to-source $IP1
iptables -t nat -A POSTROUTING -o $IF2 -j SNAT --to-source $IP2

echo 1 > /proc/sys/net/ipv4/ip_forward
#---------------------------------------------------


A saida dos comandos foi:

# ifconfig
eth0       Encapsulamento do Link: Ethernet  Endereço de HW
00:E0:7D:C6:E5:68
          inet end.: 192.168.1.100  Bcast:192.168.1.255  Masc:255.255.255.0

eth1       Encapsulamento do Link: Ethernet  Endereço de HW
00:10:5A:0F:A4:96
          inet end.: 10.0.0.1  Bcast:10.0.0.255  Masc:255.255.255.0

eth2       Encapsulamento do Link: Ethernet  Endereço de HW
00:02:B3:19:F6:83
          inet end.: 200.168.158.205  Bcast:200.168.158.255  Masc:
255.255.255.192

-------------------------------------------
#ip route show <<<<
192.168.1.0 dev eth0  scope link  src 192.168.1.100
200.168.158.192 dev eth2  scope link  src 200.168.158.205
200.168.158.192/26 dev eth2  proto kernel  scope link  src 200.168.158.205
10.0.0.0/24 dev eth1  proto kernel  scope link  src 10.0.0.1
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.100
default
        nexthop via 200.168.158.193  dev eth2 weight 1
        nexthop via 192.168.1.1  dev eth0 weight 1

-------------------------------------------
#ip rule show <<<<
0:      from all lookup local
32764:  from 192.168.1.100 lookup ajato
32765:  from 200.168.158.205 lookup speedy
32766:  from all lookup main
32767:  from all lookup default

-------------------------------------------

# route -n
Tabela de Roteamento IP do Kernel
Destino         Roteador        MáscaraGen.    Opções Métrica Ref   Uso
Iface
192.168.1.0     0.0.0.0         255.255.255.255 UH    0      0        0 eth0
200.168.158.192 0.0.0.0         255.255.255.255 UH    0      0        0 eth2
200.168.158.192 0.0.0.0         255.255.255.192 U     0      0        0 eth2
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         200.168.158.193 0.0.0.0         UG    0      0        0 eth2

-------------------------------------------



_______________________________________________________________________

2006/7/19, Rubens Kuhl Jr. <rubensk at gmail.com>:
>
> > Quero colocar os dois links de internet em um pc de forma que eu tenha
> uma
> > redundancia...se um link cair ou outro mantem o serviço e de quebra
> fazer um
> > balanceamento com esses links.
>
> > Tenho um link com a internet da speedy com ip 200.168.158.105 e um link
> com
> > a ajato de ip 201.20.202.56. A rede interna é 192.168.1.1
> >
> > Instalei um Debian Sarge com 3 placas de rede.
>
> Primeiro passo é dividir problemas que são distintos: balanceamento e
> redundância. Redundância você implementa chaveando entre 3
> configurações: 1 - dois links no ar ; 2 - Speedy no ar ; 3 - Ajato no
> ar.
>
> Um script desses é algo parecido com este aqui:
>
> http://www.linuxquestions.org/linux/blog/ALInux/2006-02-12/Failover_script_for_Connection_back_up
>
> Assim como o autor, você vai precisar escrever seu script conforme as
> idiossincrasias dos seus provedores... e a cada transição entre esses
> 3 estados, garantir que as tabelas de rotas, seleção de rotas e
> iptables se alterem da forma que for necessária para que tudo
> funcione.
>
> Já na questão de balanceamento, comece do básico que é garantir que
> conexões saintes sejam balanceadas por destino e as de origem pelo IP
> que o usuário externo usar para conectar. Uma boa referência disso é
> esta página do LARTC:
> http://lartc.org/howto/lartc.rpdb.multiple-links.html
>
> No seu caso, ficaria algo assim:
> Colocar as tabelas speedy e ajato no arquivo /etc/iproute2/rt_tables ;
>
> export P0_NET=192.168.10/24 (ou outra máscara)
> export IF0=rede da interface interna
> export P1_NET=rede da interface do speedy
> export P1=gateway do speedy
> export IF1=interface do speedy
> export IP1=200.168.158.105
> export P2_NET=rede da interface do ajato
> export IF2=interface do ajato
> export IP2=201.20.202.56
> export P2=gateway do ajato
>
> ip route add $P1_NET dev $IF1 src $IP1 table speedy
> ip route add default via $P1 table spedy
> ip route add $P2_NET dev $IF2 src $IP2 table ajato
> ip route add default via $P2 table ajato
>
> ip route add $P0_NET     dev $IF0 table speedy
> ip route add $P2_NET     dev $IF2 table speedy
> ip route add 127.0.0.0/8 dev lo   table speedy
> ip route add $P0_NET     dev $IF0 table ajato
> ip route add $P1_NET     dev $IF1 table ajato
> ip route add 127.0.0.0/8 dev lo   table ajato
>
> ip rule add from $IP1 table speedy
> ip rule add from $IP2 table ajato
>
> ip route add $P1_NET dev $IF1 src $IP1
> ip route add $P2_NET dev $IF2 src $IP2
>
> ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \
>            nexthop via $P2 dev $IF2 weight 1
>
> iptables -t nat -A POSTROUTING  -o $IF1 -j SNAT --to-source $IP1
> iptables -t nat -A POSTROUTING  -o $IF2 -j SNAT --to-source $IP2
>
> A única coisa que muda quando um dos links cai, é a rota default...
> todas as outras configurações se mantém, pois elas apenas garantem que
> o IP que será usado tanto por conexões localmente originadas quanto
> por pacotes sendo NATeados seja a da conexão por onde o pacote veio ou
> vai sair.
>
> Assim, seria fazer:
> 1) Caiu o link speedy
> ip route change default via $P2
> ip route flush cache
>
> 2) Caiu o link ajato
> ip route change default via $P1
> ip route flush cache
>
> 3) Os dois links funcionam de novo
> ip route change default scope global nexthop via $P1 dev $IF1 weight 1 \
>            nexthop via $P2 dev $IF2 weight 1
> ip route flush cache
>
>
> Depois que você adaptar os scripts de failover e testar o de
> balanceamento, publique aqui o resultado para apontarmos esse ítem no
> futuro FAQ da lista.
>
> Rubens
> --
> gter list    https://eng.registro.br/mailman/listinfo/gter
>



More information about the gter mailing list