Jika saya menggunakan SSH untuk proxy SOCKS, apakah koneksi DNS melewatinya?

14

Saya menggunakan ssh -D 8080 my serveruntuk membuat proxy SOCKS. Saya kemudian mengkonfigurasi OS X untuk digunakan localhost:8080sebagai proxy SOCKS. Saya menggunakan ini untuk mengakses internet tanpa diawasi.

Saya menggunakan server DNS Google (8.8.8.8), tetapi bagaimana cara memastikan bahwa permintaan DNS melalui terowongan SSH?

Jason Marzst
sumber
1
"Tanpa diawasi" adalah ilusi
permusuhan

Jawaban:

22

Saya tahu jawabannya agak terlambat, tetapi untuk referensi dan bagi mereka yang masih mencari jawabannya,

Atur network.proxy.socks_remote_dnsproperti di konfigurasi firefox (ketik about: config di address bar) ke TRUE (cukup klik dua kali properti untuk beralih nilai) untuk mengaktifkan pencarian dns melalui proxy lokal / remote socks5 Anda.

PS: Saya tidak yakin tentang browser lain :(

Jimson Kannanthara James
sumber
1
Bagi mereka yang lebih suka UI, ini ada di Preferensi → Tingkat Lanjut → Tab Jaringan → Tombol Pengaturan (untuk "Koneksi") → "Proxy DNS saat menggunakan SOCKS v5".
jwd
Saya perhatikan bahwa DNS TIDAK pergi melalui proxy untuk HTTP, tetapi itu berfungsi untuk HTTPS. Bagaimana ini bisa terjadi? Apakah ini dirancang? (Saya menggunakan Firefox)
Eugene D. Gubenkov
8

Jika itu adalah proxy SOCKS 5 , dan program klien mendukungnya, DNS akan melewati proxy tersebut. Sebagian besar browser mendukung DNS melalui proxy Socks 5, tetapi mungkin memerlukan konfigurasi khusus untuk melakukannya.

Jika tujuan Anda adalah privasi di web, Anda harus menggunakan sesuatu seperti privoxy . Privoxy akan membersihkan tajuk permintaan web Anda dan memastikan semua lalu lintas, termasuk DNS, melewati proxy Socks 5. Jalankan privoxysecara lokal, dan Anda dapat menggunakan sshuntuk terowongan lalu lintas Socks 5.

David Schwartz
sumber
2

Anda tidak dapat melakukannya di luar kotak karena terowongan SSH hanya untuk koneksi TCP / IP - lalu lintas UDP tidak akan dapat melewati terowongan itu tanpa pengaturan khusus. Pada dasarnya Anda perlu membuat fifo untuk melakukan beberapa tipu daya dengan netcat seperti yang dijelaskan di sini . Anda dapat menggunakan DNS Google dari kotak ujung kemudian.

pfo
sumber
1

Seperti yang disebutkan di sana , pencarian sistem Anda tidak disetel .

Jika Anda menginginkan solusi berbasis SSH, Anda bisa mendapatkan inspirasi dari sini atau menggunakan SSHuttle (mis. Yang disebutkan di sini ). Ada tambalan untuk meneruskan permintaan DNS dengan mudah.

YMMV, tetapi saya telah berhasil dengan yang berikut:

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

Seperti dikatakan pfo, terowongan SSH hanya untuk lalu lintas TCP, dan aplikasi harus mengetahui proksi SOCKS.

Jika Anda ingin semuanya terowongan Anda perlu VPN yang tepat. Lihatlah sesuatu seperti OpenVPN .

James O'Gorman
sumber
0

Itu tergantung pada aplikasi Anda. Firefox, misalnya, mengirimkan nama host ke proksi SOCKS tanpa menyelesaikannya. Dalam hal ini, Anda tidak perlu melakukan apa pun untuk privasi. Anda dapat mengonfirmasinya dengan wireshark.

PS. menganggap Anda menggunakan proxy SOCKS5. SOCKS4 tidak mendukung nama host.

okwap
sumber