¿Cómo configuro el proxy para determinadas redes para que funcione bien en todas las aplicaciones?
Has configurado varios proxies en las Preferencias del Sistema, y esa es la forma correcta de hacerlo (por eso la aplicación App Store y Safari funcionan bien). Por desgracia, Terminal es una excepción y necesita su propia configuración de proxy.
¿Por qué? La terminal no es más que un contenedor que ejecuta un shell . Un shell es un programa que, en pocas palabras, muestra un prompt y espera pacientemente a que usted ejecute comandos como ls
y rm
.
Los shells son anteriores a MacOS y tienen sus propias reglas para configurar los proxies . Los shells no saben nada de la configuración del proxy en las Preferencias del Sistema, y tienen que ser configurados por separado.
El shell por defecto de MacOS es Bash (puedes saber qué shell estás ejecutando ejecutando echo $0
en el prompt) así que explicaré cómo establecer el proxy en Bash.
La solución sencilla
-
Inicie el Terminal y escriba este comando para cambiar el directorio a nuestro directorio principal:
cd ~
-
Escriba estos comandos para abrir .bash_profile
con TextEdit:
touch .bash_profile
open -a TextEdit .bash_profile
-
Establecer el proxy variables de entorno escribiendo el siguiente texto en TextEdit y reemplazando <your http proxy>
, <your https proxy>
y <your ftp proxy>
con su servidor proxy (si TextEdit ya contiene texto, añada el texto siguiente al final del archivo):
export HTTP_PROXY="<your http proxy>"
export http_proxy=$HTTP_PROXY
export HTTPS_PROXY="<your https proxy>"
export http_proxy=$HTTP_PROXY
export FTP_PROXY="<your ftp proxy>"
export ftp_proxy=$FTP_PROXY
Si has configurado en las Preferencias del Sistema una lista de hosts y dominios con los que se debe contactar directamente saltándose el proxy, añádelos así:
export NO_PROXY="<comma-separated list of hosts>"
export no_proxy=$NO_PROXY
Por ejemplo:
export HTTP_PROXY="http://10.11.0.1:8080"
export http_proxy=$HTTP_PROXY
export HTTPS_PROXY="http://10.11.0.1:8080"
export http_proxy=$HTTP_PROXY
export FTP_PROXY="http://10.11.0.1:8080"
export ftp_proxy=$FTP_PROXY
export NO_PROXY="localhost,127.0.0.1"
export no_proxy=$NO_PROXY
-
Guarde el archivo con ⌘S y cerrar TextEdit.
-
Cierra el Terminal y vuelve a abrirlo. Ahora la configuración del proxy debería funcionar correctamente.
Una solución más elaborada
El método anterior tiene un inconveniente : es necesario mantener dos configuraciones, la de Preferencias del Sistema y la de .bash_profile
.
Por suerte, como se explica en Blog de Derek Morgan , puede hacer que Bash importe la configuración del proxy de las Preferencias del Sistema utilizando el scutil
comando . Simplemente siga los pasos detallados en la sección anterior, pero en el paso 3 establezca las variables de entorno del proxy http/https/ftp como sigue:
export HTTP_PROXY=$(scutil --proxy | awk '\
/HTTPEnable/ { enabled = $3; } \
/HTTPProxy/ { server = $3; } \
/HTTPPort/ { port = $3; } \
END { if (enabled == "1") { print "http://" server ":" port; } }')
export http_proxy=$HTTP_PROXY
export HTTPS_PROXY=$(scutil --proxy | awk '\
/HTTPSEnable/ { enabled = $3; } \
/HTTPSProxy/ { server = $3; } \
/HTTPPort/ { port = $3; } \
END { if (enabled == "1") { print "http://" server ":" port; } }')
export https_proxy=$HTTP_PROXY
export FTP_PROXY=$(scutil --proxy | awk '\
/FTPEnable/ { enabled = $3; } \
/FTPProxy/ { server = $3; } \
/FTPPort/ { port = $3; } \
END { if (enabled == "1") { print "http://" server ":" port; } }')
export ftp_proxy=$FTP_PROXY
En las definiciones anteriores, establecí http://
como esquema para todos los servidores proxy, es posible que tenga que modificarlos para socks5://
para SOCKS o https://
para HTTPS según sea necesario.