Uma aplicação não tem opção SOCKS, mas pode ligar-se a um endereço TCP escolhido. Um adaptador de alvo fixo pode fornecer a conversa SOCKS para um destino. Não precisa de se tornar outro proxy de encaminhamento genérico.

Para compilações de socat que oferecem SOCKS4A, uma disposição ilustrativa é:

socat TCP4-LISTEN:9443,bind=127.0.0.1,reuseaddr,fork \
  SOCKS4A:127.0.0.1:service.example.net:443,socksport=1080

O ponto final SOCKS é a porta local 1080. O adaptador escuta na porta local 9443 e pede a esse ponto final service.example.net:443. São valores de exemplo, não uma implementação completa do serviço.

O adaptador tem um alvo fixo

Cada ligação TCP aceite pede o mesmo serviço. Uma aplicação que se liga a 9443 fornece os seus bytes de protocolo normais; o socat fornece a negociação SOCKS4A. Enviar um novo pedido HTTP CONNECT para 9443 não escolheria outro destino—enviaria esses bytes para o serviço fixo.

O SOCKS4A fornece um nome de host ao ponto final SOCKS para resolução remota. Isso difere da forma SOCKS4 que usa um endereço escolhido pelo cliente. O upstream escolhido—incluindo um candidato público da lista de proxies SOCKS4—tem de suportar o tratamento de nomes de host SOCKS4A e a autenticação exigida; este exemplo não é uma receita de início de sessão com palavra-passe SOCKS5.

Ligue-se localmente, identifique o serviço real

Alterar um URL HTTPS para https://127.0.0.1:9443/ altera o nome de host que o cliente pode usar para TLS e HTTP. Um certificado para service.example.net não se tornará num certificado válido para loopback.

Onde o cliente suporta encaminhamento de ligação separado, mantenha a identidade do URL original. O Curl pode ilustrar essa distinção:

curl --noproxy '*' \
  --connect-to service.example.net:443:127.0.0.1:9443 \
  https://service.example.net/

O socket vai para o adaptador local enquanto a verificação TLS e o destino HTTP continuam a ser service.example.net. Outras aplicações precisam do seu próprio controlo equivalente suportado; nem todos os clientes o fornecem.

A ligação loopback limita a exposição de rede, mas outros processos locais elegíveis ainda podem alcançá-la. Mantenha a vida útil do serviço e os utilizadores adequados. Preserve a verificação TLS em vez de suprimir o erro de identidade causado por um URL de loopback.

Artigos relacionados