Come posso assicurarmi che tutto il traffico TCP del mio Mac passi attraverso un proxy SOCKS5?


12

Ho un proxy SOCKS con una porta.

Come posso fare in modo che il mio MAC lo usi? Quali impostazioni devo modificare in Impostazioni di rete?

Risposte:


3

Perché le preferenze di sistema -> rete -> (seleziona una rete sul lato sinistro della finestra e scegli Avanzate in basso a destra) -> Proxy (scheda in alto) che funzionano per te?

inserisci qui la descrizione dell'immagine


9
Questo non funziona per tutte le app. Skype, Chrome e altri sembrano ignorare queste impostazioni - almeno il 10.10 ...
Ingwie Phoenix

Quello che hai detto è vero. È anche menzionato in altri commenti. L'autore ha chiarito che volevano semplici, quindi ho iniziato con semplici chiedendo che cosa della risposta che ho pubblicato non avrebbe funzionato per loro. Ovviamente ha funzionato per loro perché l'hanno selezionato. La sicurezza non è sempre una risposta al 100%. Il più delle volte si tratta di riduzione del rischio.
Everett,

1
Il terminale non può adottare le impostazioni del proxy socks5 della rete di sistema, ma l'intera app sarà ok.
E_Jovi

5

Mentre l'impostazione delle impostazioni proxy a livello di sistema è un buon inizio, potresti anche voler esaminare l'uso di iptables per assicurarti che tutto il traffico passi attraverso il proxy. Alcune applicazioni non utilizzano le impostazioni di configurazione del sistema (tra cui Firefox), pertanto è indispensabile personalizzare le regole per non consentire connessioni dirette e instradare solo il traffico attraverso il proxy.

EDIT: Mentre uso personalmente le iptablesregole per gestire il potenziale "leakage" dalla mia VPN, in realtà mi sbagliavo originariamente pensando che iptables potesse funzionare direttamente con un proxy socks. Avrai bisogno di qualcosa come tun2socks per creare un'interfaccia tunnel virtuale (come l'uso di vpn).

Successivamente, è possibile impostare uno script iptables simile al seguente:

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

Naturalmente vorrai che questo script rifletta la tua particolare rete (ad esempio, se stai usando qualcosa come una sottorete 192.168.0.0/24, modifica di conseguenza). Inoltre, è strettamente basato su uno script che utilizzo con una VPN, quindi, tutte le menzioni MYVPN o VPN - mentre non stai utilizzando una VPN, tun2sockssi comportano efficacemente come te, quindi tutto dovrebbe funzionare allo stesso modo.

E un ringraziamento speciale a questa risposta su Unix.SE per avermi guidato nella giusta direzione per rispondere a questa.

EDIT again: Quindi, sembra che OS X lo farebbe ipfwpiuttosto che con iptables (scusate, sono principalmente una persona Linux, e pensavo che OS X avesse iptables disponibili). Esistono equivalenze tali che la sceneggiatura può essere adattata, alcune delle quali sono indicate qui . man ipfwdovrebbe metterti direttamente sulla sintassi. Lascerò lo iptablesscript originale come modello in modo da poter vedere cosa sta succedendo concettualmente. WaterRoof sembra che possa aiutare a rendere l'utilizzo ipfwun po 'più user friendly; potrebbero essere disponibili anche altri front-end.


Non voglio usare iptables perché è troppo complicato. Tun2socks sembra che io abbia bisogno di SSH e di un server. Ho solo un IP e una porta ... Come posso semplicemente usare IP e porta?
Alex

tun2socksnon richiede SSH e un server; l'esempio sul loro sito è per usare SSH per creare il proxy SOCKS in primo luogo. Se hai già un proxy SOCKS, non è del tutto necessario. E sì, è iptablesstato un modo sbagliato da parte mia. OS X, essendo basato su BSD, usa ipfwpiuttosto che iptables, che è per il kernel Linux. Per quanto sia complicato, potresti essere in grado di trovare un frontend che lo configurerà per te in un modo più facile da usare, ma non ho esperienza su questo argomento. Essere complicati a un livello basso ha comunque molto a che fare con il motivo per cui è così capace per il lavoro.
0xDAFACADE

Ho aggiunto un frontend da utilizzare per la risposta se ti aiuta a navigare ipfwpiù facilmente.
0xDAFACADE

5

Se riesci a impostare un server SSH, lo sshuttle gratuito può eseguire il tunneling di tutto il traffico TCP attraverso la connessione, facendo funzionare tutto il firewall per te.

Per inoltrare tutto il traffico TCP e le richieste DNS a un server SSH remoto, il comando è abbastanza semplice:

sshuttle --dns -vr ssh_server 0/0

Oltre a TCP e DNS, sshuttle non inoltra altre richieste come UDP, ICMP, ping ecc.

Per ulteriori informazioni ed esempi vedere l'articolo Uso di Sshuttle nel lavoro quotidiano .


Mentre l'interrogante non ha un server SSH da utilizzare allo scopo, vorrei almeno ringraziarti per avermi ricordato questo fantastico strumento e funzionalità che porta. La semplicità in quella sintassi è fantastica e poter gestire iptables o ipfw sul back-end è davvero una caratteristica degna di lode dai tetti.
0xDAFACADE

Ciò non reindirizza tutto il traffico TCP, ad esempio se VMWare è in esecuzione, lo ignora.
Soheil,

0

Sono disponibili numerose soluzioni. Nessuno di questi è semplice come modificare alcune impostazioni: il motivo è che questo sconfigge l'intero obiettivo del proxy, ovvero quello di instradare un'applicazione specifica attraverso un percorso diverso (a fini di invisibilità, sicurezza, protezione dell'identità ...) lasciando accedi al percorso locale (apparentemente più veloce).

Alcuni devono essere scartati a causa delle tue esigenze, ma lasciatemi solo menzionarli per completezza: una VPN, un tunnel SSH, l'uso di pfctl (il filtro pacchetti e l'interfaccia di controllo NAT). Inoltre, Tor, sebbene certamente non progettato per l'uso che hai in mente, ti consente di instradare tutto il traffico attraverso i loro proxy.

Tutte queste applicazioni sono gratuite e richiedono al massimo un po 'di ingegnosità per farle funzionare. D'altra parte, ci sono domande a pagamento, in cui la maggior parte del lavoro è stata eseguita da qualcun altro, anche se a un prezzo.

ProxyCap

ti consente di reindirizzare le connessioni di rete del tuo computer tramite server proxy. Puoi indicare a ProxyCap quali applicazioni si collegheranno a Internet tramite un proxy e in quali circostanze. Questo viene fatto attraverso un'interfaccia intuitiva, senza la necessità di riconfigurare nessuno dei tuoi client Internet

In alternativa, c'è Proxifier per Mac (attenzione: supporta solo fino a 10.8). quale

consente alle applicazioni di rete che non supportano il funzionamento tramite server proxy di operare attraverso un proxy SOCKS o HTTPS e catene.


0

Vai su Preferenze-> Rete Verifica se è presente un lucchetto, fai clic su di esso e inserisci la password del tuo account amministratore di sistema. Quindi Avanzate-> Proxy-> Verifica proxy Socks. Fornisci le tue impostazioni proxy.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.