9 votos

¿Por qué los navegadores ignoran /etc/hosts detrás de un proxy SOCKS?

Mi MacBook en la oficina no tiene acceso a Internet. Así que configuré un proxy SOCKS instantáneo a través de SSH para navegar por la web.

Sin embargo, cuando intento añadir una entrada a /etc/hosts El navegador no va al sitio que esperaba...

El WIFI de mi MacBook está apagado y está conectado a la LAN de la empresa:

 IP address:  192.168.8.250
 Subnet mask: 255.255.255.0
 Router:      192.168.8.1
 DNS server:  8.8.8.8

Por defecto, no hay acceso a Internet.

Hay una caja de desarrollo de Linux (192.168.12.128) que tiene acceso a Internet, así que configuré un proxy SOCKS instantáneo para obtener acceso a Internet para mi MacBook:

 ssh -fND localhost:30000 ohho@192.168.12.128

Luego, en las Preferencias del Sistema de mi MacBook > Red > Proxies

 (Enable) SOCKS Proxy
 SOCKS Proxy sever: 127.0.0.1:30000
 Bypass proxy settings for these Hosts & Domains:
   *.local, 169.254/16, 127.0.0.1

Ahora puedo navegar por la web, hasta ahora todo va bien.

Para el desarrollo, establecí algunas entradas en /etc/hosts para el propósito de los hosts virtuales:

 127.0.0.1 air.company.com

En bash :

 $ ping air.company.com
 PING air.ohho.es (127.0.0.1): 56 data bytes
 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.046 ms

 $ curl air.company.com
 <html>OK</html>

Se ve bien y curl devuelve el contenido del index.html muy bien.

Sin embargo, si intento abrir el sitio: http://air.company.com en los navegadores (Safari/Chrome/Firefox), ninguno de ellos devuelve el resultado como curl lo hizo. Chrome da un error:

Esta página web no está disponible La página web en http://air.company.com/ puede estar temporalmente fuera de servicio o puede haberse trasladado permanentemente a una nueva dirección web. Error 120 (net::ERR_SOCKS_CONNECTION_FAILED): Desconocido error.

Si añado otra entrada en /etc/hosts :

 127.0.0.1 www.microsoft.com

En bash :

 $ ping www.microsoft.com
 PING www.microsoft.com (127.0.0.1): 56 data bytes
 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.047 ms
 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.128 ms
 ^C
 --- www.microsoft.com ping statistics ---
 2 packets transmitted, 2 packets received, 0.0% packet loss
 round-trip min/avg/max/stddev = 0.047/0.087/0.128/0.041 ms

 $ curl www.microsoft.com
 <html>OK</html>

Sin embargo, los navegadores devuelven el contenido del servidor web del sitio real de Microsoft, en lugar del contenido de mi MacBook (127.0.01). ¿Por qué?

p.d.

Si desactivo el proxy SOCKS, el navegador devuelve el contenido de 127.0.0.1 correctamente.

Si desconecto el cable LAN, el navegador devuelve el contenido de 127.0.0.1 correctamente.

8voto

Nick Kavadias Puntos 9310

Tu navegador está preguntando al proxy SOCKS por los sitios, no se está conectando directamente. Por lo tanto, poner la dirección IP en la lista de excepciones no funciona, ya que tu ordenador no está realizando la búsqueda de air.company.com a 127.0.0.1. El proxy SOCKS es.

Para evitar esto, coloque el nombre de dominio completo de lo que está accediendo localmente en la lista de excepciones en Preferencias del Sistema > Red > Proxies.

Así que para air.company.com vería una lista de excepciones (de su ejemplo anterior) de:

  *.local, 169.254/16, 127.0.0.1, air.company.com

Su ordenador se conectará ahora a air.company.com directamente, y por lo tanto hará uso de /etc/hosts.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X