+ Responder ao Tópico



  1. Amanha vou fazer novos teste e posto a saída dos comandos.
    Vlw Pedro

    Agradecido

  2. Citação Postado originalmente por PEdroArthurJEdi Ver Post
    Como muitos tem dúvidas de como balancear o acesso a Internet por diversos links, resolvi escrever esse mini-howto para evitar a necessidade de novos post no fórum.

    Vamos ao problema. Imaginemos um roteador rodando kernel GNU/Linux com as opções de roteamento avançado ativado. Este computador está conectado a N links dedicados. Desejamos balancear a carga das requisições entre esses N links. Sejam LIP0, LIP1, ... , LIPN os endereços IP atribuidos aos links, LIF0, LIF1, ... , LIFN as interfaces de rede, LNTW, LNTW1, ... , LNTWN as redes e LGW0, LGW1, ... , LGWN os gateways de cada link.

    Primeiramente devemos criar N tabelas de roteamento, onde N é o número total de links que o gateway possui:
    echo 10 tb0 >> /etc/iproute2/rt_tables
    echo 11 tb1 >> /etc/iproute2/rt_tables
    ...
    echo XX tbN >> /etc/iproute2/rt_tables
    Feito isso, devemos atribuir as redes dos links as suas respectivas tabelas de roteamento:
    ip route add LNTW0 dev LIF0 src LIP0 table tb0
    ip route add to 0/0 via LGW0 table tb0

    ip route add LNTW1 dev LIF1 src LIP1 table tb1
    ip route add to 0/0 via LGW1 table tb1
    ...
    ip route add LNTWN dev LIFN src LIPN table tbN
    ip route add to 0/0 via LGWN table tbN
    deve-se, também, incluir informações sobre a rede local:
    ip route add LOCALNET dev IFLOCALNET table tb0
    ip route add LOCALNET dev IFLOCALNET table tb1
    ...
    ip route add LOCALNET dev IFLOCALNET table tbN
    obs: todas as redes locais devem estar presentes em todas as tabelas!!!

    Agora, devemos definir as rotas das redes através da tabela padrão:
    ip route add LNTW0 dev LIF0 src LIP0
    ip route add LNTW1 dev LIF1 src LIP1
    ...
    ip route add LNTWN dev LIFN src LIPN
    obs: se você está com seus link configurados através dos arquivos de configuração das distribuiçoes, a etapa anterior pode ser omitida. Basicamente se ao tentar inserir uma rota na tabela padrão, e a mesma já existir você receberá a seguinte mensagem:
    RTNETLINK answers: File exists

    Agora você adiciona regras que decidem por onde os pacotes de vem passar:
    ip rule add from LIP0 table tb0
    ip rule add from LIP1 table tb1
    ...
    ip rule add from LIPN table tbN
    Por ultimo, porém o não menos importante, na verdade escencial pois até agora não fizemos nada... Devemos definir o balanceamento de carga:
    ip route add to 0/0 nexthop via LGW0 dev LIF0 weight 1 nexthop via LGW1 dev LIF1 weight 1 ... nexthop via LGWN dev LIFN weight 1
    Note que o parâmetro weight pode ser explorado para atribuir maior prioridade de envio por um provedor. E você também pode (deve) atribuir um link padrão:
    ip route add to 0/0 via LGWP
    Bem, pronto... Agora apenas algumas considerações...

    O kernel mantém tabelas de roteamento estátcas, portanto, se N pessoas tentarem acessar o site Google por exemplo, todas as tentativas de conexão sairão pelo mesmo link.

    Existem alguns patchs disponíveis para melhorar o mecanismo de roteamento. Procurem, informem-se e vejam se são adequados as suas realidades.

    Com o uso de regras de roteamento (ip rule) você pode definir qual link padrão para a saída de pacotes de uma determinada rede. Ex:
    ip rule add from 10.1.0.0/24 table tb0
    ip rule add from 10.2.0.0/24 table tb1
    Pode-se. também, dividir por seviços. ex:
    iptables -t mangle -A PREROUTING -i LOCALNET -p tcp --dport 21 -j MARK --set-mark 0x60
    ip rule add fwmark 0x60 table tbN
    Só isso... fiz este post com o intuíto dele se tornar permanente... espero que os moderadores aceitem...

    Não seria mais interessantes postar este nos blogs??

    Att



  3. Os blogs não existiam quando postei...

  4. Sejam LIP0, LIP1, ... , LIPN os endereços IP atribuidos aos links, LIF0, LIF1, ... , LIFN as interfaces de rede, LNTW, LNTW1, ... , LNTWN as redes e LGW0, LGW1, ... , LGWN os gateways de cada link.
    Olá PEdroArthurJEdi, achei muito interessante a solução, só fiquei em dúvida em uma coisa, no meu caso eu tenho dois links, sendo que é ponto-a-ponto dedicado e outro é uma Speedy Business, ambos IP fixo, sendo que no Speedy existe uma VPN com a matriz. A idéia é configurar um LB para que quando um dos links caiam a filial não fique sem comunição com a matriz.

    Estou pensando em refazer a toda a estrutura e remontar a VPN que não fui que fiz, e configurar ela nos dois links, ou deixar como está, mas o que está pegando é LB, sem contar que depois tem Samba, Squid etc..etc...e terei que mecher com IP Route que ainda não manjo muito.

    Bem no caso da minha rede onde eu seto as interface eth0, eth1 eth2, sendo as duas primeiras para os links e útima para lan. O que seria esses LIP0, LIP1, LNTW, LNTW1, LGW0, LGW1. Fiquei confuso.
    Mais uma coisa esse seu exemplo funciona para o que eu quero fazer ou tem uma solução mais simples. Andei vendo algo sobre o Bonding, mas acho que não serve.

    Agradeço a atenção!
    Abraços.



  5. O que estamos fazendo aqui é um balanceamento de carga, ou seja, estamos dividindo os acessos de hosts/redes distintas por diferentes enlaces. O que você procura é um mecanismo de fail-over. Acho que encontrará alguns exemplos interessantes no sessão Alta Disponibilidade do Under-Linux.org.

    Quanto as variáveis, LIP0, .... LIPN seria um acrônimo para Link Internet Address, o endereço IP atribuido ao seu link. Tipo no seu caso, o IP dedicado e o IP do speedy. LNTW0, ..., LNTWN seria um acrônimo para Link NeTWork. Esses são as redes as quais os links pertencem. Seja o endereço do link 0 10.2.0.2/24, sua rede, ou LNTW0, 10.2.0.0. Já LGW0, ...., LGWN são os gateways das redes.

    Epero ter ficado claro...






Tópicos Similares

  1. Balanceamento de Carga do Link
    Por SeuMadruga no fórum Redes
    Respostas: 27
    Último Post: 10-05-2015, 19:55
  2. Balanceamento de portas entre 2 links
    Por angelangra no fórum Redes
    Respostas: 15
    Último Post: 20-11-2007, 01:03
  3. Balanceamento de carga usando 2 links
    Por dumer99 no fórum Redes
    Respostas: 16
    Último Post: 14-12-2006, 15:42
  4. Respostas: 1
    Último Post: 16-08-2006, 09:08
  5. Respostas: 3
    Último Post: 19-01-2003, 10:32

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L