Bagaimana saya bisa memastikan semua lalu lintas TCP Mac saya melewati proxy SOCKS5?

12

Saya memiliki proxy SOCKS dengan port.

Bagaimana saya bisa membuat MAC saya menggunakannya? Pengaturan apa yang saya ubah di bawah pengaturan jaringan?

Alex
sumber

Jawaban:

3

Mengapa preferensi sistem tidak -> jaringan -> (Pilih jaringan di sisi kiri jendela dan pilih Lanjutan di kanan bawah) -> Proxy (tab di atas) bekerja untuk Anda?

masukkan deskripsi gambar di sini

Everett
sumber
9
Itu tidak berfungsi untuk semua aplikasi. Skype, Chrome, dan lainnya tampaknya mengabaikan pengaturan ini - setidaknya pada 10,10 ...
Ingwie Phoenix
Apa yang Anda katakan itu benar. Itu bahkan disebutkan dalam komentar lain. Penulis menjelaskan bahwa mereka ingin yang sederhana, jadi saya mulai dengan yang sederhana dengan bertanya bagaimana dengan jawaban yang saya posting tidak akan berhasil untuk mereka. Jelas itu bekerja untuk mereka karena mereka memilihnya. Keamanan tidak selalu tentang jawaban 100%. Sebagian besar waktu adalah tentang pengurangan risiko.
Everett
1
Terminal tidak dapat mengadopsi pengaturan proxy socks5 jaringan sistem, tetapi lebar aplikasi akan baik-baik saja.
E_Jovi
5

Meskipun pengaturan pengaturan proxy lebar sistem adalah awal yang baik, Anda mungkin juga ingin melihat menggunakan iptables untuk memastikan bahwa semua lalu lintas melewati proxy. Beberapa aplikasi tidak menggunakan pengaturan konfigurasi sistem (Firefox di antaranya), dan karenanya sangat penting bagi Anda untuk menyesuaikan aturan Anda agar tidak memungkinkan koneksi langsung dan hanya untuk mengarahkan lalu lintas melalui proxy.

EDIT: Sementara saya pribadi menggunakan iptablesaturan untuk mengelola "kebocoran" potensial dari VPN saya, saya sebenarnya awalnya salah berpikir iptables dapat bekerja dengan proxy kaus kaki secara langsung. Anda akan membutuhkan sesuatu seperti tun2socks untuk membuat antarmuka terowongan virtual (seperti penggunaan vpn).

Setelah itu, Anda dapat mengatur skrip iptables yang mirip dengan yang berikut:

#!/bin/bash
if [[ $EUID -ne 0 ]]; then
    echo "This script must be run as root" 1>&2
    exit 1
fi

# name of primary network interface (before tunnel)
PRIMARY=eth0

# gateway ip address (before tunnel - adsl router ip address)
# automatically determine the ip from the default route
GATEWAY=`route -n | grep $PRIMARY | egrep "^0\.0\.0\.0" | tr -s " " | cut -d" " -f2`

# provided by tun2socks: interface name
TUNNEL=tun0

# If you'd like, putting the tun2socks command here is a good idea.  It may or may not be necessary to do so, but either way is more convenient than running the two commands separately.

# iptables rules - important!

LOCAL_NET=192.168.0.0/16
#LOCAL_NET=$GATEWAY

# Flush all previous filter rules, you might not want to include this line if you already have other rules setup
iptables -t filter --flush

iptables -t filter -X MYVPN
iptables -t filter -N MYVPN

# Add local routes to routing table
route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
route add -host 23.21.163.237 dev eth0 gw 192.168.1.1

# Add ssh routes to routing table
ip route add table 128 to 192.168.1.0/24 dev eth0
ip route add table 128 default via 192.168.1.1

# Exceptions for local traffic & vpn server
iptables -t filter -A MYVPN -o lo -j RETURN
iptables -t filter -A MYVPN -o ${TUNNEL} -j RETURN
iptables -t filter -A MYVPN --dst 127.0.0.1 -j RETURN
iptables -t filter -A MYVPN --dst $LOCAL_NET -j RETURN
iptables -t filter -A MYVPN --dst ${SERVER} -j RETURN
iptables -t filter -A MYVPN --dst ${VPN_SERVER} -j RETURN

# Add extra local nets here as necessary

iptables -t filter -A MYVPN -j DROP

# MYVPN traffic leaving this host:
iptables -t filter -A OUTPUT -p tcp --syn -j MYVPN
iptables -t filter -A OUTPUT -p icmp -j MYVPN
iptables -t filter -A OUTPUT -p udp -j MYVPN

Secara alami, Anda ingin membuat skrip ini mencerminkan jaringan khusus Anda (yaitu, jika Anda menggunakan sesuatu seperti subnet 192.168.0.0/24, sesuaikan dengan itu). Selain itu, sangat ketat berdasarkan pada skrip yang saya gunakan dengan VPN, karenanya, semua menyebutkan MYVPN atau VPN - saat Anda tidak menggunakan VPN, tun2socksberperilaku seolah-olah Anda memang efektif, jadi semuanya harus bekerja sama.

Dan terima kasih khusus atas jawaban ini di Unix.SE untuk mengarahkan saya ke arah yang benar untuk menjawab yang satu ini.

Sunting lagi: Jadi, sepertinya OS X sebenarnya akan melakukan ini ipfwdaripada iptables (maaf, saya kebanyakan orang linux, dan berpikir OS X punya iptables tersedia). Ada persamaan sehingga skrip dapat diadaptasi, beberapa di antaranya ditunjukkan di sini . man ipfwseharusnya membuat Anda langsung pada sintaks. Saya akan membiarkan iptablesskrip asli sebagai templat sehingga Anda dapat melihat apa yang terjadi secara konseptual. WaterRoof tampak seperti itu mungkin membantu membuat penggunaan ipfwsedikit lebih ramah pengguna; ujung depan lainnya mungkin tersedia juga.

0xDAFACADE
sumber
Saya tidak ingin menggunakan iptables karena terlalu rumit. Tun2socks sepertinya saya perlu SSH dan server. Saya hanya memiliki IP dan port ... Bagaimana saya bisa menggunakan IP dan port?
Alex
tun2sockstidak memerlukan SSH dan server; contoh di situs mereka adalah menggunakan SSH untuk membuat proksi SOCKS. Jika Anda sudah memiliki proxy SOCKS, itu sama sekali tidak perlu. Dan ya, iptablesitu cara yang salah di pihak saya. OS X, yang didasarkan pada BSD, menggunakan ipfwdaripada iptables, yang untuk kernel Linux. Karena itu rumit, Anda mungkin dapat menemukan frontend yang akan mengaturnya untuk Anda dengan cara yang lebih mudah digunakan, tetapi saya tidak punya pengalaman dalam hal ini. Menjadi rumit pada level rendah bagaimanapun juga banyak hubungannya dengan mengapa sangat mampu untuk pekerjaan itu.
0xDAFACADE
Saya telah menambahkan frontend untuk Anda gunakan pada jawaban jika itu membantu mempermudah navigasi ipfw.
0xDAFACADE
5

Jika Anda dapat mengatur sendiri server SSH, maka sshuttle gratis dapat melakukan tunnel semua traffic TCP melalui koneksi, melakukan semua pekerjaan firewall untuk Anda.

Untuk meneruskan semua lalu lintas TCP dan permintaan DNS ke server SSH jarak jauh, perintahnya cukup sederhana:

sshuttle --dns -vr ssh_server 0/0

Selain TCP dan DNS, sshuttle tidak meneruskan permintaan lain seperti UDP, ICMP, ping dll.

Untuk informasi dan contoh lebih lanjut, lihat artikel Menggunakan Sshuttle dalam Pekerjaan Harian .

harrymc
sumber
Sementara si penanya tidak memiliki server SSH untuk digunakan untuk tujuan itu, saya ingin mengucapkan terima kasih setidaknya mengingatkan saya akan alat yang hebat ini dan fungsionalitas yang dibawanya. Kesederhanaan dalam sintaksis itu fantastis, dan mampu menangani iptables atau ipfw di backend benar-benar fitur yang patut dipuji dari atap.
0xDAFACADE
Ini tidak mengarahkan semua lalu lintas TCP, misalnya jika Anda memiliki VMWare menjalankannya memotong ini.
Soheil
0

Ada sejumlah solusi yang tersedia. Tidak satu pun dari mereka yang sesederhana mengubah beberapa pengaturan: alasannya adalah bahwa ini mengalahkan seluruh tujuan proxy, yaitu untuk merutekan beberapa aplikasi spesifik melalui rute yang berbeda (untuk tujuan stealth, keamanan, perlindungan identitas ...) ketika meninggalkan Anda mengakses rute lokal (seharusnya lebih cepat).

Beberapa harus dibuang karena persyaratan Anda, tetapi izinkan saya hanya menyebutkannya demi kelengkapan: VPN, terowongan SSH, penggunaan pfctl (filter paket dan antarmuka kontrol NAT). Juga, Tor, meskipun tentu saja tidak dirancang untuk penggunaan yang ada dalam pikiran Anda, memungkinkan Anda untuk merutekan semua lalu lintas melalui proksi mereka .

Semua aplikasi ini gratis, dan paling tidak memerlukan kecerdikan untuk menjalankannya. Di sisi lain, ada aplikasi berbayar, di mana sebagian besar pekerjaan telah dilakukan oleh orang lain, meskipun dengan harga.

Proxycap

memungkinkan Anda untuk mengarahkan kembali koneksi jaringan komputer Anda melalui server proxy. Anda dapat memberi tahu ProxyCap aplikasi mana yang akan terhubung ke Internet melalui proxy dan dalam kondisi apa. Ini dilakukan melalui antarmuka yang ramah pengguna, tanpa perlu mengkonfigurasi ulang klien Internet Anda

Atau, ada Proxifier untuk Mac (hati-hati: hanya mendukung 10.8). yang

memungkinkan aplikasi jaringan yang tidak mendukung bekerja melalui server proxy untuk beroperasi melalui proxy dan rantai SOCKS atau HTTPS.

MariusMatutiae
sumber
0

Pergi ke Preferensi-> Jaringan Lihat apakah ada kunci di sana, klik dan berikan kata sandi akun administrator sistem Anda. Kemudian Advanced-> Proxy-> Periksa Proksi Socks. Berikan pengaturan proxy Anda.

J Bourne
sumber