Jawaban:
Mengapa preferensi sistem tidak -> jaringan -> (Pilih jaringan di sisi kiri jendela dan pilih Lanjutan di kanan bawah) -> Proxy (tab di atas) bekerja untuk Anda?
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 iptables
aturan 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, tun2socks
berperilaku 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 ipfw
daripada 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 ipfw
seharusnya membuat Anda langsung pada sintaks. Saya akan membiarkan iptables
skrip asli sebagai templat sehingga Anda dapat melihat apa yang terjadi secara konseptual. WaterRoof tampak seperti itu mungkin membantu membuat penggunaan ipfw
sedikit lebih ramah pengguna; ujung depan lainnya mungkin tersedia juga.
tun2socks
tidak 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, iptables
itu cara yang salah di pihak saya. OS X, yang didasarkan pada BSD, menggunakan ipfw
daripada 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.
ipfw
.
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 .
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.
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.