Pourquoi les browsers ignorent / etc / hosts derrière un proxy SOCKS?

Mon MacBook dans le bureau n'a pas d'access à Internet. J'ai donc mis en place un proxy SOCKS instantané sur SSH pour naviguer sur le Web.

Cependant, lorsque j'essaie d'append une input dans /etc/hosts , le browser ne va pas au site que je prévoyais …

Le WIFI de mon MacBook est désactivé et est connecté au LAN de l'entreprise:

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

Par défaut, il n'y a pas d'access à Internet.

Il existe une boîte de développement Linux (192.168.12.128) qui a access à Internet, donc j'ai configuré un proxy SOCKS instantané pour accéder à Internet pour mon MacBook:

  ssh -fND localhost:30000 [email protected] 

Ensuite, dans les Preferences système de mon MacBook> Réseau> 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 

Maintenant, je peux naviguer sur le Web jusqu'à maintenant, bien.

Pour le développement, j'ai configuré quelques inputs dans /etc/hosts pour les servers virtuels:

  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> 

Il semble bien et curl renvoie le contenu de l' index.html bien.

Cependant, si j'essaie d'ouvrir le site: http://air.company.com dans les browsers (Safari / Chrome / Firefox), aucun d'entre eux ne renvoie le résultat tel que curl . Chrome donne une erreur:

Ce site Web n'est pas disponible. La page Web de http://air.company.com/ peut être temporairement désactivée ou peut-être déplacé définitivement vers une nouvelle adresse Web. Erreur 120 (net :: ERR_SOCKS_CONNECTION_FAILED): Erreur inconnue.

Si j'ajoute une autre input dans /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-sortingp min/avg/max/stddev = 0.047/0.087/0.128/0.041 ms $ curl www.microsoft.com <html>OK</html> 

Cependant, les browsers renvoient le contenu du server Web du vrai site Microsoft, au lieu du contenu de mon MacBook (127.0.01). Pourquoi?

ps

Si je désactive le proxy SOCKS, le browser renvoie le contenu de 127.0.0.1 correctement.

Si je déconnecte le câble LAN, le browser renvoie le contenu de 127.0.0.1 correctement.

Votre browser request le proxy SOCKS pour les sites, il ne se connecte pas directement. Par conséquent, mettre l'adresse IP dans la list des exceptions ne fonctionne pas, car votre ordinateur ne réalise pas le look up de air.company.com à 127.0.0.1. Le proxy SOCKS est.

Pour éviter cela, placez le nom de domaine complet de ce que vous accédez localement dans la list des exceptions dans Preferences système> Réseau> Proxies.

Donc, pour air.company.com, vous verrez une list d'exception (à partir de votre exemple ci-dessus) de:

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

Votre ordinateur se connecte maintenant à air.company.com directement, et utilise donc / etc / hosts.