Exclui uma interface ou endereço de loopback dos processos que estão escutando no endereço “qualquer”

2

Estou tentando criar uma configuração na qual posso conectar-me a algum serviço em execução em um host acessível apenas por meio de um proxy SOCKS pelo nome real do host e pela porta que o serviço realmente usa (para que o aplicativo tente usar esse serviço sem alterações). Para fazer isso, estou seguindo estas etapas:

  • Abra um túnel SOCKS usando uma conexão SSH para algum host intermediário, que tenha acesso ao host que está executando o serviço.
  • Atribua alguns endereços IPv6 não utilizados (por exemplo, fc00::1 ) ao dispositivo de loopback.
  • Use socat para abrir a porta usada pelo serviço que desejo alcançar nesse endereço e encaminhar solicitações de conexão para o proxy SOCKS.
  • Adicione uma entrada a /etc/hosts para o host que desejo alcançar e o endereço atribuído ao dispositivo de loopback.

Estou planejando automatizar todas essas etapas. Isso funciona muito bem, exceto por um problema; muitos serviços em execução em minha máquina local usam as mesmas portas que desejo alcançar nos hosts remotos (por exemplo, SSH, HTTP ...) e pelo menos por padrão eles escutam em todas as interfaces (isto é, usam o endereço "qualquer" 0.0.0.0 / %código%). Isso impede que qualquer outro processo abra a mesma porta, mesmo em apenas um endereço específico. Alguns serviços, eu posso reconfigurar para escutar apenas os endereços de loopback originais ( ::0 / 127.0.0.1 ), mas para alguns serviços, como o SSH, não faz sentido e para alguns aplicativos de uso do usuário eu uso, eu posso controle de evento que abre portas usando endereços.

Uma solução concebível seria se fosse possível marcar uma interface (eu poderia criar um segundo dispositivo de loopback) ou um endereço para não ser usado por processos que especificam o endereço "qualquer" ao abrir um soquete de escuta.

Isso é possível ou existe alguma outra maneira de contornar esse problema?

    
por Feuermurmel 15.09.2014 / 22:18

0 respostas