¿Cómo me conecto a un proxy SOCKS desde un iPhone/iPod Touch?

Me gusta navegar de forma segura y privada a través de un proxy SOCKS que creé a través de un túnel SSH en la Mac. Usé el cliente SSH en mi Mac para lograr esto. Entonces pensé, dado que el iPhone OS es esencialmente Mac OS, el mismo truco también podría funcionar en el iPhone.

Logré crear un túnel SSh en mi iPhone a través de la Terminal (Terminal de iPhone). (Sí, está jailbreak)

ssh -D [port] user@domain.com

En esta etapa, mi iPhone es un proxy SOCKS.

Sin embargo, no parece haber una forma en el panel de preferencias de red del iPhone para especificar un proxy SOCKS. Alguien sugiere crear un archivo Proxy Auto-Contig (PAC) para solucionar esto, pero eso suena complicado.

¿Alguna idea de cómo hacer que el iPhone use su propio proxy SOCKS?

Respuestas (7)

Bueno, supongo que no hay mejor manera de hacerlo. Maldita sea, Apple, ¿es tan difícil poner una configuración de proxy SOCKS en el panel de configuración de red del iPhone OS? :-(

De todos modos, la mejor respuesta hasta el momento, y la única que pude encontrar en la Red, es de un documento del sitio web SNIPPLR Code 2.0 titulado Cómo conectarse a un proxy SOCKS desde un iPhone/iPod Touch desbloqueado .

A continuación se muestra una versión limpia de su solución:

Digamos, quizás, que ya está reenviando su tráfico web a través de un túnel SSH/SOCKS en el trabajo (por razones de privacidad) y le gustaría usar ese mismo túnel en su iPhone/iPod Touch. Esto es bastante fácil de lograr.

  1. Asegúrese de que el túnel SOCKS en su computadora de trabajo permita conexiones LAN para que su iPhone/iPod Touch pueda conectarse a él.

    ssh -N -g -D 1080 user@domain.com
    
  2. Cree un archivo de texto e inserte el siguiente código:

    function FindProxyForURL(url, host)
    { 
         return "SOCKS 192.168.xx.xx:yyyy";
    }
    

    Reemplace las x con su IP y las y con el puerto que usó después de -D en su comando SSH

  3. Guarde el archivo de texto como un archivo de configuración automática de proxy (PAC) en un lugar accesible desde la web con una extensión .pac .

    Si está leyendo esto, es probable que sepa cómo servir un archivo a través de HTTP en su LAN de trabajo, por lo que no profundizaré en eso.

  4. Finalmente, en su iPhone/iPod Touch, vaya a Configuración → Wi-Fi y haga clic en la flecha azul a la derecha de su red de trabajo. Desplácese hasta la parte inferior, haga clic en Auto y escriba la dirección de su archivo PAC (por ejemplo, http://192.168.xx.xx/mysupersecretproxy.pac ).

Ahora puede navegar por Internet de forma segura desde su iPhone/iPod touch.

Esto cubre el caso de uso de WIFI, pero no el enlace de red 2g/3g.
¿No anula esto todo el propósito del túnel ssh? ¿No se encriptará el tráfico entre el iPhone y la computadora?
También parece que la configuración del proxy se ignora cuando se conecta a una VPN (WireGuard), lo cual es molesto, porque quería confiar en eso para encriptar la conexión entre el dispositivo iOS y el servidor que ejecuta ssh -gD. De vuelta a la mesa de dibujo.

Wow, gracias por la última respuesta.

Junto con esta publicación de blog "SSH para poner su iPhone en línea a través de un cable USB" , se me ocurrió una solución SSH/SOCKS inversa instantánea bastante sólida a través de conexión USB con solo un servidor SSH en algún lugar de su red. Esto permite que todas mis aplicaciones basadas en tcp usen Internet de un servidor SSH a través de USB a pesar de que mi WiFi sea defectuoso y no tenga un plan de datos de teléfono sólido (prepago de T-Mobile).

No se requiere configuración de servidor proxy.

La esencia de la publicación del blog es que PUEDE controlar el proxy desde la línea de comandos. Utilice el archivo:

/private/var/preferences/SystemConfiguration/preferences.plist

Busque la sección "ip1" (si desea reemplazar la interfaz GPRS/EDGE/3G) como:

<dict>
<key>Interface</key>
<dict>
<key>DeviceName</key>
<string>ip1</string>
<key>Hardware</key>
<string>com.apple.CommCenter</string>
<key>Type</key>
<string>com.apple.CommCenter</string>
</dict>

¡Tenga cuidado de tener la sección ip1 si desea anular EDGE/3G! No busque las otras entradas de Proxies en el archivo.

Luego agregue la siguiente sección después:

<key>Proxies</key>
<dict>
<key>ProxyAutoConfigEnable</key>
<integer>1</integer>
<key>ProxyAutoConfigURLString</key>
<string>file:///private/var/preferences/proxy.pac</string>
</dict>

Luego use su truco para especificar un proxy SOCKS en el archivo que acabamos de especificar:

/private/var/preferences/proxy.pac

Agregar:

function FindProxyForURL(url, host)
{ 
     return "SOCKS 127.0.0.1:1080";
}

Cambie los permisos en proxy.pac a 777 (todos pueden leer, escribir, ejecutar).

Reinicia el iPhone.

Descarga iTunnel para iTunes 9 (también hay versiones anteriores disponibles). (http://www.mediafire.com/?2q1fzowoy12)

Cree una nueva conexión Putty: en la sección Conexión>SSH>Túneles, agregue un nuevo puerto "remoto" reenviado, como el puerto 202 en el iPhone a su servidor SSH orientado a Internet (por ejemplo, 192.168.2.100:22).

Source Port: 202
Destination: 192.168.2.100:22

En la sección SSH de la misma Putty Connection, configure su comando remoto en:

ssh -D 1080 user@127.0.0.1 -p 202

Guarde su configuración de Putty en una nueva sesión con nombre.

Opcionalmente, genere claves y agregue las claves públicas a *~/.ssh/authorized_keys* en ambos extremos para que no tenga que escribir contraseñas. Use putty.exe -load "Nombre de perfil" en un acceso directo para acelerarlo aún más.

Por supuesto, si está ejecutando un servidor OpenSSH en Windows con Cygwin o algo así, es probable que pueda omitir el túnel intermedio.
Aquí hay alguien que hace lo contrario para hacer una conexión normal: snipplr.com/view/16563/…

Este mensaje parece sugerir que no es posible hacer esto a través de la línea de comando, si lo estoy interpretando correctamente. Creo que eso significa que realmente no puedes, ya que las preferencias de Red no son compatibles con SOCKS.

Este sitio dice que no hay problema con la creación del proxy SOCKS, pero la configuración debe establecerse utilizando archivos PAC. Me preguntaba si había una manera más fácil. snipplr.com/view/16563/…

iPhone + SSH Tunnel + Socks Proxy = ÉXITO Muy feliz

--> http://thireus.dareyourmind.net/index.php/thireus-home-news/8-general-announcement/109-iphone-ssh-tunnel-socks-proxy-success-d

Gracias por la ayuda :) Ahora puedo usar mi proxy de calcetines local a través de Wifi/3G/Edge:p y también creé un script que recrea el túnel si se pierde la conexión;)

Las respuestas anteriores no están bien.

  1. El ssh -D no es un proxy global en el sistema iOS (como iPhone y iPad).

  2. El proxy HTTP tampoco es un proxy global.

No se pueden usar en la mayoría de los juegos y en la mensajería instantánea (mensaje instantáneo). Es solo para navegar un poco en la web (Safari está bien), pero principalmente solo esto.

La forma mejor y más fácil en iPhone y iPad es usar VPN. Ese es un agente global, que puede transferir todos los datos de Internet a través de un servidor VPN remoto. Otra opción es OpenVPN, que ofrece un cliente en iOS.

No existe un programa de este tipo para que iPhone y iPad ejecuten un proxy de calcetines global como ese en Windows.

Encontré una manera de hacer esto sin jailbreak, pero necesitará acceso a un servidor ssh, que podría alojar en la computadora de su propia casa.

Necesitarás dos aplicaciones para iPhone; iSSH (túnel ssh) y ProxyBrowse (navegador socks5).

También necesitará un servidor SSH.

Para este ejemplo, llamaremos a nuestro servidor SSH [host] y nuestra cuenta de usuario para el servidor ssh [usuario].


Servidor SSH

Ejecute el siguiente comando:

SSH -f -N -D 8080 [user]@[host]

Así es, está en [host] creando un reenvío de puerto dinámico de regreso a [host], verá por qué pronto.


es SH

"Agregar configuración...", complete las cosas habituales para el servidor/nombre de usuario/etc. Cerca de la parte inferior, puede elegir SSH> Ninguno, y verá una opción para "Túnel", seleccione eso. Elija el botón para "Agregar túnel".

Puerto local: 8080

Anfitrión de destino: [anfitrión]

Puerto de destino: 8080

Guarde todo y abra la conexión.


ProxyBrowse

Servidor: servidor local

Puerto: 8080

No complete el nombre de usuario o la contraseña, no será necesario, porque iSSH ya creó el túnel e iSSH continúa ejecutándose en segundo plano en su iPhone.

Eso es todo, ahora puede navegar por la web a través de un túnel SSH.


¿Quieres ir un paso más allá? Instale Tor en su servidor, haga que el túnel iSSH se conecte al puerto Tor y luego, desde su teléfono, podrá navegar por Internet de forma anónima.

Para los técnicamente inclinados que quieren un poco más de detalles sobre lo que acaba de suceder:

[host] : ssh -f -N -D 8080 [host]
[client_tunnel] : ssh -L 8080:localhost:8080 [host]
[client_socks5] : localhost:8080

El navegador proxy SOCKS se comunica a través del túnel de reenvío de puerto local con el túnel de reenvío de puerto dinámico en el servidor.

primero

Esto no cubre ninguno de los accesos a la red excepto ProxyBrowse. El correo electrónico, por ejemplo, está desprotegido.

Si tiene acceso al shell (jailbreak) y puede colocar el proxy.pacarchivo en la ubicación mencionada anteriormente, también puede usar el siguiente enlace para el proxy.pacarchivo en las preferencias de red para la conexión que está intentando tunelizar:

file://private/var/preferences/proxy.pac

Junto con un túnel SSH a un servidor SSH en EE. UU., puedo escuchar Pandora/Slacker, etc. a través
de Wi-Fi fuera del área de cobertura permitida (es decir, mientras viajo fuera de EE. UU.).