Redirecionando uma porta ativa

2

Ambiente: Servidor da Web que solicita páginas em uma porta específica de um servidor de aplicativos.

Problema: Se uma solicitação de página entrar no servidor de aplicativos durante a reinicialização de um determinado aplicativo da Web em execução no servidor de aplicativos, a inicialização será corrompida.

Pergunta: É possível incluir algum tipo de bloqueio na porta específica (ou redirecionamento) no início do script de shell que inicia o aplicativo da web? Isso teria que funcionar "on the fly" e, claro, ser revertido no final do script de shell para que, assim que o aplicativo estivesse ativo e em execução, as solicitações fluíssem normalmente.

    
por Dale 20.08.2013 / 22:17

1 resposta

0

Na máquina do servidor de aplicativos:

Antes de iniciar o aplicativo:

iptables -I INPUT -d <app server ip> --dport <app server port> -j REJECT

Após a conclusão da inicialização:

iptables -D INPUT -d <app server ip> --dport <app server port> -j REJECT

Se desejar, você pode redirecionar o tráfego para outro servidor que diria "app is loading". Se for esse o caso, substitua:

-j REJECT

com

-j DNAT --to-destination <ip address of other machine>

em ambos os comandos. Note que você precisará do IP Forwarding ativado se fizer isso. Precisa configurar:

net.ipv4.ip_forward = 1

em /etc/sysctl.conf

Isso entraria em vigor na próxima inicialização. Para aplicar no sistema em execução imediatamente:

echo 1 > /proc/sys/net/ipv4/ip_forward

Você também pode precisar mascarar o tráfego que sai do seu servidor de aplicativos em direção ao servidor, para parecer que o servidor de recebimento é originário dele (por exemplo, reescreva o endereço IP de origem). Você pode fazer isso por:

iptables -t nat -I POSTROUTING -o <interface traffic will get out> -j MASQUERADE

Outra opção é que, se você tiver outro servidor na mesma máquina que o servidor de aplicativos, em uma porta diferente, que possa exibir a "página de carregamento do aplicativo", você poderá redirecionar o tráfego para essa porta. Mesma ideia, apenas em vez de REJECT / DNAT:

-j REDIRECT --to-port <other local server port number>

Esta opção não requer a conversão do seu servidor de aplicativos em um roteador :) (não é necessário o ip_forward)

    
por 22.08.2013 / 01:52