Após instalar o balanceamento e redundância adquirido na internet e modificado conforme minha necessidade, acabei me deparando com alguns problemas, como acessar bancos online que utilizam portas seguras e fazer acesso remoto na minha rede interna. Como não achei nada na internet referente ao meu caso, decidi colocar aqui algumas dicas úteis.
#Adiciona a marcação nos links
ip rule add fwmark 0x10 lookup gvt prio 3
ip rule add fwmark 0x20 lookup brt prio 3
#Marcando a saída das portas 110 (POP3), 25 (SMTP) pelo link da BRT e 80, 443 (bancos), 4893 (acesso_remoto), 53 (DNS) pelo link da GVT
iptables -I PREROUTING -t mangle -i eth0 -s 192.168.0.0/24 -d 0/0 -p tcp -m multiport --dports 110,23,25 -j MARK --set-mark 0x20
iptables -I PREROUTING -t mangle -i eth0 -s 192.168.0.0/24 -d 0/0 -p tcp -m multiport --dports 80,443,4093,53 -j MARK --set-mark 0x10
#Permite o acesso a porta 4893 na estação Windows da rede interna, marca a entrada e saída do link, nesse caso usei o link da Gvt
iptables -I FORWARD -p tcp --dport 4893 -j ACCEPT
iptables -t nat -I PREROUTING -i eth1 -p tcp --dport 4893 -j DNAT --to-dest 192.168.0.3
iptables -t mangle -A PREROUTING -p tcp -s 192.168.0.3 --sport 4893 -j MARK --set-mark gvt
Obs.: Para acessar o site Banrisul é necessário acrescentar a rota no arquivo rc.local, como a porta 80 e 443 utilizada para sair pelo link da GVT, vamos configurar a rota para sair por este link:
# rc.local
route add -host www.banrisul.com.br gw 192.168.1.1 dev eth1
Agradecimentos
Como sou verde no Linux e vi a carência de escrever esse meu primeiro artigo, gostaria de agradecer aos amigos que nesses 2 meses tem me ajudado bastante com a implantação do balanceamento e redundância, obrigado por suas informações e muita paciência.
São eles: Rafael Tomelin, Thiago Lemos e Rudimar Remontti.
[3] Comentário enviado por bluesball em 20/11/2008 - 09:49h
pergunta boba... mas como sou iniciante nesse assunto....ai vai:
os meus link sao iguais em termos de velocidade...
aqui:
#A regra abaixo é responsável pelo balanceamento com peso 2:1, porque a gvt é 2x mais rápida que o link da brt
ip route add default scope global nexthop via 192.168.1.1 dev eth1 weight 2 nexthop via 192.168.2.1 dev eth2 weight 1
basta eu alterar o weight 2 pra weight 1 pra ficar com peso de 1:1???
[7] Comentário enviado por info24hs em 21/11/2008 - 14:07h
1- Optei por específicar a saída dos pacotes para forçar a saída por determinado link, no caso da porta 80 e 443 são portas de acesso a bancos, se eu não tivesse marcado elas daria problema nas conexões seguras com os, pra vc entender:
O primeiro contato é feito pela porta 80 depois muda para a porta 443 usando o link1 depois muda para o link2 ai o banco bloqueia.
Por isso é necessário garantir que a porta 80 e a 443 saiam pelo mesmo link sempre. Pelo que pude notar no caso do banrisul é mais problemático ainda, na propria abertura da pagina principal ja dá problema antes mesmo que começar uma conexão segura..
No caso das portas 110 (POP3), 25 (SMTP) optei em forçar para o link diferente do 80 para deixar mais livre do trafego dos email pesados com bobagens.
Em resumo não há balanceamento para essas portas marcadas...
[10] Comentário enviado por pliniodemarco em 25/11/2008 - 10:43h
Quero fazer algo parecido.
Não seria melhor utilizar os modens em modo bridge e o servidor ficar direto com o IP propagável em vez de deixar ambos como router e ainda ter o servidor?
Qual motivo que levou voce a deixar assim?
Obrigado.
[12] Comentário enviado por netstryker em 16/03/2009 - 14:13h
Excelente artigo, muito útil pra minha situação atual.
Sou muito leigo em Linux e estou investindo pesado para aprender mais, porém estou precisando fazer esse balanceamento na empresa em que trabalho.
1) Para o cenário que você explicou aqui, como eu deveria configurar a minha interface de rede "/etc/network/interfaces"?
2) Tenho dois links NET Virtua de 12MB com IP's dinâmicos. Preciso fazer não só o balanceamento, mas também a rede da empresa, cada máquina terá que ter seu próprio IP, pois terei que fazer um proxy e configurar certas regras para cada usuário. Neste cenário há algo que eu deva mudar ou adaptar, ou do jeito que você ensina funcionaria?
3) Para eu ter uma rede interna com cada máquina de usuário com IP e ainda utilizar um proxy, a eth2, que no meu caso será a rede interna tem que estar configurada como DHCP ou IP fixo?
Me ajude por favor, pois estou na maior pressão para terminar esse servidor aqui.
Obrigado!
[13] Comentário enviado por info24hs em 16/03/2009 - 22:14h
Esse método é feito para quem tem ip fixo, se vc procurar na internet existe um script para ips dinamico da velox e talvez possa adaptar, em todo o caso poderia comprar 2 roteadores para ligar nos modens da virtua para ter ip fixo.
Sua rede interna (eth2) deve ser configurada com ip fixo.
Procure mais informações sobre redes, como compartilhar a internet no linux, dhcp3, bind, iptables, iproute, squid... existe muita documentação disponível..
[14] Comentário enviado por netstryker em 13/04/2009 - 16:44h
Obrigado pela sua resposta, mas quando eu disse que sou leigo, não sou tanto assim, entendo bem de redes, mas de Windows e quase nada de Linux. Eu sei que o seu tutorial é para IP's fixos, porém, cada modem do Virtua está ligado ao seu próprio roteador com IP LAN fixo. Eu fiz tudo exatamente como você explica e a minha situação não necessita de adaptação, pois é exatamente igual a explicada por você. A única coisa que mudei foi os nomes dos provedores, onde substituí tudo que estava GVT por VIRTUA1 e BRT por VIRTUA2, mas tive o cuidado de alterar tudo corretamente em cada arquivo de configuração. Também optei por não usar o Radmin 3 por não haver interesse na empresa a acesso remoto.
O servidor está OK, link 1 do Virtua na eth1, link 2 do Virtua na eth2 e a eth0 configurada com o seguinte IP 192.168.0.1, que é a rede interna. Navego na internet sem problemas pelo Firefox do servidor com os dois links em balanceamento, mas quando configuro os gateways das máquinas cliente na rede, apontando para o IP da eth0 192.168.0.1, as máquinas não acessam a internet.
Não sei se há algo de errado nas configurações dos meus arquivos do Linux, o qual já revisei umas três vezes, ou se estou fazendo algo de errado na configuração das máquinas cliente Windows, o que acho pouquíssimo provável.
Preciso saber também, baseado nas corretas configurações dos arquivos do Linux, como devo configurar corretamente as máquinas cliente Windows?
Em um futuro muito próximo terei que fazar o proxy com o Squid, mas para tal devo resolver esse problema primeiro.
Eu poderia te mandar por e-mail os meus arquivos de configuração e os screenshots para que você verifique se há algo de errado??
Eu te peço ajuda pois não tenho mais a quem recorrer e estou sendo muito pressionado aqui na empresa para solucionar isso.
[16] Comentário enviado por netstryker em 14/04/2009 - 16:20h
Obrigado pela sua sugestão, mas o bind9 já estava instalado, porém eu não fiz nenhuma configuração nele por não saber como. Apenas adicionei o 127.0.0.1 no resolv.conf mas não adiantou, acredito que seja algum problema em algum arquivo de configuração do balanceamento.
Eu te mandei de manhã os meus arquivos de configuração para o seu e-mail informado aqui, o do IG, agora só me resta esperar a sua resposta depois de analisar os arquivos, pois não sei mais o que fazer.
Lembre-se, sinta-se a vontade para modificar corrigindo o que for necessário.
Uma pergunta, eu terei que usar o servidor DHCP do Linux também??
[17] Comentário enviado por info24hs em 14/04/2009 - 20:53h
Pelo que lí no seu arquivo de configuração do firewall esta faltando a regra de compartilhamento de internet, interessante ter o bind9 e o dhcp3 instalado.
O bind já vem pré-configurado só precisa ter ele rodando..
O arquivo /etc/resolv.conf deve estar somente com a linha "nameserver 127.0.0.1" sem aspas
Quanto as máquinas windows precisa configurar o ip, mascara, gateway e dns (192.168.0.1)
Procure ler mais sobre compartilhamento de internet no linux
[18] Comentário enviado por netstryker em 15/04/2009 - 09:49h
OK, mais uma vez obrigado!
- Não vou alterar as configurações do bind9 e o deixarei rodando com as pré-configurações padrão...
- O "resolv.conf" já está como você me informou
- Vou instalar o dhcp3, mas é necessário configurá-lo, ou ele já vem pré-configurado como o bind9?
- Quanto as configurações das máquinas Windows OK
Hoje é o último dia que tenho aqui na empresa para conseguir resolver este problema, por favor, seria possível você me informar a regra de compartilhamento de internet que está faltando no meu arquivo de firewall, o "firewall.sh". Eu não terei tempo hábil de pesquisar sobre isso, pois como eu falei, meu prazo acaba hoje.
Por fim, você saberia me indicar uma matéria, tutorial, qualquer coisa de boa qualidade que ensine sobre compartilhamento de internet no linux?
[19] Comentário enviado por info24hs em 15/04/2009 - 13:28h
Cara me contacte no msn que te dou as dicas, quanto aos lugares de pesquisa, vc esta no site certo VOL, pode pesquisar tmb no under linux, precisa tmb configurar o dhcp3 ele não vem pré configurado.
[20] Comentário enviado por rodrigoow em 12/05/2009 - 13:14h
Olá, estou implementando esse artigo em um debian 5.0 lenny
Quando executo o gwping, aparece esse erro:
./gwping
Switching to adsl
RTNETLINK answers: No such file or directory
RTNETLINK answers: No such file or directory
./gwping: line 25: syntax error near unexpected token `elif'
./gwping: line 25: `elif [[ $LLS1 -eq 0 && $LLS2 -eq 1 ]]; then '
[23] Comentário enviado por kleberdexter em 09/10/2009 - 11:07h
E ae cara tudo blza?
Cara no seu firewall vc fez - iptables -t nat -A POSTROUTING -o $ETH -s $LAN -j MASQUERADE - , assim vc faz nat da rede inteira correto?
Seguinte , se eu tiver usando o squid , ai eu farei ao inves do nat total somente um multiports das portas necessárias(25,110 etc) pq se eu fizer nat total da rede o pessoal vai acessar a internet sem passar pelo squid...
até ai tudo bem...
dessa forma o squid ira entrar no balanceamento?
desde já, obrigado.
[24] Comentário enviado por tosko em 05/07/2010 - 10:45h
me explica uma coisa, porque vc fez o balanceamento dos links no começo do seu artigo (ip route add default scope global nexthop via 192.168.1.1 dev eth1 weight 2 nexthop via 192.168.2.1 dev eth2 weight 1) sendo que depois vc faz um script que determinados pacotes vai passar por tal porta e outros pacotes passem por outra (80, 443, 110,...). de nada vai te valer este balanceamento no começo se depois os pacotes vão ter rotas especificas para passar.
outra coisinha:
# Fundamental estar desabilitado para funcionar o roteamento com 2 links
echo "0" > /proc/sys/net/ipv4/conf/default/rp_filter
[26] Comentário enviado por jlpnge em 06/01/2011 - 20:07h
Primeiramente Parabéns pelo artigo muito bem explicado muito bom mesmo
to com uma duvida estou tentando ajuntar em um mesmo servidor linux Ubunut 10.10 Server 2 links adsl este script funciona no unbuntu tenho que trocar alguns comandos ou não
[27] Comentário enviado por julio.cardoso em 27/03/2011 - 09:00h
Bom dia!
Tambem tenho uma situação parecida.
Tenho dois links de velocidades iguais,porem um deles, tenho ip real, o qual utilizo muitos serviços nele. Porem quando ativei o outro link, coloquei peso 1:1 e verifiquei que o acesso externo que antes do balanceamento era normal, agora nao consigo.
Sera que a solução seria colocar o peso 2:1 para o link onde tenho o ip real ?
[29] Comentário enviado por fajo em 04/07/2012 - 08:22h
Primeiramente, parabéns pelo artigo.
Tenho algumas dúvidas:
1º - A configuração faz a soma das velocidades dos 2 links?
2º - No caso das exceções(marcação de pacotes) não será feito balanceamento, correto?
3º - Se um link cair as marcações q estavam para este link serão distribuidas para o outro, ou não mais funcionarão até o link voltar?
4º - Eu fiz realizei essa configuração e estou notando que algumas vezes a conexão é resetada no meio do carregamento da página(não coloquei a porta 80 na marcação), acredito q seja por isso, mas, não fiz por receio da dúvida nº 2.
[30] Comentário enviado por cgonzagaskill em 15/02/2014 - 09:49h
OLá Cristiano!
Parabéns pelo post.. Porém estou precisando realizar uma seguinte configuração!! um servidor debian 3(três) placa de rede e 1 uma para rede interna e as duas para acesso link adsl velox modens em bridge e ainda preciso garantir acesso externo. É possível realizar uma redundância garantindo o em caso de queda o outro link que estiver OK assuma automaticamente mesma da mesma operadora...
[31] Comentário enviado por giuseppeinfo em 25/02/2014 - 12:02h
Bom dia, desculpe se a minha pergunta é meio idiota , vejam se estou correto , definimos a saída de porta 80, 443 pelo LINK X e caso esse link caia. Ele passa a responder pelo LINK Y ou teremos que mudar manualmente?