web-dev-qa-db-fra.com

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

J'ai un proxy SOCKS avec un port.

Comment puis-je utiliser mon MAC? Quels paramètres dois-je modifier dans les paramètres réseau?

10
Alex

Pourquoi les préférences système -> réseau -> (sélectionnez un réseau dans la partie gauche de la fenêtre et choisissez Options avancées en bas à droite) -> Proxies (onglet en haut) ne fonctionne pas pour vous?

enter image description here

2
Everett

Bien que définir les 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 les paramètres de configuration à l'échelle du système (Firefox entre eux). 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 les règles iptables pour gérer les "fuites" potentielles de mon VPN, j’étais en fait à l’origine erroné de penser que iptables pourrait fonctionner directement avec un proxy chaussettes. Vous aurez besoin de quelque chose comme tun2socks afin de créer une interface de tunnel virtuel (telle que l'utilisation du vpn).

Ensuite, vous pouvez configurer un script iptables similaire à celui-ci:

#!/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 que ce script reflète votre réseau particulier (par exemple, 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. Par conséquent, toutes les mentions MYVPN ou VPN - tant que vous n'utilisez pas de VPN, tun2socks se comporte effectivement comme si vous l'êtes, tout devrait donc fonctionner de la même manière.

Et un merci spécial à cette réponse sur Unix.SE pour m'avoir conduit dans la bonne direction pour répondre à celle-ci.

EDIT again: Donc, on dirait que OS X le ferait avec ipfw plutôt que iptables (désolé, je suis surtout une personne sous Linux, et je pensais que OS X disposait d’iptables). Il existe des équivalences telles que le script peut être adapté, dont certaines sont signalées ici . man ipfw devrait vous indiquer directement la syntaxe. Je laisserai le script iptables d'origine en tant que modèle afin que vous puissiez voir ce qui se passe de manière conceptuelle. WaterRoof semble aider à rendre ipfw un peu plus convivial; d'autres frontaux peuvent également être disponibles.

5
0xDAFACADE

Si vous pouvez définir vous-même un serveur SSH, alors le (sshuttle)) gratuit (= sshuttle peut canaliser tout le trafic TCP via la connexion, en effectuant tout le travail de pare-feu.

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 transfère pas d'autres requêtes telles que UDP, ICMP, ping, etc.

Pour plus d'informations et d'exemples, voir l'article tilisation de Sshuttle dans Daily Work .

4
harrymc

Il existe un certain nombre de solutions disponibles. Aucune d’entre elles n’est aussi simple que de modifier certains paramètres: la raison en est que cela va à l’encontre de l’objectif de la transformation par proxy, qui consiste à acheminer certaines applications spécifiques par une autre furtivité, sécurité, protection de l’identité ...) tout en vous laissant un accès à la route locale (supposément plus rapide).

Certains doivent être rejetés à cause de vos exigences, 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). En outre, Tor, bien que n'étant certainement pas conçu pour l'usage que vous avez en tête, vous permet de router tout le trafic à travers leurs proxy.

Toutes ces applications sont gratuites et nécessitent tout au plus une ingéniosité pour les lancer. D'autre part, 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 qu'il soit nécessaire de reconfigurer vos clients Internet.

Alternativement, il existe Proxifier pour Mac (attention: ne prend en charge que la sortie 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.

0
MariusMatutiae

Allez dans Préférences-> Réseau. Voir s'il y a un verrou dessus, cliquez dessus et donnez le mot de passe de votre compte administrateur système. Puis Avancé-> Proxies-> Vérifier sur le proxy socks. Donnez vos paramètres de proxy.

0
Saikrishna