+ Responder ao Tópico



  1. #1

    Padrão Problemas com gerência de rotas (iptables) e Squid.

    E ai galera, beleza? =)
    Não sei se vocês já passaram por este problema na hora de tentar balancear a carga de dois links, mas vamos lá:

    Aqui na empresa, estamos tentando implementar um controle de rotas entre a rede interna e os dois links de internet que temos (Intelig e Velox). Estamos fazendo da seguinte forma:

    1. Preparamos as rotas, de acordo com as tabelas que criamos para o iproute2 em rt_tables: intelig e velox.

    Regras Intelig:

    Código :
    ip route add 200.157.xxx.xxx/29 dev eth0 src 200.157.xxx.xxx table intelig

    (o primeiro 200.157.xxx.xxx = end. rede, o segundo, end. maq. firewall iptables)

    Código :
    ip route add default via 200.157.238.xxx table intelig

    Regras Velox
    Código :
    ip route add 10.0.0.0/24 dev eth2 src 10.0.0.254 table velox
    ip route add default via 10.0.0.1 table velox

    2. Adicionamos regras para trabalhar com as rotas:

    Código :
    ip rule add from 200.157.xxx.xxx table intelig (200.157.xxx.xxx = maq. firewall iptables)
    ip rule add from 10.0.0.254 table velox

    3. Adicionamos regras de marcação de pacotes do firewall. Marcamos 1 para seguir pela tabela intelig, e 2 para procurar a rota para o Velox.

    Código :
    ip rule add fwmark 1 lookup intelig
    ip rule add fwmark 2 lookup velox
     
    ip route flush cache.

    Depois criamos as regras na tabela mangle para alterar os pacotes. Criamos duas chains, uma intelig e outra velox, marcando os pacotes.

    Código :
    iptables -A INTELIG -j MARK  --set-mark 1
    iptables -A VELOX -j MARK  --set-mark 2

    E então, em prerouting, da tabela mangle, estamos tratando da forma: Se origem é o IP xxx.xxx.xxx.xx. da Rede Interna, vá pela chain INTELIG ou VELOX, selecionando link pelo qual a pessoa vai sair.

    A técnica funciona normalmente, sem problema... sem proxy. ^^''

    Não entendemos o porquê quando colocamos o proxy, o balanceamento não funciona. Quando retiramos, funciona que é uma beleza. Alguém sabe de algo a respeito? O Squid chega a marcar o pacote de outra forma, ou altera o pacote também? Existe alguma forma de contornar isso?

    Valeu galera.

  2. #2

    Padrão

    pelo squid voce precisa usar o tcp_outgoing_address

    ai voce escolhe QUAL interface cada bloco vai sair.. assim:

    Código :
    acl     rede_velox                         src                     10.0.0.0/24
    tcp_outgoing_address                    200.200.200.1         rede_velox
     
    acl     rede_intelig                        src                     192.168.0.0/24
    tcp_outgoing_address                    201.201.201.1         rede_intelig

    só isso

  3. #3

    Padrão

    Opa velho, muito obrigado pela força.
    Funcionou perfeitamente aqui. ^^

    Valeu. o\