Wenn ich SSH für einen SOCKS-Proxy verwende, gehen DNS-Verbindungen durch?

14

Ich benutze ssh -D 8080 my server, um einen SOCKS-Proxy zu erstellen. Ich konfiguriere dann OS X localhost:8080als SOCKS-Proxy. Ich benutze dies, um auf das Internet zuzugreifen, ohne überwacht zu werden.

Ich verwende die DNS-Server von Google (8.8.8.8). Wie stelle ich sicher, dass DNS-Abfragen den SSH-Tunnel durchlaufen?

Jason Marzst
quelle
1
"ohne überwacht zu werden" ist eine Illusion
machineaddict

Antworten:

22

Ich weiß, die Antwort ist etwas spät, aber als Referenz und für diejenigen, die immer noch nach der Antwort suchen,

Setzen Sie die network.proxy.socks_remote_dnsEigenschaft in der Firefox-Konfiguration (geben Sie about: config in die Adressleiste ein) auf TRUE (doppelklicken Sie einfach auf die Eigenschaft, um den Wert umzuschalten), um DNS-Lookups über Ihren lokalen / Remote-Socks5-Proxy zu ermöglichen.

PS: Ich bin mir bei anderen Browsern nicht sicher :(

Jimson Kannanthara James
quelle
1
Für diejenigen, die die Benutzeroberfläche bevorzugen, ist dies unter Einstellungen → Erweitert → Registerkarte Netzwerk → Schaltfläche Einstellungen (für "Verbindungen") → "Proxy-DNS bei Verwendung von SOCKS v5".
Mittwoch,
Ich habe bemerkt, dass DNS NICHT über einen Proxy für HTTP geht, aber es funktioniert für HTTPS. Wie kann das sein? Ist das so wie geplant? (Ich benutze Firefox)
Eugene D. Gubenkov
8

Wenn es sich um einen SOCKS 5- Proxy handelt und das Client-Programm dies unterstützt, wird DNS den Proxy durchlaufen. Die meisten Browser unterstützen DNS über einen Socks 5-Proxy, erfordern jedoch möglicherweise eine spezielle Konfiguration.

Wenn Ihr Ziel Datenschutz im Web ist, sollten Sie wirklich so etwas wie Privoxy verwenden . Privoxy bereinigt die Header Ihrer Webanforderungen und stellt sicher, dass der gesamte Datenverkehr, einschließlich DNS, über den Socks 5-Proxy geleitet wird. Führen privoxySie sshdas Programm lokal aus und tunneln Sie den Socks 5-Datenverkehr.

David Schwartz
quelle
2

Das ist nicht sofort möglich, da der SSH-Tunnel nur für TCP / IP-Verbindungen vorgesehen ist. UDP-Verkehr kann diesen Tunnel ohne eine spezielle Einrichtung nicht passieren. Grundsätzlich müssen Sie ein FIFO erstellen, um einige Tricks mit Netcat auszuführen, wie hier beschrieben . Sie können dann Googles DNS von der Gegenseite verwenden.

pfo
quelle
1

Wie bereits erwähnt gibt es über Sie ist systemweite Lookups nicht getunnelt .

Wenn Sie eine SSH - basierte Lösung wollen, können Sie Inspiration erhalten hier oder benutzen SSHuttle (zB erwähnt hier ). Es gibt einen Patch zum einfachen Weiterleiten von DNS-Abfragen.

YMMV, aber ich hatte Erfolg mit den folgenden:

#!/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
quelle
0

Wie pfo sagt, sind SSH-Tunnel nur für TCP-Verkehr vorgesehen, und die Anwendung muss SOCKS-Proxys kennen.

Wenn Sie möchten, dass alles getunnelt wird, benötigen Sie ein ordnungsgemäßes VPN. Schauen Sie sich so etwas wie OpenVPN an .

James O'Gorman
quelle
0

Das hängt von Ihrer Anwendung ab. Firefox sendet beispielsweise den Hostnamen an den SOCKS-Proxy, ohne ihn aufzulösen. In diesem Fall müssen Sie aus Datenschutzgründen nichts unternehmen. Das können Sie mit wireshark bestätigen.

PS. Angenommen, Sie verwenden einen SOCKS5-Proxy. SOCKS4 unterstützt keinen Hostnamen.

okwap
quelle