Wie kann ich sicherstellen, dass der gesamte TCP-Verkehr meines Mac über einen SOCKS5-Proxy erfolgt?

11

Ich habe einen SOCKS-Proxy mit einem Port.

Wie kann ich meinen MAC dazu bringen, ihn zu verwenden? Welche Einstellungen ändere ich unter Netzwerkeinstellungen?

Alex
quelle

Antworten:

3

Warum funktionieren die Systemeinstellungen -> Netzwerk -> (Wählen Sie ein Netzwerk auf der linken Seite des Fensters und wählen Sie unten rechts Erweitert) -> Proxies (Registerkarte oben) nicht für Sie?

Geben Sie hier die Bildbeschreibung ein

Everett
quelle
9
Das funktioniert nicht bei allen Apps. Skype, Chrome und andere scheinen diese Einstellungen zu umgehen - zumindest am 10.10 ...
Ingwie Phoenix
Was du gesagt hast, ist wahr. Es wird sogar in anderen Kommentaren erwähnt. Der Autor machte klar, dass sie einfach wollten, also begann ich mit einfach, indem ich fragte, was mit der Antwort, die ich gepostet habe, für sie nicht funktionieren würde. Offensichtlich hat es für sie funktioniert, weil sie es ausgewählt haben. Bei Sicherheit geht es nicht immer um die 100% ige Antwort. Meist geht es um Risikominderung.
Everett
1
Das Terminal kann keine System-Netzwerk-Socks5-Proxy-Einstellungen übernehmen, aber die App-Breite ist in Ordnung.
E_Jovi
5

Das Festlegen der systemweiten Proxy-Einstellungen ist zwar ein guter Anfang, Sie können jedoch auch die Verwendung von iptables prüfen, um sicherzustellen, dass der gesamte Datenverkehr über den Proxy geleitet wird. Einige Anwendungen verwenden keine systemweiten Konfigurationseinstellungen (darunter auch Firefox). Daher müssen Sie Ihre Regeln unbedingt so anpassen, dass keine direkten Verbindungen zugelassen werden und nur der Datenverkehr über den Proxy geleitet wird.

BEARBEITEN: Während ich persönlich iptablesRegeln verwende, um potenzielle "Leckagen" aus meinem VPN zu verwalten, habe ich mich ursprünglich geirrt zu glauben, dass iptables direkt mit einem Socken-Proxy funktionieren könnten. Sie benötigen so etwas wie tun2socks , um eine virtuelle Tunnelschnittstelle zu erstellen (z. B. die Verwendung von VPN).

Anschließend können Sie ein iptables-Skript einrichten, das dem folgenden ähnelt:

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

Natürlich möchten Sie, dass dieses Skript Ihr spezielles Netzwerk widerspiegelt (dh wenn Sie so etwas wie ein 192.168.0.0/24 Subnetz verwenden, passen Sie es entsprechend an). Außerdem basiert es sehr eng auf einem Skript, das ich mit einem VPN verwende. Daher erwähnen alle Erwähnungen MYVPN oder VPN - obwohl Sie kein VPN verwenden, tun2socksverhält es sich effektiv so, als ob Sie es wären, sodass alles gleich funktionieren sollte.

Ein besonderer Dank geht an diese Antwort bei Unix.SE, die mich in die richtige Richtung gelenkt hat, um diese zu beantworten.

Nochmals BEARBEITEN: Es sieht also so aus, als würde OS X dies tatsächlich mit ipfwiptables tun (sorry, ich bin hauptsächlich eine Linux-Person und dachte, OS X hätte iptables verfügbar). Es gibt Äquivalenzen, so dass das Skript angepasst werden kann, von denen einige hier hervorgehoben werden . man ipfwsollte Sie direkt auf die Syntax setzen. Ich werde das ursprüngliche iptablesSkript als Vorlage belassen, damit Sie sehen können, was konzeptionell vor sich geht. WaterRoof scheint dabei zu helfen, die Verwendung ipfwetwas benutzerfreundlicher zu gestalten. Möglicherweise sind auch andere Frontends verfügbar.

0xDAFACADE
quelle
Ich möchte keine iptables verwenden, weil es zu kompliziert ist. Tun2socks sieht so aus, als ob ich SSH und einen Server brauche. Ich habe nur eine IP und einen Port ... Wie kann ich nur die IP und den Port verwenden?
Alex
tun2socksbenötigt kein SSH und keinen Server; Das Beispiel auf ihrer Site ist die Verwendung von SSH, um den SOCKS-Proxy zu erstellen. Wenn Sie bereits einen SOCKS-Proxy haben, ist dies völlig unnötig. Und ja, iptableswar meinerseits ein falscher Weg. OS X, das auf BSD basiert, verwendet ipfweher als iptables, was für den Linux-Kernel ist. Da es kompliziert ist, können Sie möglicherweise ein Frontend finden, das es auf einfachere Weise für Sie einrichtet, aber ich habe keine Erfahrung in dieser Angelegenheit. Auf niedrigem Niveau kompliziert zu sein, hat sowieso viel damit zu tun, warum es für den Job so fähig ist.
0xDAFACADE
Ich habe ein Frontend hinzugefügt, das Sie zur Antwort verwenden können, wenn dies die Navigation ipfwerleichtert.
0xDAFACADE
4

Wenn Sie sich einen SSH-Server einrichten können, kann das kostenlose sshuttle den gesamten TCP-Verkehr über die Verbindung tunneln und die gesamte Firewall-Arbeit für Sie erledigen .

Der Befehl ist einfach genug, um den gesamten TCP-Verkehr und die DNS-Anforderungen an einen Remote-SSH-Server weiterzuleiten:

sshuttle --dns -vr ssh_server 0/0

Neben TCP und DNS leitet sshuttle keine anderen Anfragen wie UDP, ICMP, Ping usw. weiter.

Weitere Informationen und Beispiele finden Sie im Artikel Verwenden von Sshuttle in der täglichen Arbeit .

harrymc
quelle
Obwohl der Fragesteller keinen SSH-Server für diesen Zweck hat, möchte ich Ihnen zumindest dafür danken, dass Sie mich an dieses großartige Tool und die damit verbundenen Funktionen erinnert haben. Die Einfachheit dieser Syntax ist fantastisch, und die Fähigkeit, entweder iptables oder ipfw im Backend zu verarbeiten, ist wirklich eine Funktion, die es wert ist, von den Dächern gelobt zu werden.
0xDAFACADE
Dadurch wird nicht der gesamte TCP-Verkehr umgeleitet, z. B. wenn VMWare ausgeführt wird, wird dies umgangen.
Soheil
0

Es gibt eine Reihe von Lösungen. Keiner von ihnen ist so einfach wie das Ändern einiger Einstellungen: Der Grund dafür ist, dass dies das gesamte Ziel des Proxys zunichte macht, nämlich das Weiterleiten einer bestimmten Anwendung über einen anderen Weg (zum Zwecke der Tarnung, Sicherheit, des Identitätsschutzes ...) beim Verlassen Sie greifen auf die (angeblich schnellere) lokale Route zu.

Einige sind aufgrund Ihrer Anforderungen zu verwerfen, aber ich möchte sie der Vollständigkeit halber erwähnen: ein VPN, ein SSH-Tunnel, die Verwendung von pfctl (Paketfilter und NAT-Steuerungsschnittstelle). Obwohl Tor sicherlich nicht für die beabsichtigte Verwendung konzipiert ist, können Sie den gesamten Datenverkehr über deren Proxys leiten.

Alle diese Anwendungen sind kostenlos und erfordern höchstens etwas Einfallsreichtum, um sie zum Laufen zu bringen. Auf der anderen Seite gibt es kostenpflichtige Anwendungen, bei denen der größte Teil der Arbeit von jemand anderem erledigt wurde, allerdings zu einem Preis.

Proxycap

ermöglicht es Ihnen, die Netzwerkverbindungen Ihres Computers über Proxyserver umzuleiten. Sie können ProxyCap mitteilen, welche Anwendungen über einen Proxy eine Verbindung zum Internet herstellen und unter welchen Umständen. Dies erfolgt über eine benutzerfreundliche Oberfläche, ohne dass Sie einen Ihrer Internet-Clients neu konfigurieren müssen

Alternativ gibt es Proxifier für Mac (Vorsicht: unterstützt nur bis 10.8). welche

Ermöglicht Netzwerkanwendungen, die das Arbeiten über Proxyserver nicht unterstützen, den Betrieb über einen SOCKS- oder HTTPS-Proxy und Ketten.

MariusMatutiae
quelle
0

Gehen Sie zu Einstellungen-> Netzwerk. Überprüfen Sie, ob eine Sperre vorliegt, klicken Sie darauf und geben Sie das Kennwort Ihres Systemadministratorkontos ein. Dann Advanced-> Proxies-> Check on Socks Proxy. Geben Sie Ihre Proxy-Einstellungen an.

J Bourne
quelle