domingo, 2 de diciembre de 2012

Algunas cosas a considerar si se esta utilizando Linux como sistema operativo

   De hace algún tiempo para acá he decidido centrarme única y exclusivamente en trabajar dentro de un ambiente Linux (en mi caso particular utilizo la distribución Ubuntu 12.10), las razones de esto son variadas:

  1. Me gusta lo rápido y robusto que es.
  2. Me gusta el parque de aplicaciones libres que se pueden encontrar.
  3. La fácil y amplia personalización que posee.
  4. La clase de juegos de video que me gustan normalmente no los consigo aquí, ergo menos distracciones, mas trabajo.
  5. Quiero sentirme cómodo en un ambiente que permite ser totalmente controlado por linea de texto en preparación para mi trabajo con servidores. 
  6. No quiero sentirme amarrado a solo un sistema operativo y sus consecuentes problemas y limitaciones, me gusta la variedad. 
  7. Si bien existen virus, exploits, adware, troyanos, etc, para Linux, la sensación de confianza que este me transmite es mayor que la de Windows.

   Windows ha quedado para mi relegado a segundo plazo, y a un primer plazo si lo que deseo es jugar videojuegos.

   Dicho esto, vamos a lo que nos compete, Linux es un sistema basado en UNIX, es por ello que básicamente todo se puede controlar por medio de linea de comandos (o shell). Si bien no soy aun un experto en la materia daré algunos consejos respecto a esto (obviamente todo basado en la distribución que utilizo, reitero, Ubuntu 12.10).

Primeramente pueden abrir un terminal (o shell) desde la ventana de aplicaciones, la que aparece al darle al botón de inicio windows en sus teclados y escribir terminal:




   O sencillamente utilizando el atajo de teclado CTRL+ALT+T. Existen varias versiones de la terminal, todas trabajan exactamente igual pero añaden funcionalidades extras, en mi caso trabajo con la que viene por defecto (y es la que utilizare a lo largo de esta miniguia).
 

 Al abrir una terminal se encontraran con algo como esto:
 

   Notese que la primera linea que aparece es básicamente nuestro nombre de usuario, recordar que Linux esta ampliamente orientado a la gestión multiusuario, así que es importante conocer en todo momento con que usuario estamos trabajando lo cual nos lleva a nuestro primer comando:

who am i  (si tecleamos esto nos dará información sobre el usuario actualmente utilizado)   

sudo (o el señor que da acceso a todo)

   Linux es un sistema bastante seguro respecto a los privilegios de usuario, cuando lo instalan y crean el primer usuario tienen que introducir una contraseña, esta contraseña da privilegios de root o superusuario a la cuenta (en windows vendría siendo lo análogo a una cuenta de tipo administrador). Normalmente si se quiere ejecutar un comando con privilegios root basta con agregar la palabra sudo antes del comando, y luego de que le den a enter este les solicitara la contraseña de superusuario de la cuenta en la que están metidos.

¿Por que es esto importante?
    Sencillo, al igual que en windows, sin privilegios de superusuario hay ciertas cosas que no se pueden hacer, como por ejemplo instalar o desinstalar programar, correr scripts que modifiquen cosas importantes del sistema, ver, modificar, borrar, contenido sensible del sistema, etc.

   Por ejemplo si queremos instalar un programa (siempre y cuando conozcamos su nombre y se encuentre dentro de los repositorios almacenados) desde el gestor de paquetes Aptitude (Synaptic viene siendo la versión de interfaz gráfica del mismo) basta con teclear lo siguiente:

sudo apt-get install "nombre del programa" Sin las comillas obviamente

   Tras lo cual nos pedirá nuestra contraseña y luego de introducirla nos pedirá si queremos instalar el programa elegido, al darle a si, el mismo descargara, desempaquetara e instalara el software. Todo esto se puede apreciar en las capturas siguientes:

No se preocupen si no ven asteriscos al introducir su contraseña, es normal
Si tecleamos S o Si y luego damos enter, nos descargara e instalara el programa, luego de instalado desde cualquier terminal con solo escribir el nombre podremos ejecutarlo, o también buscarlo dentro de los programas instalados (dandole al boton de inicio windows del teclado)

Nota: si cierran la terminal desde el cual ejecutan un programa, también se cierra el programa

  Adicionalmente, si desean desinstalar el programa basta con escribir lo siguiente:

sudo apt-get remove "nombre del programa" Nuevamente sin las comillas

  Si han llegado a este punto asumo que ya se dan una idea de como manejarse dentro de la terminal, asi que ahora pasare a listar algunos comandos utiles.

CD "Directorio destino": al igual que en windows nos permite cambiar de directorio.Mas adelante en otra entrada, hablare sobre el sistema de archivos de Linux.
PWD: Nos indica en que ruta del sistema de archivos nos encontramos. 
LS: Lista todo el contenido (carpetas y archivos) que se encuentran dentro de la ruta en que nos encontramos.
GEDIT "Nombre del archivo": Nos permite editar archivos en modo texto utilizando como editor el programa gedit, si no estamos dentro de la ruta (observar la ruta al lado del nombre de usuario o utilizar PWD) del archivo, debemos colocarla también.
BASH "Nombre del Script": Permite ejecutar un Script de shell, como alternativa pueden escribir SH en lugar de BASH. Recordar que deben estar dentro de la ruta del archivo (o especificarlo en su nombre). 

Nota 2: Concerniente a las rutas con los nombres de archivos, las rutas se describen al igual que en windows, ejemplo tenemos un archivo llamado "Hola" dentro de una carpeta que se llama "Programas" que a su vez esta dentro de una carpeta llamada "Rafael", la ruta del archivo seria /Rafael/Programas/Hola. Deben colocar las mayúsculas que contenga el nombre. Ejemplo: bash /Rafael/Programas/Hola

Nota 3: Si el nombre del archivo o programa contiene espacios, deben englobarlo todo entre comillas, tomando como base el ejemplo anterior si el archivo se llamase Hola Como Estas, la ruta seria /Rafael/Programas/"Hola Como Estas"

Nota 4: recuerden que todos los comandos aquí descritos pueden ejecutarse en modo root utilizando el prefijo sudo, útil por ejemplo si pretenden editar un archivo del sistema con gedit. 

Nota 5: en cualquier momento pueden detener la ejecución de un comando tecleando CTRL+C. 

Instalación de programas por medio de sus archivos fuentes

  Muchos programas disponibles para Linux vienen sin compilar y se requiere entonces compilarlos para luego instalarlos, para hacer esto seguiremos estos pasos:
  1. Nos ubicamos en la carpeta raíz donde se encuentra el archivo de configuración (para saber esto deben leer la documentación del programa, aunque normalmente se encuentra dentro de la carpeta raíz donde están todos los componentes.
  2. Ejecutamos el comando ./configure
  3. Se creara un archivo make, ejecutamos el comando make.
  4. Procedemos a instalar con make install.
Ejemplo, tengo un programa para instalar de esta forma ubicado en mi carpeta de descargas y la carpeta del programa se llama Hola, el archivo de configuración se encuentro dentro de Hola.

cd /Descargas/Hola
   Luego seguimos los pasos 2, 3 y 4 de la lista anterior en orden tal cual están y listo, nuestro programa esta instalado.

   Esto es todo por esta vez, luego publicare mas comandos útiles para moverse dentro de la terminal de Linux.

Ficha para configurar una red por rutas estaticas

  Normalmente, cuando configuramos una red debemos siempre seguir una serie de pasos que si bien dentro de cada uno de estos pueden variar en complejidad, la sumarización de todos tiende a ser algo bastante mecánico. En este caso les traigo una pequeña lista paso a paso de que se debe hacer para configurar una red por medio de rutas estáticas, no es algo muy elaborado pero en mi caso, viene a ser útil para cuando quiero llevar un orden de lo que hago.

Pasos generales para configurar una red con rutas estáticas 


1.- Ubicar/seleccionar la IP base que se va a utilizar
2.- Subnetear de ser necesario esta IP base según los requerimientos de hosts. Incluyendo las subredes necesarias para los enlaces WAN.
3.- Conexión de los dispositivos (Routers, Switches, equipos, etc) presentes en la red.
4.- Configuración de los routers:
    a.- Entrar al modo privilegiado (enable)
    b.- Entrar al terminal de configuración (config terminal)
    c.- añadir un nombre al router (hostname "nombre")
    d.- añadir una contraseña al modo enable (enable secret "contraseña")
    e.- añadir un ID de acceso al terminal de configuración (line con 0; password "contraseña"; login)
    f.- añadir un mensaje del día (banner motd #mensaje#)
    g.- entrar a cada interface, asignarle una IP, MSK, Identificación, velocidad de reloj en caso de ser serial DCE y activar (interface "interfaz a configurar"; ip address IP MSK; description "nombre"; clock rate "velocidad"; no shutdown)
    h.- asignar las rutas estáticas, sumarizadas de ser posible  (ip route IP_RED MSK Interfaz o IP_SALIDA)
    i.- asignar una ruta estática predeterminada de ser necesario
    j.- asignar una ruta estática flotante de ser necesario
    k.- guardar la configuración (copy running-config startup-config o copy run start)
    l.- verificar la configuración (show interfaces, show ip interface brief, show running-config)
5.- configurar los equipos presentes en la red
6.- verificar el correcto funcionamiento de todo por medio de los equipos (ping, arp, netstat, show ip route, traceroute)
   
Sumarización de rutas estáticas

    Permite englobar múltiples subredes dentro de una única dirección de red, disminuyendo el tamaño de la tabla de enrutamiento y por consecuencia aumentando el rendimiento del dispositivo. Solo puede realizarse si:
          a.- Las subredes pueden englobarse dentro de una única dirección de red.
          b.- Todas las subredes utilizan la misma IP de siguiente salto o interfaz de salida.

Pasos para realizar la sumarización

1.- Se escriben todas las IPs de las subredes que cumplen con lo estipulado anteriormente, una debajo de la otra en binario.
2.- Bit a Bit comenzando desde el bit de la izquierda se hace una comparación de columnas, si se encuentra una que no coincide, se detiene el proceso, ese es el máximo de bits posibles para la sumarización.
3.- La dirección IP sumarizada sera la formada por todos los bits previos coincidentes seguidos de suficientes 0s para completar los 32 bits. La mascara, corresponde al numero de bits coincidentes

   Ejemplo
                      Dirección A:  10100000.11010000.01011010.11110000  por la interfaz s0/0/0
                      Dirección B:  10100000.11100000.11110000.00001111  por la interfaz s0/0/0
                      Dirección C;  10100000.10111110.00000111.11011001  por la interfaz s0/0/0

     Las 3 direcciones solo coinciden en los 9 primeros bits, tomamos estos y los demás los volvemos 0 (10100000.10000000.00000000.00000000), nuestra dirección sumarizada en decimal es entonces 160.128.0.0/9. basta con hacer un ip route 160.128.0.0 255.128.0.0 s0/0/0 para abarcar las redes en una sola entrada de ruta estática. Esto funciona porque la mascara de subred es la que determina cuantos bits deben coincidir entre la IP origen y destino, estamos reduciendo esta cantidad a lo mínimo posible,

  Ruta estática predeterminada (gateway of last resort)

   La ruta estática predeterminada es una ruta que se utiliza en caso de que el paquete a enviar contenga una dirección que no aparece listada en ninguna ruta especifica de la tabla de enrutamiento. Se configura de la misma manera que una ruta normal solo que su dirección IP y mascara serán ambas 0.0.0.0, ejemplo ip route 0.0.0.0 0.0.0.0 interfaz o IP próximo salto. Normalmente son utilizadas cuando el router configurado esta a su vez conectado a otro router que se utiliza para una sola ruta especifica o cuando se establecen conexiones a ISP (internet service provider).

   Ruta estática flotante (o de respaldo)

   Una ruta estática flotante es una ruta de respaldo que se utiliza solo cuando la ruta principal cae, los routers ajustan la prioridad de una ruta en función de su distancia administrativa, tomando en cuenta solo la ruta que posea el menor valor, este valor varia entre 0 - 255 y se coloca al final de todos los parámetros del comando ip route. Ejemplo, tenemos dos posibles via para llegar a la red 192.168.1.0 255.255.255.0 por la interfaz s0/0/0 o por la ruta de respaldo en s0/0/1.

Ajustamos la interfaz s0/0/0 como principal: ip route 192.168.1.0 255.255.255.0 s0/0/0 1
Ajustamos la interfaz s0/0/1 como secundaria: ip route 192.168.1.0 255.255.255.0 s0/0/1 2
 
  En el caso de que la ruta principal falle (por ejemplo, se desconecte el cable de conexión) se borra automáticamente esta entrada de la tabla de enrutamiento y se asigna la de respaldo.