Jeśli używam SSH dla proxy SOCKS, czy połączenia DNS przechodzą przez to?

14

Używam ssh -D 8080 my serverdo utworzenia serwera proxy SOCKS. Następnie konfiguruję OS X do używania localhost:8080jako proxy SOCKS. Używam tego, aby uzyskać dostęp do Internetu bez monitorowania.

Korzystam z serwerów DNS Google (8.8.8.8), ale jak mogę się upewnić, że zapytania DNS przechodzą przez tunel SSH?

Jason Marzst
źródło
1
„bez monitorowania” to iluzja
machineaddict

Odpowiedzi:

22

Wiem, że odpowiedź jest nieco spóźniona, ale dla odniesienia i dla tych, którzy wciąż szukają odpowiedzi,

Ustaw network.proxy.socks_remote_dnswłaściwość w konfiguracji firefox (wpisz about: config w pasku adresu) na PRAWDA (wystarczy dwukrotnie kliknąć właściwość, aby przełączyć wartość), aby umożliwić wyszukiwanie DNS w lokalnym / zdalnym proxy Socks5.

PS: Nie jestem pewien co do innych przeglądarek :(

Jimson Kannanthara James
źródło
1
Dla tych, którzy wolą interfejs użytkownika, jest to w Preferencje → Zaawansowane → karta Sieć → przycisk Ustawienia (dla „Połączenia”) → „Serwer proxy DNS podczas korzystania z SOCKS v5”.
jwd
Zauważyłem, że DNS NIE przechodzi przez proxy dla HTTP, ale działa dla HTTPS. Jak to może być przypadek? Czy to jest tak zaprojektowane? (Używam Firefox)
Eugene D. Gubenkov
8

Jeśli jest to serwer proxy SOCKS 5 , a program kliencki go obsługuje, DNS przejdzie przez serwer proxy. Większość przeglądarek obsługuje DNS przez proxy Socks 5, ale może wymagać specjalnej konfiguracji.

Jeśli twoim celem jest ochrona prywatności w internecie, na pewno należy użyć czegoś podobnego privoxy . Privoxy oczyści nagłówki twoich żądań internetowych i zapewni, że cały ruch, w tym DNS, przechodzi przez serwer proxy Socks 5. Uruchom privoxylokalnie i możesz użyć sshdo tunelowania ruchu Socks 5.

David Schwartz
źródło
2

Nie można tego zrobić od razu po wyjęciu z pudełka, ponieważ tunel SSH jest przeznaczony tylko dla połączeń TCP / IP - ruch UDP nie będzie w stanie przejść przez ten tunel bez specjalnej konfiguracji. Zasadniczo musisz utworzyć FIFO, aby wykonać sztuczki z NetCat, jak opisano tutaj . Możesz wtedy użyć DNS Google'a z odległego pola.

pfo
źródło
1

Jak wspomniano tam , wyszukiwania w całym systemie nie są tunelowane .

Jeśli potrzebujesz rozwiązania opartego na SSH, możesz czerpać inspirację z tego miejsca lub użyć SSHuttle (np. Wspomnianego tutaj ). Jest łatka do łatwego przesyłania zapytań DNS.

YMMV, ale udało mi się:

#!/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
źródło
0

Jak mówi pfo, tunele SSH są przeznaczone tylko do ruchu TCP, a aplikacja musi być świadoma serwerów proxy SOCKS.

Jeśli chcesz wszystko tunelować, potrzebujesz odpowiedniej sieci VPN. Spójrz na coś takiego jak OpenVPN .

James O'Gorman
źródło
0

To zależy od twojej aplikacji. Na przykład Firefox wysyła nazwę hosta do serwera proxy SOCKS, nie rozwiązując go. W takim przypadku nie musisz nic robić dla prywatności. Możesz to potwierdzić przez wireshark.

PS. Załóżmy, że używasz proxy SOCKS5. SOCKS4 nie obsługuje nazwy hosta.

okwap
źródło