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

1

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

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

    
pregunta gaidink 14.08.2018 - 09:50

2 respuestas

1
  

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

Ha configurado varios servidores proxy en las Preferencias del sistema, y esa es la forma correcta de hacerlo (por eso la aplicación App Store y Safari funcionan bien). Desafortunadamente, Terminal es una excepción y necesita su propia configuración de proxy.

¿Por qué es eso? Terminal es simplemente un contenedor que ejecuta un shell . Un shell es un programa que, en pocas palabras, muestra un aviso y espera pacientemente a que ejecutes comandos como ls y rm .

Los shells son anteriores a macOS y tienen sus propias reglas para configurar proxies . Shells no sabe nada acerca de la configuración del proxy en las Preferencias del sistema, y deben configurarse por separado.

el shell predeterminado de macOS es Bash (puede averiguar qué shell está ejecutando ejecutando echo $0 en el indicador), así que le explicaré cómo configurar el proxy en Bash.

La solución simple

  1. Inicie 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. Establezca el proxy variables de entorno escribiendo el siguiente texto en TextEdit y reemplace <your http proxy> , <your https proxy> y <your ftp proxy> con su servidor proxy (si TextEdit ya contiene texto, agregue el siguiente texto 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 ha configurado en Preferencias del sistema una lista de hosts y dominios con los que se debe contactar directamente omitiendo el proxy, agréguelos de esta manera:

    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 cierre TextEdit.

  5. Cierre la Terminal y vuelva a abrirla. Ahora la configuración del proxy debería funcionar correctamente.

Una solución más elaborada

El método anterior tiene un inconveniente : debe mantener dos configuraciones, la de Preferencias del sistema y la de .bash_profile .

Afortunadamente, como se explica en blog de Derek Morgan , puede hacer que Bash importe el Preferencias del sistema, configuración de proxy mediante el comando scutil . Simplemente siga los pasos detallados en la sección anterior, pero en el paso 3 configure las variables de entorno proxy http / https / ftp de la siguiente manera:

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, establezco http:// como el esquema para todos los servidores proxy, es posible que necesite modificarlos a socks5:// para SOCKS o https:// para HTTPS según sea necesario.

    
respondido por el jaume 14.08.2018 - 17:33
1

Suponiendo que te refieres a que las aplicaciones / protocolos como ssh no pueden conectarse debido al proxy.

Para conectarte, debes "hacer un túnel" a través del proxy HTTP

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

Reemplace USERNAME, REMOTEHOST, PROXY y PORT con sus valores respectivos.

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

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

El ServerAliveInternal está allí porque la mayoría de los proxies eliminarán la conexión si no hay actividad durante un cierto período de tiempo.

Luego, para conectarte, todo lo que tienes que hacer es:

ssh remotehost.foo.bar
    
respondido por el Allan 14.08.2018 - 18:51

Lea otras preguntas en las etiquetas