Comment puis-je m'assurer que tout le trafic TCP de mon Mac passe par un proxy SOCKS5?

12

J'ai un proxy SOCKS avec un port.

Comment puis-je faire en sorte que mon MAC l'utilise? Quels paramètres dois-je modifier dans les paramètres réseau?

Alex
la source

Réponses:

3

Pourquoi les préférences système -> réseau -> (Sélectionnez un réseau sur le côté gauche de la fenêtre et choisissez Avancé en bas à droite) -> Les proxys (onglet en haut) ne fonctionnent pas pour vous?

entrez la description de l'image ici

Everett
la source
9
Cela ne fonctionne pas pour toutes les applications. Skype, Chrome et d'autres semblent contourner ces paramètres - au moins le 10.10 ...
Ingwie Phoenix
Ce que tu as dit est vrai. C'est même mentionné dans d'autres commentaires. L'auteur a clairement indiqué qu'ils voulaient simple, alors j'ai commencé par simple en demandant ce que la réponse que j'ai postée ne fonctionnerait pas pour eux. De toute évidence, cela a fonctionné pour eux, car ils l'ont sélectionné. La sécurité n'est pas toujours une réponse à 100%. La plupart du temps, il s'agit de réduire les risques.
Everett
1
Le terminal ne peut pas adopter les paramètres de proxy du réseau réseau socks5, mais l'ensemble de l'application sera correct.
E_Jovi
5

Bien que la définition des paramètres de proxy à l'échelle du système soit un bon début, vous pouvez également envisager d'utiliser iptables pour vous assurer que tout le trafic passe par le proxy. Certaines applications n'utilisent pas de paramètres de configuration à l'échelle du système (dont Firefox), et il est donc impératif que vous personnalisiez vos règles pour ne pas autoriser les connexions directes et uniquement pour acheminer le trafic via le proxy.

EDIT: Bien que j'utilise personnellement des iptablesrègles pour gérer les "fuites" potentielles de mon VPN, je me suis en fait trompé à l'origine en pensant qu'iptables pouvait fonctionner directement avec un proxy de chaussettes. Vous aurez besoin de quelque chose comme tun2socks pour créer une interface de tunnel virtuelle (telle que l'utilisation de vpn).

Ensuite, vous pouvez configurer un script iptables similaire au suivant:

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

Naturellement, vous voudrez faire en sorte que ce script reflète votre réseau particulier (c'est-à-dire, si vous utilisez quelque chose comme un sous-réseau 192.168.0.0/24, ajustez en conséquence). En outre, il est très étroitement basé sur un script que j'utilise avec un VPN, donc toutes les mentions MYVPN ou VPN - lorsque vous n'utilisez pas de VPN, tun2socksse comportent effectivement comme si vous l'êtes, donc tout devrait fonctionner de la même manière.

Et merci tout particulièrement à cette réponse chez Unix.SE pour m'avoir orienté dans la bonne direction pour répondre à celle-ci.

MODIFIER à nouveau: Donc, il semblerait qu'OS X ferait cela avec ipfwplutôt qu'avec iptables (désolé, je suis principalement une personne Linux, et je pensais qu'OS X avait des iptables disponibles). Il existe des équivalences telles que le script peut être adapté, dont certains sont indiqués ici . man ipfwdevrait vous mettre directement sur la syntaxe. Je vais laisser le iptablesscript d' origine comme modèle afin que vous puissiez voir ce qui se passe conceptuellement. WaterRoof semble pouvoir aider à rendre l'utilisation ipfwun peu plus conviviale; d'autres frontaux peuvent également être disponibles.

0xDAFACADE
la source
Je ne veux pas utiliser iptables car c'est trop compliqué. Tun2socks semble avoir besoin de SSH et d'un serveur. J'ai juste une IP et un port ... Comment puis-je simplement utiliser l'IP et le port?
Alex
tun2socksne nécessite pas SSH et un serveur; l'exemple sur leur site est d'utiliser SSH pour créer le proxy SOCKS en premier lieu. Si vous avez déjà un proxy SOCKS, il est totalement inutile. Et oui, iptablesc'était une mauvaise façon de ma part. OS X, étant basé sur BSD, utilise ipfwplutôt que iptables, qui est pour le noyau Linux. Pour ce qui est compliqué, vous pourrez peut-être trouver un frontend qui le configurera pour vous de manière plus simple à utiliser, mais je n'ai aucune expérience à ce sujet. Le fait d'être compliqué à un bas niveau a de toute façon beaucoup à voir avec la raison pour laquelle il est si capable pour le travail.
0xDAFACADE
J'ai ajouté une interface pour que vous puissiez utiliser la réponse si cela facilite la navigation ipfw.
0xDAFACADE
5

Si vous pouvez vous définir un serveur SSH, le sshuttle gratuit peut tunneler tout le trafic TCP via la connexion, faisant tout le travail du pare-feu pour vous.

Pour transférer tout le trafic TCP et les requêtes DNS vers un serveur SSH distant, la commande est assez simple:

sshuttle --dns -vr ssh_server 0/0

Outre TCP et DNS, sshuttle ne transmet pas d'autres requêtes telles que UDP, ICMP, ping, etc.

Pour plus d'informations et d'exemples, consultez l'article Utilisation de Sshuttle dans le travail quotidien .

harrymc
la source
Bien que l'interrogateur n'ait pas de serveur SSH à utiliser à cet effet, je voudrais au moins vous remercier de me rappeler cet excellent outil et les fonctionnalités qu'il apporte. La simplicité de cette syntaxe est fantastique, et être capable de gérer iptables ou ipfw sur le backend est vraiment une fonctionnalité qui mérite d'être saluée par les toits.
0xDAFACADE
Cela ne redirige pas tout le trafic TCP, par exemple si VMWare l'exécute, il contourne cela.
Soheil
0

Il existe un certain nombre de solutions disponibles. Aucun d'entre eux n'est aussi simple que de modifier certains paramètres: la raison en est que cela va à l'encontre de l'objectif global du proxy, qui est de router une application spécifique via un itinéraire différent (à des fins de furtivité, de sécurité, de protection d'identité ...) tout en quittant vous accédez à la route locale (supposément plus rapide).

Certains doivent être supprimés en raison de vos besoins, mais permettez-moi de les mentionner par souci d'exhaustivité: un VPN, un tunnel SSH, l'utilisation de pfctl (le filtre de paquets et l'interface de contrôle NAT). De plus, Tor, bien qu'il ne soit certainement pas conçu pour l'utilisation que vous avez en tête, vous permet d'acheminer tout le trafic via leurs procurations.

Toutes ces applications sont gratuites et nécessitent tout au plus une certaine ingéniosité pour les faire fonctionner. D'un autre côté, il existe des applications payantes, où la plupart du travail a été effectué par quelqu'un d'autre, mais à un prix.

Proxycap

vous permet de rediriger les connexions réseau de votre ordinateur via des serveurs proxy. Vous pouvez indiquer à ProxyCap quelles applications se connecteront à Internet via un proxy et dans quelles circonstances. Cela se fait via une interface conviviale, sans avoir besoin de reconfigurer aucun de vos clients Internet

Il existe également Proxifier pour Mac (attention: ne prend en charge que la version 10.8). lequel

permet aux applications réseau qui ne prennent pas en charge l'utilisation de serveurs proxy de fonctionner via un proxy et des chaînes SOCKS ou HTTPS.

MariusMatutiae
la source
0

Allez dans Préférences-> Réseau Vérifiez s'il y a un verrou dessus, cliquez dessus et donnez le mot de passe de votre compte administrateur système. Ensuite Advanced-> Proxies-> Check on Socks Proxy. Donnez vos paramètres de proxy.

J Bourne
la source