Ir para o conteúdo
ou

Software livre Brasil

0 integrantes

Nenhum(a)

Red Hat Magazine

redirection forbidden: http://www.redhat.com/magazine/rss20.xml -> https://www.redhat.com/magazine/rss20.xml

 Voltar a torontux
Tela cheia Sugerir um artigo

HTTPS no Load Balance de Link

6 de Maio de 2010, 0:00 , por Software Livre Brasil - 0sem comentários ainda | Ninguém está seguindo este artigo ainda.
Visualizado 495 vezes
   Resolvi escrever este pequeno post porque caso você tenha implementado um load balance de link de internet, pode estar enfrentando problemas com sites que utilizam HTTPS. O problema ocorre porque este tipo de protocolo, por medidas de segurança, não aceita que a mesma sessão venha de ip`s direferentes e como seu servidor está mandando pacotes aleatoriamente entre dois ou mais links distintos, com certeza terá problemas com o SSL.
   Felizmente a resolução deste problema é simples! Basta marcar através do iptables os pacotes da porta 443 (https) para que eles passem sempre pelo mesmo link, adicionando eles na nova tabela de roteamento criada anteriormente para tornar possível o load balance. Vamos usar apenas uma regra de iptables e outra de iproute, assumindo que seus clientes já estão navegando e as regras de FORWARD e NAT já estão corretas.
OBS1: Estou utilizando o exemplo do HTTPS, contudo caso tenha problemas com outros serviços, as mesmas regras se aplicam a outros protocolos.

Mão na massa!

   Em primeiro lugar precisamos escolher por qual dos links todo o tráfego SSL vai passar, faça isso escolhendo uma das tabelas de roteamento criadas no arquivo rt_tables.

cat /etc/iproute2/rt_tables

#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
10      LINK_A
20      LINK_B

   No meu caso eu criei as tabelas LINK_A e LINK_B onde escolhi a segunda opção para trafegar os pacotes criptografados do https. Sabendo qual tabela vamos usar, vamos criar a regra de firewall que vai marcar os pacotes para que possamos manipulá-los livremente.


iptables -A PREROUTING -t mangle -p tcp -m tcp --dport 443 -j MARK --set-mark 0x1

   Com esta regra, estamos dizendo que todos os pacotes TCP com destino a porta 443 vão ser marcados com o valor 0x1.
OBS: A única tabela que permite este tipo de marcação é a mangle, não vamos abordar aqui as tabelas do iptables mas asseguro que existe muita documentação sobre o assunto.

   Vamos agora dizer que todos os pacotes marcados com o valor 0x1 vão ser direcionados para tabela escolhida, para isto basta digitar uma linha de comando:

ip rule add prio 11 fwmark 0x1 table LINK_B

Pronto! Basta limpar o cache das rotas e aproveitar.

ip route flush cache

;)
Fonte: http://torontux.blogspot.com/2010/05/https-no-load-balance-de-link.html

0sem comentários ainda

Enviar um comentário

Os campos são obrigatórios.

Se você é um usuário registrado, pode se identificar e ser reconhecido automaticamente.