Si j'utilise SSH pour un proxy SOCKS, les connexions DNS le traversent-elles?

14

J'utilise ssh -D 8080 my serverpour créer un proxy SOCKS. Je configure ensuite OS X pour l'utiliser localhost:8080comme proxy SOCKS. J'utilise ceci pour accéder à Internet sans être surveillé.

J'utilise les serveurs DNS de Google (8.8.8.8), mais comment puis-je m'assurer que les requêtes DNS passent par le tunnel SSH?

Jason Marzst
la source
1
"sans être surveillé" est une illusion
machineaddict

Réponses:

22

Je sais que la réponse est un peu tardive, mais pour la référence et pour ceux qui recherchent toujours la réponse,

Définissez la network.proxy.socks_remote_dnspropriété dans la configuration de Firefox (tapez about: config dans la barre d'adresse) sur VRAI (double-cliquez simplement sur la propriété pour basculer la valeur) pour activer les recherches DNS sur votre proxy socks5 local / distant.

PS: je ne suis pas sûr des autres navigateurs :(

Jimson Kannanthara James
la source
1
Pour ceux qui préfèrent l'interface utilisateur, cela se trouve dans Préférences → Avancé → onglet Réseau → bouton Paramètres (pour "Connexions") → "Proxy DNS lors de l'utilisation de SOCKS v5".
jwd
J'ai remarqué que DNS ne passe PAS par proxy pour HTTP, mais cela fonctionne pour HTTPS. Comment cela peut-il être le cas? Est-ce que c'est conçu? (J'utilise Firefox)
Eugene D.Gubenkov
8

S'il s'agit d'un proxy SOCKS 5 et que le programme client le prend en charge, DNS passera par le proxy. La plupart des navigateurs prennent en charge DNS via un proxy Socks 5, mais peuvent nécessiter une configuration spéciale pour le faire.

Si votre objectif est la confidentialité sur le Web, vous devriez vraiment utiliser quelque chose comme privoxy . Privoxy nettoiera les en-têtes de vos demandes Web et garantira que tout le trafic, y compris DNS, passe par le proxy Socks 5. Exécutez privoxylocalement et vous pouvez utiliser sshpour tunneler le trafic Socks 5.

David Schwartz
la source
2

Vous ne pouvez pas le faire hors de la boîte car le tunnel SSH est uniquement pour les connexions TCP / IP - le trafic UDP ne pourra pas traverser ce tunnel sans une configuration spéciale. Fondamentalement, vous devez créer un fifo pour faire un peu de ruse avec netcat comme décrit ici . Vous pouvez alors utiliser le DNS de Google à partir de la zone distante.

pfo
la source
1

Comme mentionné ci- dessus , vos recherches à l'échelle du système ne sont pas tunnelisées .

Si vous voulez une solution basée sur SSH, vous pouvez vous inspirer d' ici ou d' utiliser SSHuttle (par exemple , mentionné ici ). Il existe un correctif pour transmettre facilement les requêtes DNS.

YMMV, mais j'ai eu du succès avec ce qui suit:

#!/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
Frederick Nord
la source
0

Comme le dit pfo, les tunnels SSH sont uniquement destinés au trafic TCP et l'application doit être consciente des proxys SOCKS.

Si vous voulez que tout soit tunnelé, vous avez besoin d'un VPN approprié. Jetez un œil à quelque chose comme OpenVPN .

James O'Gorman
la source
0

Cela dépend de votre application. Firefox, par exemple, envoie le nom d'hôte au proxy SOCKS sans le résoudre. Dans ce cas, vous n'avez rien à faire pour la confidentialité. Vous pouvez le confirmer par Wireshark.

PS. supposons que vous utilisez un proxy SOCKS5. SOCKS4 ne prend pas en charge le nom d'hôte.

okwap
la source