Balanceamento de links + redundância + acesso remoto + sites de bancos

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.

[ Hits: 105.985 ]

Por: Cristiano Landsmann em 19/11/2008


Configurando portas para acesso remoto e sites de bancos



Configurando portas da conexão interna para acesso remoto e conexão segura aos bancos.

Ex.: Acesso ao servidor remoto do IP 192.168.0.3 porta 4893.

# Firewall

#Carregar módulos
modprobe ipt_mark
modprobe ipt_MARK

#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.

Página anterior    

Páginas do artigo
   1. Introdução
   2. Balanceamento de link
   3. Redundância
   4. Configurando portas para acesso remoto e sites de bancos
Outros artigos deste autor

Squid - Níveis de bloqueio para usuários

Balanceamento de 3 links com redundância no Linux

Leitura recomendada

Configurando ADSL - Speedy Telefônica

Prevenindo acidentes com o comando RM

Servidor Jabber com Openfire + MySQL + Debian Lenny

Debmirror: Criando um repositório Debian na rede local

Batalha Apache, PHP e MySQL com vestígios de versão antiga

  
Comentários
[1] Comentário enviado por c.rafael em 19/11/2008 - 15:20h

info24hs ,

Muito bom, .......

quantos dias sem dormi? hehhehehe
teve que quebrar a cabeça para ficar tudo 100%.


[2] Comentário enviado por wellington79 em 19/11/2008 - 17:20h

Parabens muito legal !!! Vou tentar implementar ele aqui ...

[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???


[4] Comentário enviado por info24hs em 20/11/2008 - 10:21h

Exatamente meu amigo, não esqueça de alterar no rc.local e no gwping

Abraço..

[5] Comentário enviado por remontti em 21/11/2008 - 09:52h

Parabéns ficou bom!!!
To ainda com as suas conf no meu pc =P
Quero ver se aplico ela aqui quando surgir algo assim...
Ficou show!

[6] Comentário enviado por downloadd em 21/11/2008 - 13:37h

Dúvidas:

1. Porque você teve que marcar os pacotes?

2. Esta faltando o comando ping no script de redundâcia, não?

[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...

2- O comando ping existe sim olha bem o script de redundancia.. http://blog.taragana.com/wp-content/upload/gwping

Abraços..

[8] Comentário enviado por downloadd em 24/11/2008 - 01:30h

ah sim, nestes casos é preciso marcar os pacotes mesmo...

Você sabe se é possível especificar um range de portas que sairá por um link? Ou tenho que fazer porta por porta mesmo?

valeu

[9] Comentário enviado por info24hs em 24/11/2008 - 08:31h

Tem como sim, tipo:

iptables -A PREROUTING -t mangle -s 192.168.0.1,192.168.0.2 -d 0/0 -j MARK --set-mark 10

por ai vai..

[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.

[11] Comentário enviado por info24hs em 25/11/2008 - 10:49h

É uma questão de gosto, teria vários motivos para te dizer o que me leva a esta configuração.. sempre preferi usar modem adsl em modo router...

[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..

Espero ter ajudado...

Qualquer coisa estamos ai..

Abraço e valeu.

[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.

Desde já te agradeço. Abraço!

[15] Comentário enviado por info24hs em 13/04/2009 - 17:26h

cara instala o bind9, acho que é isso que ta te faltando, e no arquivo resolv.conf coloca 127.0.0.1
fica a vontade para enviar seus arquivos.

abraço.

[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??

Mais uma vez obrigado pela ajuda, abraço!!

[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?

Obrigado!

[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.

cristianoql@hotmail.com

[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 '

O que pode ser??

----------------EDIT----------

Baixei o script novamente e tudo certo.


[21] Comentário enviado por vinicius_argolo em 14/06/2009 - 20:45h

É possível implementar um controle de banda nesse exemplo?

[22] Comentário enviado por info24hs em 14/06/2009 - 21:39h

Sim, tenho rodando com gerenciamento de 3 interface.

[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

porque tem que estar desbilitado o rp_filter?

[25] Comentário enviado por removido em 24/10/2010 - 21:26h

@tosko
1- como ele já disse em um comentario acima, ele OPTOU por especificar as saidas dos pacotes, se você não quiser especificar não precisa.

2- o rp_filter tem que estar desabilitado pois se não o linux detecta o iproute2 como IP spoofing.

[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 ?

Abraços

[28] Comentário enviado por joorlando3 em 22/09/2011 - 17:01h

Bom dia!

Muito obrigado por compartilhar essas informações muito importantes e esclarecedoras, me auxiliou muito para desenvolver um escript com balanceamento.

[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.


Grato

[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...

Atenciosamente

Carlos Gonzaga

[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?

Obrigado

[32] Comentário enviado por agmarjunior em 18/11/2015 - 10:12h

Bom dia!
No script gwping o que seria as variáveis abaixo:
$GW2
$EXTIF2
$GW1
$EXTIF1
De onde o script vai puxar essas informações?
Obrigado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts