Proxy reverso e balanceamento de carga utilizando o Pound

Muitas vezes é necessário utilizarmos empacotamento SSL em servidores WEB, mas nem sempre é possível porque vários tipos de servidores não oferecem esta funcionalidade ou não são tão seguros como gostaríamos. Este artigo ensina o conceito e configuração do Pound, uma excelente solução para proxy reverso e balanceamento de carga.

[ Hits: 30.860 ]

Por: Gilberto Russo em 07/09/2006


Configuração



O Pound não vem com um arquivo de configuração padrão, portanto você deverá criar um arquivo .cfg manualmente.

# vi /etc/pound.cfg

User "pound"
Group "pound"
Daemon 1
LogLevel 2

ListenHTTPS
    Address 200.200.200.200
    Port 46908
    Cert "/usr/local/etc/certificado.key"
    WebDAV 1

    Service
      HeadRequire "Host: 200.200.200.200"
      URL "zemane*"
      BackEnd
          Address 192.168.10.15
          Port  80
      End
    End

    Service
      HeadRequire "Host: www.meusclientes.com*"
      BackEnd
      Address 192.168.10.79
      Port  80
      Priority 1
    End

End

Onde:
  • User e Group - Definir qual usuário irá cuidar do processo do Pound;
  • LogLevel = Nível de log que o Pound irá gerar.

Note que o arquivo de configuração do Pound tem o formato de abrir e fechar sessão.

A primeira coisa que você deverá configurar é qual sessão principal você estará criando:

ListenHTTP
ou
ListenHTTPS

Criando uma sessão HTTP você apenas deverá acrescentar as linhas:
  • Address - Endereço IP do link;
  • Port - Porta que Apache irá responder;
  • WebDAV - Habilitar suporte WebDAV.

Se estiver usando HTTPS para que o Pound faça um tunelamento criptografado com geração de certificado, você deverá acrescentar a linha 'cert' indicando o caminho do certificado.

Para gerar um certificado você precisará do openSSL instalado no sistema:

# openssl req -x509 -newkey rs:1024 -keyout server.key -out server.key -days 365 -nodes

Para cada servidor Apache que o Pound irá gerenciar relacionado ao seu link definido em ListenHTTP você deverá adicionar uma sessão de Service apontando o servidor interno que ele irá repassar as requisições:

   Service
      HeadRequire "Host: www.meusclientes.com*"
      BackEnd
      Address 192.168.10.79
      Port  80
      Priority 1
    End

Onde:
    HeadRequire - Endereço WEB; Address - IP do Servidor Interno; Port - Porta do Servidor WEB.

Caso você não tenha DNS resolvendo os redirecionamentos, o Pound oferece a opção de realizar redirecionamentos por palavras definidas na URL no browser:

   Service
      HeadRequire "Host: 200.200.200.200"
      URL "zemane*"
      BackEnd
      Address 15.15.15.16
      Port  80
    End

Onde:
  • URL - Palavra-chave que será usado na URL para que o Pound redirecione.

Após feita toda a configuração do arquivo, lembrando que você poderá adicionar vários Services, você só deverá verificar se em seu arquivo de configuração não existe erro de sintaxe:

# pound -v -c -f /etc/pound.cfg

Config file pound.cfg is OK

Onde:
  • v - Verbose (mostrar detalhes);
  • c - Check (apenas checar o arquivo);
  • f - File (indicar a localização do pound.cfg).

Agora basta criar um daemon para que o Pound faça parte dos serviços que irão ser iniciados na inicialização do sistema:

# vi /etc/init.d/pound

#!/bin/bash
# Daemon do Pound (Proxy Reverso e Balanceador)
start () {
   echo "Iniciando o Pound"
   /usr/local/sbin/pound -f /etc/pound.cfg &
}
stop () {
   echo "Finalizando o Pound"
   pkill -9 pound
}

case "$1" in
   start) start
   ;;
   stop)  stop
   ;;
   *) echo "Uso: pound (start|stop)"
   ;;
esac

Crie um link do daemon no diretório do seu runlevel:

# runlevel
N 3

# ln -s /etc/init.d/pound /etc/rc3.d/S99pound

Para finalizar basta reiniciar a máquina, verificar se o serviço iniciou normalmente e testar via browser se ele realmente está redirecionando os sites.

Página anterior    

Páginas do artigo
   1. Apresentação
   2. Configuração
Outros artigos deste autor

Firewalls redundantes utilizando VRRP

Acesso remoto utilizando FreeNX

Osiris - Integridade do sistema de arquivos

Instalando o Squid + SquidGuard

KnowledgeTree - Um Gerenciador Eletrônico de Documentos funcional

Leitura recomendada

TOR: A Internet sem rastreabilidade

Gaim + Gaim Encryption - Bate-papo com segurança

Melhorando a segurança de servidores GNU/Linux (Parte 1)

Entenda o que é Hardening

Como saber se houve uma invasão

  
Comentários
[1] Comentário enviado por thelinux em 11/09/2006 - 12:48h

Nota 10. Excelente.

[2] Comentário enviado por helderam em 24/02/2007 - 08:02h

Ola,

Beixei o pound e fiz conforme recomendado. Porem na hora de fazer o .configure apareceu uma mensagem de erro:

checking for BIO_new in -lcrypto... no
Missing OpenSSL (-lcrypto) - aborted

Alguem pode me ajudar ?
Grato,
Helder

[3] Comentário enviado por gilberto.russo em 24/02/2007 - 10:54h

Helder,

vc instalou o OpenSSL completo? Pois ele é um pré-requisito do POUND e o responsável pela segurança das conexões.

Att.,

Gilberto Russo

[4] Comentário enviado por Fcesarsousa em 13/09/2011 - 16:09h

Boa tarde!

Caro Gilberto,

Estou instalando um servidor Pound em uma maquina com o Cent OS e esotu seguindo o seu artigo. Consegui chegar até a marte da compilação mas quando dei o comando MAKE e e mseguida o MAKE INSTALL ele me retornou a seguinte mensagem "-bash: Make: command not found".

Executei ele apartir do diretorio "/usr/local/src/Pound-2.5" este ultimo é onde estão os arquivos descompactados.

Gostaria de uma ajuda. O que fazer neste caso? será que faltou alguma coisa?

Grato,

César Sousa.

[5] Comentário enviado por patronks em 13/09/2012 - 09:17h

Bom dia,

Gilberto, utilizo o Pound e tenho uma dúvida, seria possível por exemplo, receber conexões em com um nome e direcionar para outro, vou dar o exemplo abaixo para facilitar. Precisamos desta configuração, pois temos uma aplicação que roda em webserver próprio e não conseguimos alterar as configurações>

URL acessada de fora: http://www.externo.com.br/XXXXXXX
URL a ser direcionada internamente: http://192.168.0.1/YYYYYYYYY

Talvez não tenha ficado claro a explicação, mas seria receber conexões em uma pasta (/) e direcionar para outra.

Obrigado.

Paulo Henrique.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts