3 votos

El proxy está configurado (correctamente, supongo). Appstore y Safari funcionan bien. Pero el tráfico de red en el Terminal no funciona

Establezca HTTP, HTTPS, FTP, SOCKS, Streaming, Gopher en 10.11.0.1 y el puerto 8080, sin nombre de usuario y contraseña. Y funciona para Safari y App Store. Y configure las mismas entradas para Firefox y también funciona sin problemas.

¿Cómo configuro el proxy para determinadas redes para que funcione bien en todas las aplicaciones?

4voto

Phill Puntos 126

¿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

  1. Inicie el Terminal y escriba este comando para cambiar el directorio a nuestro directorio principal:

    cd ~
  2. Escriba estos comandos para abrir .bash_profile con TextEdit:

    touch .bash_profile
    open -a TextEdit .bash_profile
  3. 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
  4. Guarde el archivo con S y cerrar TextEdit.

  5. 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.

3voto

Douglas Puntos 10417

Supongo que te refieres a aplicaciones/protocolos como ssh no puede conectarse debido al proxy.

Para conectarse, hay que hacer un "túnel" a través del proxy HTTP

ssh USERNAME@REMOTEHOST -o "ProxyCommand=nc -X connect -x PROXY:PORT %h %p"

Sustituya USERNAME, REMOTEHOST, PROXY y PORT por sus respectivos valores.

Si esto es algo que tiene que hacer más de una vez, añadir una entrada estática a su ~/.ssh/config es útil. Por ejemplo:

Host remotehost.foo.bar
    ProxyCommand          nc -X connect -x proxyhost:proxyport %h %p
    ServerAliveInterval   10

El ServerAliveInternal está ahí porque la mayoría de los proxies interrumpen la conexión si no hay actividad durante un tiempo determinado.

Entonces, para conectarse, todo lo que tiene que hacer es

ssh remotehost.foo.bar

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