DNS sobre túnel SSH

DNS sobre túnel SSH

Quero configurar meu sistema OSX de forma que todo o tráfego de rede seja feito através de um túnel SSH.

Escrevi um pequeno script para esse propósito e estes são os comandos executados por ele:

# setup tunnel
ssh -fN -D 1080 -p 22 user@remote

# start up redsocks
sudo redsocks -c /tmp/redsocks.conf -p /tmp/redsocks.pid

# forward all tcp traffic to tunnel
sudo ipfw add 0010 \
    fwd 127.0.0.1,12345 \
    tcp from me \
    to any not dst-port 12345 \
           not dst-port 1080 \
           not dst-ip REMOTE_IP

Eu uso redsocks para criar um proxy http para meu túnel ssh (para que eu possa encaminhartodostráfego tcp para ele via ipfw), redsocks.conf se parece com isto:

base {
    log_debug = on;
    log_info = on;
    log = "file:/tmp/redsocks.log";
    redirector = generic;
}
redsocks {
    local_ip = 127.0.0.1;
    local_port = 55660;
    ip = 127.0.0.1;
    port = 1080;
    type = socks4;
}

Tudo parece funcionar até agora, todo o tráfego TCP no meu sistema OSX é feito através do túnel ssh, mas o problema é com o tráfego UDP e por causa disso as consultas DNS não estão funcionando.

Como posso fazer com que o DNS da minha máquina local funcione através do túnel SSH?

Responder1

Sua ipfw …linha encaminha apenas tráfego TCP. Talvez adicione a seguinte linha?

sudo ipfw add 0011 fwd 127.0.0.1,12345 \
                   udp from me \
                   to any not dst-port 12345 \
                          not dst-port 1080 \
                          not dst-ip REMOTE_IP

Também é uma boa ideia adicionar set -x(para depuração) e set -e(para falhar imediatamente se algum dos comandos falhar).

  • Geralmente, deve-se usar o termo 'túnel SSH' para se referir a tun/ tapcom SSH.
  • O encaminhamento de porta é uma forma específica de tunelamento, mas ainda deve ser chamado apenas de 'encaminhamento de porta' neste contexto.
  • Não use tunelamento SSH (como em -oTunnele -oTunnelDevice), exceto para trabalhos ad-hoc rápidos.
  • O DNS pode usar o TCP como transporte. Não está restrito ao UDP, embora esse seja opreferidotransporte.

Responder2

Usartransporteem vez de? sshuttle afirma lidar com DNS e TCP corretamente, sem essa quantidade de manipulação - apenas a --dnsopção.

IME SOCKS parecia um pouco velho e mal amado. E eu realmente não entendo esse uso de ipfw e redsocks.

No entanto, gostaria de salientar que o SOCKS4 não suporta tunelamento de DNS, por isso não estou surpreso que você esteja tendo problemas. Versões subsequentes do SOCKS suportam isso, então você pode dar uma olhada nisso. E aparentemente o SSH pode suportar SOCKS5.

Responder3

Além do que você já utiliza, o sSH permite tunelar todo o tráfego IP, independente do protocolo da camada 4 empregado. Seu servidor remoto deve ter PermitTunnel yese o cliente deve solicitar um túnel usando a Tunneldiretiva. Então você pode usar esse novo link como seu gateway padrão. Verinstruções detalhadas para o túnel aqui.

informação relacionada