A solicitação de DNS do proxy 'ssh -D'?

3

A resolução de DNS é encapsulada para a outra extremidade quando eu uso um proxy SOCKS criado com ssh -D ? Eu li o manual, pesquisei na Internet e não encontrei nenhuma documentação relevante.

    
por Siyuan Ren 04.05.2015 / 02:34

3 respostas

2

A resolução de DNS via Socks depende do cliente. Você tem que dizer explicitamente ao aplicativo para pesquisar DNS via Socks.

A resolução de nomes é, assim como a conexão com um host, feita por chamadas do sistema, como gethostbyname() ou getaddrinfo() .

A menos que seja instruído de outra forma, um programa pode apenas usar essa função para resolução de nomes, o que, é claro, não sabe sobre o seu túnel.

Por exemplo, o curl procura apenas DNS ao especificar socks5h:// , não apenas socks5:// .

    
por 03.01.2018 / 21:38
2

ssh -D trabalha em (via man ssh)

Specifies a local ''dynamic'' application-level port forwarding. This works by allocating a socket to listen to port on the local side

Então, o que é um soquete? via

A socket is just a logical endpoint for communication. They exist on the transport layer. You can send and receive things on a socket, you can bind and listen to a socket. A socket is specific to a protocol, machine, and port, and is addressed as such in the header of a packet.

E

Client have the ability to perform DNS lookups through socket proxy

Como fazer com o Firefox mozilla-kb

    
por 05.05.2015 / 09:37
2

Seu aplicativo pode usar o proxy SOCKS para resolver nomes conforme indicado aqui .

Se você está perguntando se pesquisas de todo o sistema são sintonizadas , então a resposta é não .

Se você controlar o lado do servidor, poderá iniciar um proxy UDP-para-TCP no seu cliente, conforme indicado aqui :

socat -T15 udp4-recvfrom:53,reuseaddr,fork tcp:localhost:5353

Em seguida, encaminhe a conexão TCP via SSH para o seu servidor, onde você inicia um daemon TCP-para-UDP:

socat tcp4-listen:5353,reuseaddr,fork UDP:nameserver:53

Você pode, com razão, desaprovar isso. Felizmente, existe SSHuttle (por exemplo, mencionado aqui ). Existe um patch para encaminhar consultas DNS facilmente.

YMMV, mas tive sucesso com o seguinte:

#!/bin/bash
# Taken from http://stackoverflow.com/questions/4594319/shell-replace-cr-lf-by-comma
DNSSERVERS=$(nmcli d show | grep DNS | awk '{print $2}' | sed -e 'H;${x;s/\n/,/g;s/^,//;p;};d' )
sshuttle  \
    -vvv                \
     --dns-hosts ${DNSSERVERS}   \
    -r server   \
    254.254.254.254/32
    
por 20.10.2016 / 05:16