Redirecionar com iptables se a porta de destino não for ouvida

1

Eu tenho um servidor escutando na porta 10000. Mas este servidor está rodando apenas em um caso especial (então algum terceiro serviço está disponível). Caso contrário, a porta não será ouvida. É possível redirecionar o cliente para outra porta se 10000 não estiver escutando?

Eu vejo duas soluções: 1) inserir / remover regras de iptables no início / parada do servidor, mas como o servidor pode ser eliminado, ele não pode inserir a regra de redirecionamento iptable correta antes de morrer.

2) faça uma regra de espaço de usuário permanente que verifique se a porta está ouvindo e redireciona o pacote se não for escutado.

Como fazer 2)? Alguém tem receitas para o ipq?

Alguém pode me sugerir uma maneira melhor?

É algo como redirecionamento de fallback: eu terei milhares de clientes com portas diferentes (10000-11000) e se a instância do servidor não estiver em execução, o soro deve ser redirecionado para alguma página explicando por que eles não têm e instância conectada.

    
por PoltoS 07.03.2011 / 22:43

2 respostas

1

Use a correspondência -m socket .

Consulte esta página da Web para obter algumas instruções mais explícitas: link

    
por 08.03.2011 / 11:21
1

Acho que uma opção melhor é usar um balanceador de carga, como o haproxy. Você pode configurá-lo para escutar em várias portas e usar diferentes servidores back-end.

Para implementar a funcionalidade de redirecionar o usuário para uma porta diferente (ou servidor diferente), você pode usar a opção backup no haproxy.

Esta é uma configuração supersimplificada para seus servidores front-end (clientes) e back-end:

frontend my_clients 0.0.0.0:10000
        acl its_ok always_true
        use_backend my_backend if its_ok
        default_backend my_backend
backend my_backend
        balance source
        server  server1 IP:port other options...
        server  server2 IP:port other options...

Como dito aqui , você pode usar a palavra-chave backup . Isso significa que o servidor de backup será usado somente quando não houver outro servidor que não seja de backup disponível.

Isso é usado principalmente para balanceamento de carga HTTP, mas eles dizem que ele pode ser usado para outros serviços baseados em tcp.

    
por 08.03.2011 / 08:24

Tags