On 27 jun, 11:20, "Júnior Bohn" <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]>: > > > > > > > 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 > > > > [EMAIL PROTECTED] > > > > > > with a subject of "unsubscribe". Trouble? Contact > > > > > > [EMAIL PROTECTED] > > > > > 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 > > [EMAIL PROTECTED] > > > > with a subject of "unsubscribe". Trouble? Contact > > > > [EMAIL PROTECTED] > > > 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 [EMAIL PROTECTED] > > with a subject of "unsubscribe". Trouble? Contact > > [EMAIL PROTECTED]
Junior, estou tentando construir um script funcional, baseado naquilo que você postou. Mas tá complicado. Vou tentando aqui. Obrigado pela força. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]