Como rotear todas as conexões TCP de saída usando HTTP CONNECT no Linux

2

Eu tenho um sistema Linux que está por trás de um firewall, mas ele pode se conectar a um proxy HTTP que passa todos os comandos CONNECT. Como posso configurar o sistema Linux para fazer solicitações DNS através de TCP através do HTTP CONNECT, e para estabelecer todas as conexões TCP de saída (exceto aquelas para o proxy HTTP) através do HTTP CONNECT?

Estou procurando uma solução que funcione em qualquer processo, incluindo binários vinculados estaticamente que chamam socket(2) e connect(2) diretamente. (Portanto, LD_PRELOAD não é uma solução aceitável, porque não funciona com binários vinculados estaticamente).

    
por pts 30.05.2011 / 12:50

1 resposta

3

Dê uma olhada no Transocks , que pode interceptar conexões tcp com iptables e encapsulá-las através do Socks. Deve trabalhar com binários estáticos.

O DNS sobre TCP existe, mas é bastante fora do padrão para uso típico. Eu não acho que libnsswitch pode usar tcp, mas você poderia instalar um servidor de nomes local falando tcp dns. Você precisa garantir que você tenha um resolvedor recursivo em algum lugar do lado de fora que aceite tcp.

Se você estiver no controle de uma máquina externa, pode ser mais fácil configurar alguns vpn para encapsular o tráfego UDP; um openvpn tsocksified ou openssh com a opção -w.

    
por 30.05.2011 / 15:49