[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Download perde conexão - Balanceamento...



Coloquei uns comentarios, veja se te ajuda:
 
 > > Segue o script:
> > > **************************************************************
> > > #!/bin/bash
>
> > > #IPT=/usr/local/sbin/iptables
> > > INT=eth2 (rede interna)
> > > IF_ADSL1=eth0 (link de adsl 1 )
> > > IF_ADSL2=eth1 (link de adsl 2)
>
> > > # Limpando Regras antigas
> > > iptables -t nat -F
> > > iptables -t filter -F
> > > iptables -t mangle -F
> > > iptables -t nat -X
> > > iptables -t filter -X
> > > iptables -t mangle -X
(apagando todas as regras do firewall, para não deixa nada)

>
> > > #remove defaults routers
> > > route del default gw 192.168.3.1
> > > route del default gw 192.168.4.1
 Apagando todos os default gw da minha rede, muda conforme for sua rede

>
> > > # Definicao de regras padrã$IPT
> > > iptables -P INPUT ACCEPT
> > > iptables -P OUTPUT ACCEPT
> > > iptables -P FORWARD ACCEPT
>
Adicionando regras padrão para a rede

> > > iptables -A PREROUTING -t mangle -i eth2 -p udp --dport 80 -j MARK
> > > --set-mark 3
> > > iptables -A PREROUTING -t mangle -i eth2 -p udp --dport 110 -j MARK
> > > --set-mark 3
> > > iptables -A PREROUTING -t mangle -i eth2 -p tcp --dport 110 -j MARK
> > > --set-mark 3
> > > iptables -A PREROUTING -t mangle -i eth2 -p tcp --dport 25 -j MARK
> > > --set-mark 3
> > > iptables -A PREROUTING -t mangle -i eth2 -p tcp --dport 22 -j MARK
> > > --set-mark 3
> > > iptables -A PREROUTING -t mangle -i eth2 -p tcp --dport 21 -j MARK
> > > --set-mark 3
> > > iptables -A PREROUTING -t mangle -i eth2 -p tcp --dport 53 -j MARK
> > > --set-mark 3
> > > iptables -A PREROUTING -t mangle -i eth2 -p udp --dport 53 -j MARK
> > > --set-mark 3
> > > iptables -A PREROUTING -t mangle -i eth2 -p tcp --dport 23 -j MARK
> > > --set-mark 3
> > > iptables -A PREROUTING -t mangle -i eth2 -p udp --dport 69 -j MARK
> > > --set-mark 3
(marcando todos os pacotes e portas que quero balancear, veja que o msn está fora)
 

> > > #mascarando as conexoes
> > > iptables -t nat -A POSTROUTING -o $IF_ADSL2 -j MASQUERADE
> > > iptables -t nat -A POSTROUTING -o $IF_ADSL1 -j MASQUERADE
>
(mascarando os links 1 e 2)

> > > # Mantendo conexoes ativas:
>
> > > echo -n "Manutencao de conexoes ativas..."
> > > iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
> > > echo " [OK]"
>
> > > echo -n "Otimizando o roteamento..."
> > > iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
> > > echo " [OK]"
>
(mantendo as conexões ativas, um download iniciado por um link, será feito todo por esse link)

> > > # 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
> > > cat /proc/sys/net/ipv4/conf/*/rp_filter
> > > echo " [OK]"
>
 (desabilitando a checagem martian source, pacotes que sairem por um link, será aceitos se retornarem pelo outro)

> > > #Citç:
> > > #!/bin/bash
>
> > > # Interface ADSL 1
> > > IF1=eth0
> > > # Interface ADSL 2
> > > IF2=eth1
>
Interfaces onde estão ligados os meus adsl

> > > # IP 1
> > > IP1=192.168.3.5
> > > # IP 2
> > > IP2=192.168.4.5
meus ips das placas de rede onde estão ligados os adsl

>
> > > # Gateway 1
> > > P1=192.168.3.1
> > > # Gateway 2
> > > P2=192.168.4.1
>
Ips dos meus adsl (são dois modems com roteador configurados de tal forma) 

> > > # Rede 1
> > > P1_NET=192.168.3.0
> > > # Rede 2
> > > P2_NET=192.168.4.0
>
(minhas redes dos adsls)

> > > ip route add $P1_NET dev $IF1 src $IP1 table ADSL1
> > > ip route add default via $P1 table ADSL1
> > > ip route add $P2_NET dev $IF2 src $IP2 table ADSL2
> > > ip route add default via $P2 table ADSL2
>
> > > ip route add $P1_NET dev $IF1 src $IP1
> > > ip route add $P2_NET dev $IF2 src $IP2
>
> > > ip rule add from $IP1 table ADSL1
> > > ip rule add from $IP2 table ADSL2

Criandos regras do iproute2
 
> > > #balanceamento dos links
> > > ip rule add fwmark 3 lookup ADSL0 prio 3
> > > ip route add default table ADSL0 nexthop via $P1 dev $IF1 weight 2
> > nexthop
> > > via $P2 dev $IF2 weight 1

Balanceando os links
 
>
> > > #carregando nat e ip forward
> > > modprobe iptable_nat
> > > echo 1 > /proc/sys/net/ipv4/ip_forward

ativando o repasse de pacotes

> > > #aplicando as regras
> > > ip route flush cache
>
> > > #para acesso local a internet
> > > route add default gw 192.168.4.1
Adicionando o rota default para os serviços não balanceados



É isto, deve funcionar, mas não esqueça de criar as tabelas em /etc/iproute2/rt_tables
Se tiver uma dúvida, vou tentar te ajudar, hoje não uso mais este balancemento, tenho links fixos com garantia de banda, diferentes do adsl, mas o que eu me lembrar te ajudo.
Usei este esquema por uns 6 meses, e funcionou tranquilo.

Junior Bohn
100% movido a linux




> > > Junior Bohn
> > > 100% movido a linux
>
> > > 2008/6/25 Julio <cbju...@gmail.com>:
>
> > > > Boa tarde pessoal.
> > > > Há alguns dias postei sobre um problema com MSN e balanceamento de
> > > > carga...Consegui resolver determinando uma rota específica na tabela /
> > > > etc/iproute2/rt_tables. Assim o MSN só sai por um gateway.
> > > > Estou usando a regra:
>
> > > > ip route add default nexthop via 201.200.200.254 dev ppp0 weight 1
> > > > nexthop via 201.200.200.254 dev ppp1 weight 1
>
> > > > Sendo assim, tenho os links disponíveis como se fosse um só (o flash
> > > > get funciona que é uma beleza, pois faz os downloads nas 2 conexões
> > > > simultaneamente).
> > > > Porém, estou com um problema nos downloads pelo navegador. O problema
> > > > é claro: o navegador se perde de vez em quando, pois os IPs das 2
> > > > conexões se trocam (acho que o navegador não se dá bem com esse
> > > > problema, pois a conexão começa a mandar pacotes por outro IP, e aí o
> > > > download pára).
> > > > Alguém tem alguma idéia de como resolver isso? Existe alguma forma de
> > > > marcar pacotes de uma conexão até ela ser finalizada?
> > > > Por exemplo: "Faça esse download de 100 megas pelo browser. Até esse
> > > > download não terminar, ele não muda de rota (se pegou pela ppp0,
> > > > termina pela ppp0)".
> > > > Já tentei usando o CONNMARK, mas não tive sucesso.
> > > > Como possuo duas redes locais, poderia até fazer cada uma saindo por
> > > > uma ADSL, mas assim fico limitado (gostaria era de ter duas conexões
> > > > ao meu dispor o tempo todo, independente da rede).
> > > > Espero ter esclarecido.
> > > > Alguma ajuda?
>
> > > > --
> > > > To UNSUBSCRIBE, email to
> > debian-user-portuguese-REQU...@lists.debian.org
> > > > with a subject of "unsubscribe". Trouble? Contact
> > > > listmas...@lists.debian.org
>
> > Boa noite Junior. Obrigado pela resposta.
> > Mas desse jeito ele não "soma as 2 ADSLs" né...
> > O que ele faz é setar que 1 IP vai sempre sair por uma ADSL, e outro
> > IP (ou rede) sairá sempre por outra ADSL..como você fez:
>
> > ip rule add from $IP1 table ADSL1
> > ip rule add from $IP2 table ADSL2
>
> > Mas o que eu gostaria de saber é se tem como somar as 2. Ou seja,
> > posso usar as duas ao mesmo tempo, independente em que rede esteja. To
> > mandando pacotes pela porta 80 pela ADSL1 e ao mesmo tempo mandando
> > outros pacotes (de outra conexão, um download por exemplo) pela ADSL2.
> > Estou achando que com CONNMARK é viável. Mas até agora não consegui
> > fazer...
> > Será que existe forma de se fazer isso?
>
> > --
> > To UNSUBSCRIBE, email to debian-user-portuguese-REQU...@lists.debian.org
> > with a subject of "unsubscribe". Trouble? Contact
> > listmas...@lists.debian.org

Olá Junior.
Você poderia me explicar como funciona seu script?
Não entendi muito bem...
Vi que você marca alguns pacotes com 3 e 4, aí logo abaixo você
compartilha a conexão...
Depois você adiciona as rotas às tabelas (ADSL1 e ADSL2)
Aí você faz:
ip rule add from $IP1 table ADSL1
ip rule add from $IP2 table ADSL2...
...querendo dizer que o o IP1e o IP2 tem rotas definidas pelos 2 links
que você possui...
E então você adiciona a regra (ip rule...) com prioridade 3, que diz
que todo o tráfego
com marca 3 (inclusive o tráfego http - 80) sairá pela ADSL0:
ip rule add fwmark 3 lookup ADSL0 prio 3
Mas depois você faz a regra que seria para balancear as 2 conexões...
ip route add default table ADSL0 nexthop via $P1 dev $IF1 weight 2
nexthop via $P2 dev $IF2 weight 1
Mas entendi que o tráfego com marca 3 (inclusive http) cairá primeiro
na regra que vem antes, fazendo com que
ele seja roteado pela ADSL0...
Estou certo? Então não será balanceado entre os dois links...Me
corrija por favor Junior.
Abraço. E obrigado pela ajuda.


--
To UNSUBSCRIBE, email to debian-user-portuguese-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org



Reply to: