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:
fc00::1
) ao dispositivo de loopback. 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. /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?
Tags proxy tcp network-interface