martes, 19 de noviembre de 2013

VPN "para pobres"

Una VPN (Virtual Private Network) permite crear un "túnel" a través de Internet de forma que un ordenador remoto actúe como si estuviera en una red privada.

Hay numerosos tutoriales en la red sobre cómo crear y configurar VPNs en Linux, así que de momento, no voy a entrar en este tema. Lo que propongo aquí es una alternativa rápida que puede ser útil si sólo se quiere utilizar una aplicación concreta de la red local o acceder a algún tipo de servicio que no está disponible remotamente.

Lo único que necesitamos es tener un servidor ssh en algún ordenador de la red local que tenga una ip pública* (además de otra ip perteneciente a la subred) para que podamos conectarnos desde el ordenador remoto. Éste, por su parte, tendrá que tener un cliente de ssh. Ambos, cliente y servidor, suelen venir instalados por defecto en muchas distribuciones.

En el cliente (ordenador remoto) tendremos que escribir:

ssh usuario@ip_pública -L puerto_local:ip_privada_servicio:puerto_servicio

Lo que estamos haciendo es conectarnos por ssh al ordenador de la red local y decirle que redirija el tráfico que proviene de la ip_privada_servicio a través del puerto_servicio a nuestro ordenador en el puerto_local.

Vayamos término a término:
  • usuario: un usuario que tengamos en el ordenador que tiene el servidor ssh. Al ejecutar el comando ssh nos pedirá la contraseña.
  • ip_pública: también podría ser el nombre del ordenador en la red y utilizar dns. Ejemplos: "icaro.empresa.es", "163.100.60.23".
  • puerto_local: ponemos el que queramos. Yo normalmente pongo un valor grande, de puertos que no están asignados, para que no haya conflicto. Si queremos poner puertos ya asignados, tendremos que ejecutar el comando como root.
  • ip_privada_servicio: sería la ip privada (aunque también podría ser pública, dependiendo de cómo sea la subred) perteneciente a la red local a la que no se puede acceder desde Internet. Ej: "10.2.101.35"
  • puerto_servicio: el puerto del servicio al que queremos acceder en la red local. Ej: "80" en el caso de la web.
Un ejemplo de uso podría ser que desde mi casa quiero acceder a una web de la empresa que sólo es accesible en la red local. Supongamos que tengo un ordenador en esa red que se llama "icaro" y tiene como ip pública 163.100.60.23. En "icaro" tengo un usuario que se llama "irene". El ordenador de la red local que aloja la página web tiene como ip privada 10.2.101.35.

En un terminal, ejecuto:

ssh irene@163.100.60.23 -L 10000:10.2.101.35:80

Me pedirá la contraseña de "irene". Después, en un navegador, puedo poner localhost:10000 y eso me permite acceder a la página web como lo haría desde "icaro".

*Una ip pública es aquella a la que se puede acceder a través de Internet, es "visible" para todo el mundo y, por tanto, tiene que ser única en la red. Una ip privada es sólo visible para la subred en la que se encuentra, como ocurre generalmente en nuestras casas (el router tiene una única ip pública que nos da la compañía para comunicarnos con el exterior y todos los ordenadores/dispositivos que tenemos en casa se conectan a él mediante ips privadas). Los rangos de direcciones para ips privadas son: de 10.0.0.0 a 10.255.255.255, de 172.16.0.0 a 172.31.255.255 y de 192.168.0.0 a 192.168.255.255.

viernes, 15 de noviembre de 2013

Instalación de Matlab 2012 en Linux

Yo lo he hecho siguiendo esta página y me ha ido bien:

http://rutaxt.blogspot.com.es/2012/05/como-instalar-matlab-2012-en-linux.html

Lo único malo es que salta publicidad, pero si la minimizamos y no le hacemos caso, no pasa nada.

Aparte de lo explicado en la web anterior, otro paso más que yo he dado es crear un enlace simbólico para lanzar Matlab desde línea de comandos escribiendo sólo "matlab":

sudo ln -s /usr/local/MATLAB/R2012a/bin/matlab /usr/bin

Lo que estamos haciendo es crear un enlace simbólico en la carpeta donde están las aplicaciones (/usr/bin) llamado "matlab" que apunta al script /usr/local/MATLAB/R2012a/bin/matlab

Asociar magnets en Firefox

El protocolo magnet es muy útil cuando queremos descargar torrents. Cada vez que tengo que configurar un nuevo ordenador, se me olvida que para que funcione con Firefox hay que seguir primero unos pasos.

En la siguiente web viene muy bien explicado:
http://blog.desdelinux.net/como-asociar-los-magnet-links-en-firefox/

Resumiendo, hay que seguir los siguientes pasos:
  1. Abrir Firefox y escribir about:config en la barra de direcciones
  2. Saldrá un aviso para "manazas": hay que darle al botón ¡Tendré cuidado, lo prometo!
  3. En el listado de parámetros que aparece, hay que hacer clic derecho y seleccionar la opción Nuevo > Sí/No 
  4. El nombre de la preferencia es: network.protocol-handler.expose.magnet 
  5.  El valor que hay que darle es False, para que sólo nos pregunte a qué aplicación queremos asociar los magnets la primera vez.

miércoles, 13 de noviembre de 2013

Cambiar colores en el "prompt"

Una de las primeras cosas que me gusta configurar en Linux es el aspecto del terminal (línea de comandos, consola, etc).

Yo esto lo hago porque tengo tres ordenadores entre el del trabajo y los personales y tener en cada uno el prompt con diferentes colores me ayuda a distinguir rápidamente cuál estoy usando en cada momento (especialmente cuando trabajo de forma remota).



En la wiki de ArchLinux hay una entrada muy completa en la que se explican las diferentes posibilidades; en concreto a mí me gusta la versión en inglés, que es la que he enlazado.

Además del color, también se puede elegir cómo queremos que se muestre la información en el prompt. Yo no siempre uso la que viene por defecto, sino que me gusta que tenga el siguiente formato:

[usuario@nombre_equipo directorio_actual]$

En concreto, yo en el directorio actual muestro sólo la última carpeta en la que estoy, no la ruta completa, como se puede ver en la imagen anterior.

Todo esto se puede configurar editando el fichero .bashrc que tenemos en la carpeta pesonal (/home/usuario). Podemos usar cualquier editor de texto, ya sea por línea de comandos, como vim o nano, o gráfico como kate, gedit, geany, etc.

En ArchLinux sólo hay que editar una línea. Yo lo que hago es comentar* la que viene por defecto y escribir otra en la que hago los cambios.

#PS1='[\u@\h \W]\$ '
PS1='\[\033[1;36m\][\u@\h \W]\$\[\033[0m\] '

En este caso, sólo añado un color al principio y vuelvo al color por defecto al final para que lo que se escriba después del prompt ya salga normal. El color que yo he puesto en este caso es un cyan intenso, donde intenso significa que saldrá en negrita. En el artículo de la wiki de Arch tenéis la lista de colores posibles.

Como veis, \u es el usuario, \h, el nombre del host (equipo) y \W el directorio actual sin poner la ruta completa (para poner toda la ruta sería \w).

En Ubuntu en realidad es hacer lo mismo, pero el .bashrc por defecto viene más completo, con una estructura condicional en la que podemos elegir si queremos un prompt coloreado o el por defecto.

- Por un lado, queremos que tome el prompt coloreado, para lo que hay que descomentar la línea:
#force_color_prompt=yes

- Por otro, editamos el prompt coloreado a nuestro gusto. Yo además del color, como he comentado, también cambio la manera de visualizar las cosas. El modo original sería:
usuario@nombre_equipo:ruta_completa_directorio_actual$

Y yo le añado los [] al principio y al final, cambio : por un espacio y no pongo la ruta completa.

Todo esto os lo muestro en las siguientes  líneas:

if [ "$color_prompt" = yes ]; then
    PS1='\[\033[1m\]\[\033[35m\][${debian_chroot:+($debian_chroot)}\u@\h \W]$ \[\033[0m\] '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi

 

En este caso, he puesto por separado el color y la intensidad, simplemente para que veáis las dos formas posibles. Es equivalente a ponerlo como en el ejemplo de Arch, \[\033[1;35m\].



*Para los no familiarizados con la programación, los comentarios son porciones de código que no se ejecutan. Ahí podemos poner lo que queramos, así que se suele utilizar para explicar lo que hace una porción de código o para "reservar" código que ahora no se usa pero que puede querer usarse en un futuro - esto último no es una práctica muy deseable, pero se utiliza ;)
En concreto en bash, los comentarios empiezan por #, así que cualquier línea que lo tenga al principio es como si no estuviera.

martes, 12 de noviembre de 2013

Linux para "dummies"

Llevo usando Linux desde que era pequeña, así que he pasado por diferentes distribuciones y entornos de escritorio. Aun así, después de más de 10 años de usuaria, sigo teniendo dudas básicas que, cuando pregunto a mis compañeros, desencadenan un "¿de verdad no sabes eso?".

Linux siempre se ha considerado algo para "frikis", así que empezar a abrirse paso es complicado y, generalmente, no hay nadie que te explique las cosas desde cero, se presupone que tienes que estar ducho en toda clase de comandos.

Ésta es una de las principales razones por las que he empezado la sección de "tecnología", para intentar ponerla "al alcance de todos", para intentar explicar las cosas como me gustaría que me las hubieran explicado a mí. Para que otras personas también puedan participar y enseñarme "trucos" que han ido aprendiendo con el tiempo. Para que los que somos usuarios no expertos podamos aprender a soltarnos y perder el miedo a todo lo que no sea darle a tres botones en una interfaz :)

Actualmente, estoy trabajando con dos distribuciones distintas: Ubuntu 12.04 y ArchLinux.

Y ya que nos ponemos en lo básico, empecemos por el principio, ¿qué es una distribución? Aunque en la Wikipedia viene muy bien explicado, resumiendo, las distribuciones son como un "pack" en el que se incluyen el "kernel" de Linux (un sistema operativo basado en Unix), una serie de librerías y un conjunto de paquetes de software, así como la forma de gestionarlos.

El gestor de paquetes de cada distribución es diferente, pero todos se basan en lo mismo: permiten instalar diferentes programas y sus dependencias por medio de unos bloques o "paquetes" que pueden tener diferentes extensiones (.deb, .rpm, etc).

Cada distribución, además, suele tener asociado un entorno de escritorio ("las X" o el "servidor de las X" son términos que también se utilizan). Los principales de los que habréis oído hablar son Gnome y KDE, pero hay también otros. Normalmente, cada distribución trae uno por defecto, pero suele ser configurable. Al igual que pasa con las distribuciones, decir cuál de estos entornos es mejor es imposible. Cada uno tiene sus seguidores y suele ser difícil convencer a los usuarios de uno para que se pasen al otro :)

Así que las distribuciones son simplemente eso, una forma de distribuir el software de forma modular. Algunas, además, están soportadas comercialmente, pero en concreto las que yo uso son gratuitas y el mayor soporte es la comunidad.


¿Por qué Ubuntu 12.04 y ArchLinux?

Cuando uno empieza en el "mundo Linux" es más sencillo utilizar distribuciones como Ubuntu, en las que todo viene más configurado por defecto y están más preparadas para usar nada más instalar. Ubuntu tiene la ventaja de que cada vez empieza a haber más aplicaciones desarrolladas (compiladas) para ella y es de las más fáciles de usar.

Por temas de compatibilidad, utilizo Ubuntu 12.04 en la Universidad. La versión concreta se debe a que es una versión "LTS" (long term support), lo cual significa que seguirá habiendo actualizaciones y parches durante 5 años. Esta "estabilidad" es buena cuando se trabaja en equipo desarrollando software, pero para un usuario particular, está muy bien tener la última versión.

En Ubuntu, las versiones se etiquetan según el año y el mes de lanzamiento. Por ejemplo, 12.04 indica que salió en abril de 2012.

Las nuevas versiones de Ubuntu traen el entorno Unity, diseñado para ser más "usable" que los anteriores de Gnome. Esto ya va en gustos. Yo personalmente prefiero utilizar KDE y así lo tengo configurado. Aunque en el día a día, casi todo lo que uso es por línea de comandos, así que poco importa el entorno de escritorio...

Por otra parte, cuando ya se tiene algo más de conocimiento sobre Linux, Arch presenta la ventaja de ser muy ligero y configurable. Llevo utilizándolo en mi ordenador personal menos de un año, pero estoy muy contenta con él. Tienes que instalarlo tú todo y requiere más tiempo de configuración, pero si te gusta tenerlo todo personalizado, merece la pena.



Partiendo de esto, los posts que iré poniendo serán sobre cosas con las que yo me vaya encontrando. No es mi intención hacer tutoriales extensos para cada tipo de sistema sino solucionar problemas que, como a mí, les hayan podido surgir a otras personas. De antemano digo que no soy ninguna experta y que a mí también me gustaría poder aprender de los comentarios de los demás.

Nota: puede que la terminología que he usado no sea del todo precisa; mi objetivo no es ser purista, sino que cualquiera pueda entenderlo.

Nueva sección: Tecnología

Después de abandonar el blog durante más de un año por falta de tiempo, vuelvo a la carga con esta nueva sección.

Mi idea es utilizar este espacio para compartir trucos, enlaces e información en general, que pueda ser útil para aquellos que, como yo, tienen que pelearse a diario con ordenadores.

Por supuesto, si se me ocurre alguna frikada que incluir, no dudéis que lo haré, ¡la cabra siempre tira al monte! :)