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