+ Responder ao Tópico



  1. #1
    felgus
    Visitante

    Padrão Problema com Load Balence

    Estou tendo um problema com a tentativa de fazer um load balence.

    A minha situação é a seguite: tenho dois links de internet, uma é o virtua com 1200 kbps e outro é um speedy com 600 kbps

    Tenho uma maquina linux conectiva 10 com kernel 2.6.5 rodando iptables e iproute2 com 3 placas de rede

    etho é a placa do virtua ( 1º link) e tem o ip 201.6.76.42/22 com gateway 201.6.76.1/22

    eth1 é a placa da rede local e tem o ip 192.168.0.1/24

    eth2 é a placa do speedy ( 2º link) e tem o ip 200.204.152.219/24 e gateway 200.204.152.193/24

    nehuma configuração de rota é feita na mão, todas as configurações de roteamento e compartilhamento e balanceamento é feita por um script que segue abaixo na integra. O arquivo rt_tables se encontra da seguinte forma:

    10 virtua
    11 speedy
    30 geral


    segue o script:

    #!/bin/bash

    ########LIMPAR TODAS AS TABELAS

    iptables -F -t filter
    iptables -F -t nat
    iptables -F -t mangle

    ########APAGA TODAS AS CHAINS

    iptables -X -t filter
    iptables -X -t nat
    iptables -X -t mangle

    ########ZERA TODAS A TABELAS

    iptables -Z -t filter
    iptables -Z -t nat
    iptables -Z -t mangle

    ########ATIVAR O FORWARD

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

    ########REGRAS PADRAO

    iptables -P INPUT DROP
    iptables -P FORWARD ACCEPT
    iptables -P OUTPUT ACCEPT

    ########habilitando o compartilhamento

    echo -n "Habilitando o mascaramento..."
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
    echo " [OK]"

    ######## regra para negar pacotes icmp

    iptables -t filter -A INPUT -p icmp --icmp-type echo-request -i eth1 -j ACCEPT
    iptables -t filter -A INPUT -p icmp --icmp-type echo-request -j DROP
    iptables -t filter -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

    ######## recusar pacotes fragmentados

    iptables -t filter -A FORWARD -j REJECT -f -p tcp -d 192.168.0.0/24

    ######## negar acesso ao endereço de broadcast

    iptables -t filter -A FORWARD -j DROP -d 192.168.0.255

    ######## regras para ssh no firewall

    iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT

    ########regras de redirecionamento (DNAT)

    iptables -t nat -A PREROUTING -p tcp --dport 5900 -j DNAT --to 192.168.0.254
    iptables -t nat -A PREROUTING -p tcp --dport 5800 -j DNAT --to 192.168.0.254


    ########REGRAS PARA FECHAR PORTAS 21,25,110,389 E 80

    iptables -t filter -A INPUT -p tcp -i eth0 -m multiport --dport 21,25,80,110,389 -j DROP


    ###### BALANCEAMENTO DE LINKS ######################

    ######## Marcando pacotes

    echo -n "Marcando pacotes..."
    iptables -A PREROUTING -t mangle -s 192.168.0.0/24 -d 0/0 -j MARK --set-mark 3
    echo " [OK]"

    ######## Desabilitando o filtro de pacotes do martian source

    echo -n "Desligando rp_filter..."
    for eee in /proc/sys/net/ipv4/conf/*/rp_filter; do
    echo 0 > $eee
    done
    echo " [OK]"

    ######## Definindo regras de balanceamento de Link:

    echo -n "Balanceando links..."

    ######## virtua #1

    ip route add 201.6.76.0/22 dev eth0 src 201.6.76.42 table virtua
    ip route add default via 201.6.76.1 table virtua

    ######## speedy #2

    ip route add 200.204.152.0/24 dev eth2 src 200.204.152.219 table speedy
    ip route add default via 200.204.152.193 table speedy

    ######## setando virtua/speedy na tabela principal de roteamento

    ip route add 201.6.76.0/22 dev eth0 src 201.6.76.42
    ip route add 200.204.152.0/24 dev eth2 src 200.204.152.219

    ######## setando a rota preferencial

    ip route add default via 201.6.76.1

    ######## regras das tabelas

    ip rule add from 201.6.76.42 table virtua
    ip rule add from 200.204.152.219 table speedy

    ######## balanceamento de link

    ip rule add fwmark 3 lookup 30 prio 30
    ip route add default table geral nexthop via 201.6.76.1 dev eth0 weight 2 nexthop via 200.204.152.193 dev eth2 weight 1

    ######## flush no roteamento

    ip route flush cache
    echo " [OK]"
    sleep 3

    Dessa forma hora as maquinas conseguem acessar a internet outra hora não e parece estar tendo problema para resolver dns

    Por favor quem puder me ajudar ?

    Desde ja agradecido

  2. #2
    charadaa
    Visitante

    Padrão Problema com Load Balence

    cara tive a mesma experiencia q vc com esse assunto, no meu caso só resolveu qdo parei de usar o MASQUERADE no iptables, use a seguinte regra

    iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -J SNAT --to-source ipvalido1

    iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/24 -J SNAT --to-source ipvalido2

    lembrando que eth0 e eth1 são as placas que estão com ips validos.

  3. #3

    Padrão Problema com Load Balence

    Dica: não poste os IP's