En algunas organizaciones existe una red que requiere de autenticación por proxy para salir a Internet. Normalmente la configuración del proxy de la red es bastante sencilla y gráfica cuando estamos en un computador con Windows o Macintosh, incluso cuando no vamos a hacer otra cosa más que navegar en una máquina con Linux y alguno de los escritorios más populares. Muchas aplicaciones no toman en cuenta la configuración del proxy del sistema operativo y proveen una interfaz propia para estos menesteres. Es el caso de Dropbox o Synaptic, por ejemplo. Esto se da aún con más frecuencia cuando estamos intentando acceder a Internet desde aplicaciones en modo de texto en Linux. Dado que estas aplicaciones no dependen de un entorno de escritorio, no pueden esperar que instalemos Gnome o KDE (por ejemplo) para configurar el proxy y usar esa configuración. Están, por así decirlo, una capa por debajo.

Configuración básica

Aún más por debajo de las aplicaciones en modo de texto se encuentran las variables de entorno del sistema. Las variables de entorno http_proxy, https_proxy, ftp_proxy, rsync_proxy y no_proxy son usadas por ciertos programas (como wget y lynx) para extraer la configuración del proxy. Tienen la forma protocolo_proxy. Por ejemplo:

export http_proxy = http://10.203.0.1:5187/
export https_proxy = $http_proxy

Automatizando

Alan Pope, según este artículo de ArchLinux en el que me basé, dio con una manera de automatizar la levantada del proxy:

function proxy(){
  echo -n "Usuario:"
  read -e username
  echo -n "Clave:"
  read -es password
  export http_proxy="http://$username:$password@proxyserver:8080/"
  export https_proxy=$http_proxy
  export ftp_proxy=$http_proxy
  export rsync_proxy=$http_proxy
  export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"
  echo -e "\Proxy configurado."
}
function proxyoff(){
  unset HTTP_PROXY
  unset http_proxy
  unset HTTPS_PROXY
  unset https_proxy
  unset FTP_PROXY
  unset ftp_proxy
  unset RSYNC_PROXY
  unset rsync_proxy
  echo -e "\nProxy removido."
} 

La idea es añadir esas funciones a nuestro archivo .bashrc. De ese modo, siempre que tengamos que usar el proxy desde la consola, primero llamamos la función proxy:

$ proxy
Usuario:sergio
Clave:
Proxy configurado.
$ wget www.google.com
...
$ proxyoff
Proxy removido.
$

¿Y sudo?

Como para ahora se supondrá, la configuración del proxy no perdura cuando estamos haciendo tareas que involucran sudo, como instalar paquetes por medio de apt. Para esto, accedemos a la configuración de sudo por medio del comanto visudo y añadimos la siguiente línea:

Defaults env_keep += "http_proxy https_proxy ftp_proxy"

Esto mantendrá las variables de entorno dadas del usuario que está llamando a sudo, en este caso, las correspondientes al proxy.

Disclaimer

Esta entrada es básicamente una traducción al español de la documentación de ArchLinux encontrada en el artículo anterioemente mencionado. La escribo para poner la información a disposición de aquellos que puedan leerla, así como a manera de bitácora. La red de la Universidad Nacional me obligó a usar esta información. Que la red no haya funcionado y al final me haya dado la misma es otro cuento.

Blog Logo

Sergio Pérez


Published