¿Cómo puedo asegurarme de que todo el tráfico TCP de mi Mac pase por un proxy SOCKS5?

Respuestas:

3

¿Por qué las preferencias del sistema -> red -> (Seleccione una red en el lado izquierdo de la ventana y elija Avanzado en la parte inferior derecha) -> Proxies (pestaña en la parte superior) trabajando para usted?

ingrese la descripción de la imagen aquí

Everett
fuente
99
Eso no funciona para todas las aplicaciones. Skype, Chrome y otros parecen omitir esta configuración, al menos en 10.10 ...
Ingwie Phoenix
Lo que dijiste es verdad. Incluso se menciona en otros comentarios. El autor dejó en claro que querían simple, así que comencé con simple preguntando qué sobre la respuesta que publiqué no funcionaría para ellos. Obviamente funcionó para ellos porque lo seleccionaron. La seguridad no siempre se trata de la respuesta al 100%. La mayoría de las veces se trata de reducción de riesgos.
Everett
1
El terminal no puede adoptar la configuración del proxy de los calcetines de red del sistema5, pero la aplicación estará bien.
E_Jovi
5

Si bien la configuración del proxy en todo el sistema es un buen comienzo, es posible que también desee considerar el uso de iptables para asegurarse de que todo el tráfico pase por el proxy. Algunas aplicaciones no usan configuraciones de configuración de todo el sistema (Firefox entre ellas), y por lo tanto, es imperativo que adapte sus reglas para no permitir conexiones directas y solo para enrutar el tráfico a través del proxy.

EDITAR: Si bien personalmente uso las iptablesreglas para administrar la posible "fuga" de mi VPN, en realidad me equivoqué originalmente al pensar que iptables podría funcionar con un proxy de calcetines directamente. Necesitará algo como tun2socks para crear una interfaz de túnel virtual (como el uso de vpn).

Después de eso, puede configurar un script de iptables similar al siguiente:

#!/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, querrá hacer que este script refleje su red particular (es decir, si está utilizando algo como una subred 192.168.0.0/24, ajústelo en consecuencia). Además, está muy estrictamente basado en un script que utilizo con una VPN, por lo tanto, todas las menciones MYVPN o VPN, mientras que no está utilizando una VPN, se tun2sockscomporta efectivamente como si lo fuera, por lo que todo debería funcionar igual.

Y gracias especiales a esta respuesta en Unix.SE por guiarme en la dirección correcta para responder a esta.

EDITAR nuevamente: Entonces, parece que OS X realmente estaría haciendo esto en ipfwlugar de iptables (lo siento, soy principalmente una persona de Linux, y pensé que OS X tenía iptables disponibles). Hay equivalencias de tal manera que el guión se puede adaptar, algunas de las cuales se señalan aquí . man ipfwdebería ponerlo directamente en la sintaxis. Dejaré el iptablesguión original como una plantilla para que pueda ver lo que está sucediendo conceptualmente. WaterRoof parece que puede ayudar a que el uso sea ipfwun poco más fácil de usar; otros extremos frontales pueden estar disponibles también.

0xDAFACADE
fuente
No quiero usar iptables porque es demasiado complicado. Parece que Tun2socks necesito SSH y un servidor. Solo tengo una IP y un puerto ... ¿Cómo puedo usar la IP y el puerto?
Alex
tun2socksno requiere SSH y un servidor; el ejemplo en su sitio es para usar SSH para crear el proxy SOCKS en primer lugar. Si ya tiene un proxy SOCKS, es completamente innecesario. Y sí, iptablesfue un camino equivocado de mi parte. OS X, que se basa en BSD, usa en ipfwlugar de iptables, que es para el kernel de Linux. En cuanto a que sea complicado, es posible que pueda encontrar una interfaz que lo configure para usted de una manera más fácil de usar, pero no tengo experiencia en este asunto. De todos modos, ser complicado a un nivel bajo tiene mucho que ver con por qué es tan capaz para el trabajo.
0xDAFACADE
Agregué una interfaz para que la use si le ayuda a facilitar la navegación ipfw.
0xDAFACADE
5

Si puede configurar un servidor SSH, entonces el sshuttle gratuito puede tunelizar todo el tráfico TCP a través de la conexión, haciendo que todo el firewall funcione para usted.

Para reenviar todo el tráfico TCP y las solicitudes DNS a un servidor SSH remoto, el comando es bastante simple:

sshuttle --dns -vr ssh_server 0/0

Además de TCP y DNS, sshuttle no reenvía otras solicitudes como UDP, ICMP, ping, etc.

Para obtener más información y ejemplos, consulte el artículo Uso de Sshuttle en el trabajo diario .

harrymc
fuente
Si bien el interrogador no tiene un servidor SSH para usar con este propósito, al menos me gustaría agradecerle por recordarme esta gran herramienta y funcionalidad que trae. La simplicidad en esa sintaxis es fantástica, y ser capaz de manejar iptables o ipfw en el backend es realmente una característica digna de elogio desde los tejados.
0xDAFACADE
Esto no redirige todo el tráfico TCP, por ejemplo, si tiene VMWare ejecutándolo, lo omite.
Soheil
0

Hay varias soluciones disponibles. Ninguno de ellos es tan simple como cambiar algunas configuraciones: la razón es que esto frustra el objetivo completo de la representación, que es enrutar alguna aplicación específica a través de una ruta diferente (con fines de sigilo, seguridad, protección de identidad ...) mientras se va accede a la ruta local (supuestamente más rápida).

Algunos deben descartarse debido a sus requisitos, pero permítanme mencionarlos en aras de la integridad: una VPN, un túnel SSH, el uso de pfctl (el filtro de paquetes y la interfaz de control NAT). Además, Tor, aunque ciertamente no está diseñado para el uso que tiene en mente, le permite enrutar todo el tráfico a través de sus servidores proxy.

Todas estas aplicaciones son gratuitas y requieren como máximo un poco de ingenio para que funcionen. Por otro lado, hay aplicaciones de pago, donde la mayor parte del trabajo ha sido realizado por otra persona, aunque a un precio.

Proxycap

le permite redirigir las conexiones de red de su computadora a través de servidores proxy. Puede decirle a ProxyCap qué aplicaciones se conectarán a Internet a través de un proxy y en qué circunstancias. Esto se realiza a través de una interfaz fácil de usar, sin la necesidad de reconfigurar ninguno de sus clientes de Internet.

Alternativamente, hay Proxifier para Mac (cuidado: solo admite hasta 10.8). cuales

permite que las aplicaciones de red que no admiten trabajar a través de servidores proxy funcionen a través de un proxy SOCKS o HTTPS y cadenas.

MariusMatutiae
fuente
0

Vaya a Preferencias-> Red. Vea si hay un bloqueo en eso, haga clic en él y proporcione la contraseña de su cuenta de administrador del sistema. Luego Avanzado-> Proxies-> Comprobar en Proxy de Calcetines. Dale a tu configuración de proxy.

J Bourne
fuente