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

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



On 27 jun, 11:20, "Júnior Bohn" <movidoali...@gmail.com> wrote:
> 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
>
> > <http://192.168.4.1>
>
> > > > > # 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
>
> > <http://192.168.4.5>
>
> > > > > # 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-REQU...@lists.debian.org
> > with a subject of "unsubscribe". Trouble? Contact
> > listmas...@lists.debian.org

Junior, estou tentando construir um script funcional, baseado naquilo
que você postou.
Mas tá complicado. Vou tentando aqui.
Obrigado pela força.


Reply to: