Ver Feed RSS

info24hs

Balanceamento e Redundancia (2 Links)

Avaliação: 4 votos, 5,00 média.
Introdução

Após instalar o Balanceamento e Redundancia adquirido na internet e modificado conforme minha necessidade, acabei deparando com alguns problemas, como acessar Bancos Online que utilizam portas seguras, e fazer Acesso Remoto na rede interna.

Partindo do principio que, a instalação e configuração das Ferramentas foram bem sucedidas, apenas vou comentar as modificações que foram necessárias para funcionar de acordo..

Rede:

Link 1 = ETH1 = IP 192.168.1.10 GVT
Link 2 = ETH2 = IP 192.168.2.10 BRT
Link 3 = ETH0 = IP 192.168.0.1 Rede Interna

As estação possui ip fixo e dispõe uma porta para conexão remota, ex.:

192.168.0.3 porta de acesso do radmin 4893

O programa radmin cliente 3 possibilita scanear todas as estações cadastradas, apenas é necessário configurar o ip e porta da estação.


Ferramentas

Utilizei o método de Balanceamento retirado do site abaixo, onde explica como instalar.

Balanceamento e Redundancia retirado do Site
How To: Load Balancing & Failover With Dual/ Multi WAN / ADSL / Cable Connections on Linux

Script Gwping para Redundancia
http://blog.taragana.com/wp-content/upload/gwping

Programa Radmin 3 - Servidor e Cliente para Acesso Remoto estações Windows
http://www.radmin.com

Iptables v. 1.4.2
Kernel v. 2.6.24-etchnhalf.1-486
Distro. Debian 4.0


Balanceamento de Link

Criei as tabelas no arquivo rt_tables:

########################### rt_tables ##########################

1 gvt
2 brt


Adicionei as rotas padrão para balancear a carga de saída do tráfego, no meu caso utilizei os links da GVT e BRT, abaixo incluío as regras no arquivo rc.local:

########################### rc.local ###########################

#Limpa as rotas no cache das tabelas
ip route flush table gvt
ip route flush table brt

#Adiciona as rotas dos links para as tabelas
ip route add 192.168.1.0/24 dev eth1 src 192.168.1.10 table gvt
ip route add default via 192.168.1.1 table gvt
ip route add 192.168.2.0/24 dev eth2 src 192.168.2.10 table brt
ip route add default via 192.168.2.1 table brt

#Adiciona a regra de marcação dos links nas tabelas
ip rule add from 192.168.1.10 table gvt
ip rule add from 192.168.2.10 table brt

# Adcionando a Marcação e Prioridade para as Tabelas
ip rule add fwmark 0x10 lookup gvt prio 3
ip rule add fwmark 0x20 lookup brt prio 3

#Esta regra abaixo é responsável pelo balancemento com peso 2:1, porque no meu caso a gvt é 2x mais rápida que o link da brt
ip route add default scope global nexthop via 192.168.1.1 dev eth1 weight 2 nexthop via 192.168.2.1 dev eth2 weight 1

#Limpa as rotas no cache
ip route flush cache


Firewall

###################### firewall ######################

# Variáveis para compartilhamento
### Multi WAN ###
ETH="eth+"
### Rede Lan ###
LAN="192.168.0.0/24"

# Ativa o compartilhamento
iptables -t nat -A POSTROUTING -o $ETH -s $LAN -j MASQUERADE


# Ativa acessos que podem ir de uma interface mas que voltam por outra
# Fundamental estar desabilitado para funcionar o roteamento com 2 links.
echo "0" > /proc/sys/net/ipv4/conf/default/rp_filter

# Tempo máximo que o kernel espera até tentar uma nova rota quando perceber que a atual está morta.
echo "10" > /proc/sys/net/ipv4/route/gc_timeout


Redundancia

Agora vamos criar a chamada do script "gwping" que é responsável pela Redundancia, optei em coloca-lo na pasta /etc/link, e alterar as permissões do aquivo usando o comando: chmod 755 /etc/link/gwping

#Adcione o comando no arquivo rc.local:
nohup /etc/link/gwping &

No script "gwping" fiz algumas alterações conforme minha necessidade

###################### gwping ######################

#IP Address or domain name to ping. The script relies on the domain being pingable and always available
##Modifique para um endereço mais perto, ou seja mais rápido, neste caso usei o IP da GVT
TESTIP=200.139.127.26

# Relative weights of routes. Keep this to a low integer value.
## Peso das rotas, como o link da Gvt é 2x mais rápido que a BRT, deixei a proporção 2:1
W1=2
W2=1

# Broadband providers name; use your own names here.
## Mudei para o nome das minhas tabelas
NAME1=GVT
NAME2=BRT

# No of repeats of success or failure before changing status of connection.
## No meu caso se houver 4 tentativas sem resposta o link é desabilitado, uma tentativa com sucesso ele reabilida o link. Assim o script não vai trocar a rota padrão e achar que o link caiu quando houver sobrecarga.
SUCCESSREPEATCOUNT=1
FAILUREREPEATCOUNT=4


## Abaixo acrescentei as regras para desmarcar os pacotes caso um link caia, assim os pacotes marcados não retornaram sem resposta.

echo Switching to $NAME2
ip route replace default scope global via $GW2 dev $EXTIF2
#Deleta a Marcação e Prioridade para as Tabelas
ip rule del fwmark 0x10 lookup gvt prio 3
ip rule del fwmark 0x20 lookup brt prio 3
#Limpa as rotas no cache
ip route flush cache

elif [[ $LLS1 -eq 0 && $LLS2 -eq 1 ]]; then
echo Switching to $NAME1
ip route replace default scope global via $GW1 dev $EXTIF1
#Deleta a Marcação e Prioridade para as Tabelas
ip rule del fwmark 0x10 lookup gvt prio 3
ip rule del fwmark 0x20 lookup brt prio 3
#Limpa as rotas no cache
ip route flush cache

elif [[ $LLS1 -eq 0 && $LLS2 -eq 0 ]]; then
echo Restoring default load balancing
#Adiciona a Marcação e Prioridade para as Tabelas
ip rule add fwmark 0x10 lookup gvt prio 3
ip rule add fwmark 0x20 lookup brt prio 3
ip route replace default scope global nexthop via $GW1 dev $EXTIF1 weight $W1 nexthop via $GW2 dev $EXTIF2 weight $W2
#Limpa as rotas no cache
ip route flush cache


Configurando Portas para Acesso Remoto e Sites de Bancos

Configurando Portas da conexão interna para Acesso Remoto e Conexão Segura aos Bancos
Ex. o acesso ao servidor remoto do IP 192.168.0.3 porta 4893

####################### Firewall ######################

#Carregar modulos
modprobe ipt_mark
modprobe ipt_MARK

#Marcando a saída das portas 110(POP3),25(SMTP) pelo link da BRT, as portas 80 e 443 (os bancos bradesco e banrisul), sairão pelo link da GVT, os demais destinos pela porta 80 serão balanceados.
iptables -I PREROUTING -t mangle -i eth0 -s 192.168.0.0/24 -d 0/0 -p tcp -m multiport --dports 110,23,25 -j MARK --set-mark 0x20
iptables -I PREROUTING -t mangle -i eth0 -s 192.168.0.0/24 -d bradesco.com.br -p tcp -m multiport --dports 80,443 -j MARK --set-mark 0x10
iptables -I PREROUTING -t mangle -i eth0 -s 192.168.0.0/24 -d banrisul.com.br -p tcp -m multiport --dports 80,443 -j MARK --set-mark 0x10
iptables -I PREROUTING -t mangle -i eth0 -s 192.168.0.0/24 -d 0/0 -p tcp --dport 443 -j MARK --set-mark 0x10

#Permite o acesso a porta 4893 na estação windows da rede interna, marca a entrada e saída do link, nesse caso usei o link da Gvt
iptables -I FORWARD -p tcp --dport 4893 -j ACCEPT
iptables -t nat -I PREROUTING -i eth1 -p tcp --dport 4893 -j DNAT --to-dest 192.168.0.3
iptables -t mangle -A PREROUTING -p tcp -s 192.168.0.3 --sport 4893 -j MARK --set-mark gvt


OBS: A marcação dos pacotes também devem estar no arquivo de redundância, pois é necessário o script deletar e acrescentar as marcações quando mudar o status dos links. Veja mais detalhes no Artigo: Balanceamento e Redundancia (3 Links)

Atualizado 03-10-2009 em 11:35 por info24hs

Categorias
Linux , Balanceamento e Redundância

Comentários

Página 1 de 2 12 ÚltimoÚltimo
  1. Avatar de turbocell
    Gostaria de saber se a possibilidade de Agrupar 3 links, e Sair todos por uma unica ETH(MIKROTIK)
  2. Avatar de info24hs
    Sim, no meu blog existe outro post com a parte 4 de como fazer o balanceamento e redundancia.. Nota que há situações e necessidades que devem ser observadas e configuradas para garantir o funcionamento adequado da rede, e deste método..
  3. Avatar de Não Registrado
    Boa tarde info24hs,

    Vi os seus posts, vc parece entender muito mesmo do assunto de balancear conexões. O meu caso é muito mais simples do que os que foram espostos (que eu não entendi muito bem). Na empresa onde eu trabalho o MSN e Orkut, entre outros, são bloqueados. Eu tenho internet 3G via celular, mas quando conecto perco a rede local para acessar os programas que preciso para trabalhar. Teria como usar a internet 3G do celular somente para MSN e Orkut?

    Meu email: [email][email protected][/email]

    Obrigado!
  4. Avatar de info24hs
    Citação Postado originalmente por Não Registrado
    Boa tarde info24hs,

    Vi os seus posts, vc parece entender muito mesmo do assunto de balancear conexões. O meu caso é muito mais simples do que os que foram espostos (que eu não entendi muito bem). Na empresa onde eu trabalho o MSN e Orkut, entre outros, são bloqueados. Eu tenho internet 3G via celular, mas quando conecto perco a rede local para acessar os programas que preciso para trabalhar. Teria como usar a internet 3G do celular somente para MSN e Orkut?

    Meu email: [email protected]

    Obrigado!
    Sim, parece que o problema refere-se a roteamento.. também é necessário realizar a marcação de pacotes para ter as duas redes trabalhando juntas e usar a internet em ambas.. leia sobre iproute, iptables..
  5. Avatar de Não Registrado
    Olá,

    Sou novo no mundo no software livre, aprendi bastante com os post's que vc colocou.
    Mas vamos lá , minha duvida é a seguinte tenho dois link's de internet de um mesmo provedor netvirtua, uso a distro SuSe precisava saber qual ferramenta posso usar para fazer o balanceamento dos meu dois link's de 15 Mb.
    Quero deixar um so para navegação e o outro dividido ao 1/2 metade para smtp e pop e downdoalds e uploads.
    Ja estão configurados e funcionando os links, coloquei um como gw 192.168.0.1 e o outro com 192.168.0 2.

    se poder me ajudar ficarei grato.

    Obrigado

    Vitor
  6. Avatar de info24hs
    Citação Postado originalmente por Não Registrado
    Olá,

    Sou novo no mundo no software livre, aprendi bastante com os post's que vc colocou.
    Mas vamos lá , minha duvida é a seguinte tenho dois link's de internet de um mesmo provedor netvirtua, uso a distro SuSe precisava saber qual ferramenta posso usar para fazer o balanceamento dos meu dois link's de 15 Mb.
    Se vc leu os artigos vai ver que usamos nesse método o iptables e iproute2, são as duas ferramentas principais para prover esta solução..

    Citação Postado originalmente por Não Registrado
    Quero deixar um so para navegação e o outro dividido ao 1/2 metade para smtp e pop e downdoalds e uploads.
    Ja estão configurados e funcionando os links, coloquei um como gw 192.168.0.1 e o outro com 192.168.0 2.

    se poder me ajudar ficarei grato.

    Obrigado

    Vitor.
    Usa marcação de pacotes com iptables para determinar a saída dos serviços.. no artigo mostra como fazer... quanto dividir pela metade os serviços smtp, pop, etc.. nunca fiz.. mas acredito que com Controle de Banda ou iptables possa fazer..

    Abraço.
  7. Avatar de Kleberdexter
    Olá cara tudo bem?

    Cara só queria tirar uma duvida....

    como vou usar squid não posso fazer nat completo como vc fez
    (# Ativa o compartilhamento
    iptables -t nat -A POSTROUTING -o $ETH -s $LAN -j MASQUERADE)

    Assim ao invés disso é só usar um multiport pras demais portas né(110,25,21...etc) , mrnosd para 80 ...valew brother!
  8. Avatar de veriton
    Mano boa tarde.
    aki no meu Provedor possuo
    3 links.. sendo eles..
    1 Embratel de 2 mb
    2 velox de 5 mb
    eu queria saber se ah possibilidades de colocar os 2 velox para Download e o Embratel so para Navegaçao.. ou se vc tem alguma outra dica mais viavel para atender com esses link uns 150 usuarios sem fica lento em hora nenhuma do dia.. abraço..
  9. Avatar de A Lusvarghi
    Artigo muito bom! Parabéns!
  10. Avatar de germanomm
    Muito interessante mesmo...
    achei massa...
    Não conhecia esta função:

    # Tempo máximo que o kernel espera até tentar uma nova rota quando perceber que a atual está morta.
    echo "10" > /proc/sys/net/ipv4/route/gc_timeout


    Não implementei, mas parabéns pelo post.
Página 1 de 2 12 ÚltimoÚltimo

+ Enviar Comentário