viernes, 26 de noviembre de 2010

Página web con un vídeo de fondo usando HTML 5

Con la llegada de HTML 5 y sus nuevas etiquetas se pueden crear fácilmente paginas web con contenido multimedia que antes solo era posible mediante un plugin de flash. Aquí os dejo un ejemplo en el que se reproduce un vídeo HD como fondo de una pagina web.

El vídeo utiliza la etiqueta <video> de HTML 5 y el resto son estilos.




La Cocina de los Sistemas Operativos

Ya hace varios años que vi un post sobre una comparativa de los sistemas operativos Linux, MacOS y Windows con la comida. Hoy en uno de los curso ha surgido la conversación tipica de cual es mejor, si uno si otro y he recordado la existencia de este post:

http://www.jesusda.com/blog/index.php?id=261

Disfrutadlo

jueves, 18 de noviembre de 2010

Tetris 3D en HTML5

A veces también esta bien pasar el rato aprovechando las maravillas del HTML5. En este caso se trata del famoso tetris en version 3D. Bastante entretenido para relajarse un poco.
http://www.benjoffe.com/code/games/torus/


miércoles, 17 de noviembre de 2010

Cambiar en CentOS la función hash usada para las claves de los usuarios

Por defecto CentOS viene configurado para utilizar md5 como algoritmo hash para cifrar las claves de los usuarios. Esta función no es ni de cerca la mas segura, de hecho existen programas para obtener por fuerza bruta las claves cifradas con md5. Un ejemplo es John the Ripper.

lunes, 15 de noviembre de 2010

Comandos para la gestión de la red en Linux: dig

Normalmente los programas que necesitan traducir un nombre de dominio a dirección ip, usan un un programa llamado resolvedor que se encarga de obtener la dirección ip consultando tres lugares. Pero existen comandos como dig que permiten que el usuario pueda realizar consultas y ver las respuestas devueltas.

miércoles, 10 de noviembre de 2010

Comandos para la gestión de la red en Linux: route


Con el comando route se puede controlar el enrutamiento básico. Para ver la tabla de enrutamiento solo es necesario ejecutar:

route

Y el resultado obtenido es:

Tabla de rutas IP del núcleo
Destino      Pasarela                Genmask       Indic Métric Ref  Uso Interfaz
172.20.0.0   *                       255.255.0.0   U     1      0    0   eth0
link-local   *                       255.255.0.0   U     1000   0    0   eth0
default      router.trombotic.tic    0.0.0.0       UG    0      0    0   eth0

Ejecutado de esta forma, route intenta resolver los nombres de las direcciones ip que aparecen en las rutas, y si el dns no esta configurado o falla, el resultado tarda bastante en salir. Para evitarlo se puede utilizar route con la opción -n:

route -n

Y el resultado obtenido es:

Tabla de rutas IP del núcleo
Destino        Pasarela        Genmask         Indic Métric Ref    Uso Interfaz
172.20.0.0     0.0.0.0         255.255.255.0   U     1      0        0 eth0
169.254.0.0    0.0.0.0         255.255.0.0     U     1000   0        0 eth0
0.0.0.0        172.20.0.1      0.0.0.0         UG    0      0        0 eth0

Para modificar la tabla de enrutameinto añadiendo una nueva ruta, es necesario añadir varias opciones:

route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.20.0.2

En este caso se esta añadiendo una nueva ruta para llegar a la red (de destino) 10.0.0.0 con mascara (de la red de destino) 255.0.0.0 a través de la puerta de enlace (router) 172.20.0.2.

Para introducir la puerta de enlace predeterminada se ejecuta:

route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.20.0.2

Es importante recordar que la direccion ip y la mascara deben ser 0.0.0.0.

Cuando se borran rutas se ejecuta el comando route de esta forma:

route del -net 10.0.0.0 netmask 255.0.0.0 gw 172.20.0.2

Cuando solo hay una ruta hacia la red que queremos borrar, no es necesario poner el gw. Es suficiente con:

route del -net 10.0.0.0 netmask 255.0.0.0

Comandos para la gestión de la red en Linux: ping

El comando ping se utiliza para comprobar si existe conexión con otras máquinas. Se puede hacer ping a la dirección ip o al nombre de dominio de la máquina.

ping 172.20.0.100
ping servidor100.trombotic.tic

Al contrario que en Windows, el ping de linux es continuo, no se detiene al hacer cuatro pruebas. Si queremos que solo se hagan 4 pruebas se puede añadir la opción -c 4 donde 4 es el número de pruebas ha realizar:

ping -c 4 172.20.0.100

A continuación se muestran el resultado de ejecutar:
ping -c 4 www.google.es 

PING www.l.google.com (66.249.92.104) 56(84) bytes of data.
64 bytes from par03s01-in-f104.1e100.net (66.249.92.104): icmp_seq=1 ttl=54 time=63.6 ms
64 bytes from par03s01-in-f104.1e100.net (66.249.92.104): icmp_seq=2 ttl=52 time=65.4 ms
64 bytes from par03s01-in-f104.1e100.net (66.249.92.104): icmp_seq=3 ttl=52 time=63.4 ms
64 bytes from par03s01-in-f104.1e100.net (66.249.92.104): icmp_seq=4 ttl=52 time=66.8 ms

--- www.l.google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 63.485/64.891/66.893/1.405 ms

Como se puede ver, de las cuatro pruebas que se han realizado, las cuatro han tenido respuesta por lo tanto hay conexión con el servidor de Google. La máquina que ha respondido es  par03s01-in-f104.1e100.net a pesar de haberse hecho ping a www.google.es. Esto es debido a que la resolución inversa (de ip a nombre) la dirección ip 66.249.92.104 tiene asociado ese nombre.
En la información que devuelve el ping se puede apreciar el tiempo que ha tardado en realizar cada prueba. En la primera 63.6ms, en la segunda 65.4 ms, etc. Si el tiempo es superior a un segundo la cosa va mal. Si se hace ping de una máquina de la red local a otra, el tiempo debe ser inferior al ms.
Al final del ping, Aparece un resumen de los resultados obtenidos por el ping.

Otro ping pero esta vez sin resolución de nombres. 

ping -c 4 -n www.google.es

PING www.l.google.com (66.249.92.104) 56(84) bytes of data.
64 bytes from 66.249.92.104: icmp_seq=1 ttl=54 time=71.7 ms
64 bytes from 66.249.92.104: icmp_seq=2 ttl=52 time=71.6 ms
64 bytes from 66.249.92.104: icmp_seq=3 ttl=52 time=70.3 ms
64 bytes from 66.249.92.104: icmp_seq=4 ttl=54 time=67.4 ms

--- www.l.google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 67.473/70.312/71.757/1.745 ms


Un ping a una dirección ip que no responde, bien por que no existe o no hay conexión.

ping -c 4 -n 80.80.80.80
PING 80.80.80.80 (80.80.80.80) 56(84) bytes of data.

--- 80.80.80.80 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3018ms

Ping a una máquina con un nombre que no existe.

ping -c 4 -n trombotic.google.es

ping: unknown host trombotic.google.es

Comandos para la gestión de la red en Linux: ifconfig

Para ver o modificar la configuración de las interfaces de red se puede utilizar el comando ifconfig. Cualquier configuración realizada con este comando se pierde al reiniciar el servicio de red o al reiniciar la máquina. Para hacer cambios permanentes se pueden editar los archivos de red o utilizar las herramientas que proporcione la distribución que se este utilizando.

Si se quiere ver la configuración de las interfaces de red se ejecuta simplemente ifconfig.

ifconfig

Cuando se tienen muchas interfaces de red y se traba en modo texto, lo mas probable es que no entre en una pantalla el resultado del comando, para poder verlo poco a poco se puede añadir el filtro less o more.

ifconfig|more
ifconfig|less

Para cambiar la direccion ip de una tarjeta se usa el comando ifconfig de la siguiente forma:

ifconfig eth1 172.20.0.1

De esta forma se modifica la direccion ip y se establece la mascara por defecto. En este ejemplo 255.255.0.0.

Si la máquina pertenece a una subred es necesario establecer una máscara distinta. Esto se puede conseguir con:

ifconfig eth1 172.120.0.1 netmask 255.255.255.0

Con ifconfig también es posible desactivar la interfaz de red:

ifconfig eth1 down

O activarla:

ifconfig eth1 up.

También se puede modificar la dirección MAC:

ifconfig eth1 hw ether 00:50:56:10:00:01

miércoles, 3 de noviembre de 2010

Instalación y configuración básica de un dominio con bind9 en CentOS

Para mantener un dominio es necesario instalar y configurar un servidor DNS. El más utilizado en entornos linux es el Bind (versión 9.7.2-P2 en el momento de escribir este artículo).

El primer paso es instalarlo desde los repositorios de CentOS. Esto se hace con el comando:

yum install bind

Una vez instalado se debe crear un archivo de configuración. Lo siguientes pasos cubren una configuración sencilla que permita tener en marcha un servidor DNS en poco tiempo. La configuración del servidor está en el archivo /etc/named.conf. Todas las sentencias disponibles para configurar el servidor bind se pueden consultar en el Manual de Referencia del Administrador ARMv9.6 .

El archivo se puede editar con el comando:

nano /etc/named.conf

El contenido que hay que introducir es:

options {
        directory "/var/named";
};

zone "." {
        type hint;
        file "named.root";
};

zone "trombotic.tic" {
        type master;
        file "trombotic.tic.zone";
};

zone "1.168.192.in-addr.arpa" {
        type master;
        file "1.168.192.in-addr.arpa.zone";
}; 

La sentencia options permite configurar opciones globales del servidor. En este caso solo contiene la subsentencia directory que indica el directorio del sistema donde están los archivos de zona. La subsentencia type indica el tipo de zona, y en el caso de poner master significa que este servidor es el que tiene la copia original de los datos de la zona (No es un servidor secundario). Por último la subsentencia file indica el nombre del archivo de zona.

El servidor dns para definir un dominio utiliza zonas. Una zona contiene la información que maneja un dns, es decir, la relación entre los nombres de las máquinas y sus direcciones ip ( y alguna cosilla más). Esta información se representa mediante registros de recursos incluidos dentro de los archivos de zona.

Por ejemplo, en este servidor existe una zona llamada trombotic.tic que se corresponde con el dominio trombotic.tic cuyo archivo de zona se llama trombotic.tic.zone. Como dentro de la sentencia options existe la subsentencia directory con valor /var/named, el archivo de zona para trombotic.tic es /var/named/trombotic.tic.zone. Esta zona se encarga de la resolución de nombres de dominio a direcciones ip.

A parte, también existe una zona llamada 1.168.192.in-addr.arpa que es la que se encarga de la resolución inversa, es decir, a partir de una dirección ip obtener el nombre de dominio. No es obligatoria para tener resolución de nombres, pero es necesaria para que algunos servicios funcionen bien. Las zonas de resolución inversa reciben el nombre de la dirección de red o subred, sin los ceros, escritas al revés y con el sufijo .in-addr.arpa. en este caso la dirección de la red es 192.168.1.0/24 así que se coge el 192.168.1, se le da la vuelta para que quede 1.168.192 y se le añade .in-adder.arpa.

Una vez creado el archivo de configuración , hay que crear los archivos de zona.
Dentro del directorio /var/named se deben crear tres archivos:
  • named.root que contiene una copia de los servidores raíz DNS.
  • trombotic.tic.zone que contiene los registros de las zona trombotic.tic.
  • 1.168.192.in-addr.arpa.zone que contiene los registros de resolución inversa para las direcciones de la red 192.168.1.0/24.
Se puede obtener una copia actualizada de los servidores DNS raíz en www.internic.net. Para descargar el archivo de named.root se puede utilizar el comando:

wget -O - http://www.internic.net/zones/named.root > /var/named/named.root


El contenido del archivo /var/named/trombotic.tic.zone podría ser así:

@               IN      SOA ns.trombotic.tic admin.trombotic.tic (
1       ;serial
24h     ;refresh
1h      ;retry
7d      ;expire
1h      ;negative ttl
)

                IN      NS ns.trombotic.tic.

@               IN      MX 1    servidor.trombotic.tic.

servidor        IN      A 192.168.1.200
router          IN      A 192.168.1.1

ns              IN      CNAME servidor
smtp            IN      CNAME servidor
pop3            IN      CNAME servidor
www             IN      CNAME servidor
ftp             IN      CNAME servidor


Los archivos de zona contienen registros de recuros, que es la información que maneja el servidor dns acerca de la zona. Hay varios tipos de registros de recurso: soa,a,ns,mx,cname,ptr,... Como este articulo no pretende ser un manual de bind (se puede buscar el google y seguro que salen cientos), basta con decir que en este archivo se esta indicando lo siguiente (Entre paréntesis esta el tipo de registro que indica esta información):
  • que la dirección de correo del administrador de la zona es admin@trombotic.tic (SOA).
  • que esta zona la lleva un servidor dns llamado ns.trombotic.tic (NS) que realmente es un alias de servidor.trombotic.tic (CNAME).
  • que el dominio tiene un único servidor que recoge correo electrónico llamado servidor.trombotic.tic (MX).
  • que hay una máquina llamada servidor.trombotic.tic con direccion ip 192.168.1.200 (A).
  • que hay una máquina llamada router.trombotic.tic con direccion ip 192.168.1.1 (A).
  • que servidor.trombotic.tic tiene varios nombres (CNAME): ns.trombotic.tic, smtp.trombotic.tic, pop3.trombotic.tic,www.trombotic.tic y ftp.trombotic.tic.
Básicamente en esta red hay una única maquina que proporciona todos los servicios, que es servidor.trombotic.tic y otra que conecta nuestra red con Internet, que es router.trombotic.tic.

El contenido del archivo /var/named/1.168.192.in-addr.arpa.zone podría ser así:

@               IN      SOA ns.trombotic.tic admin.trombotic.tic (
1       ;serial
24h     ;refresh
1h      ;retry
7d      ;expire
1h      ;negative ttl
)

                IN      NS ns.trombotic.tic.

200             IN      PTR servidor.trombotic.tic.
1               IN      PTR router.trombotic.tic.


En este archivo de zona la información mas importante es:
  • que existe una maquina con dirección ip 192.168.1.200 que se llama servidor.trombotic.tic (PTR).
  • que existe una maquina con direccion ip 192.168.1.1 que se llama router.trombotic.tic (PTR).
Hay que tener en cuenta que en el registro de recurso sólo pone el último número de la dirección ip y que el propio servidor añade el nombre de la zona para poder obtener la dirección ip completa. Por ejemplo, en la linea que empieza por 200, hay que añadir al final 1.168.192.in-addr.arpa y de aquí se obtienen 200.1.168.192.in-addr.arpa. Se le quita el in-addr.arpa y se le da la vuelta para que quede la dirección 192.168.1.200.

Una vez configurado sólo es necesario arrancar el servidor dns con el comando:

service named start


Para resolver cualquier duda se puede utilizar los comentarios del artículo.

martes, 2 de noviembre de 2010

Configuración de la red en CentOS

Existen varias formas de configurar la red en CentOS.

La primera y más fácil es utilizar un servidor DHCP que exista en nuestra red local. Si se dispone de un router ADSL lo más seguro es que este activado el servidor DHCP para que cualquier ordenador pueda conseguir una direccion ip y navegar.
Si al instalar CentOS no se ha cambiado la configuración por defecto de la red, se utilizará el servidor DHCP para conseguir una dirección ip válida, la mascara de subred, el nombre de dominio, el DNS y la puerta de enlace.

En ocasiones hay que forzar al cliente DHCP para que renueve la dirección ip. Para liberar la dirección ip que nuestra maquina tiene asignada actualmente se ejecuta el comando dhclient -r. Una vez liberada la dirección ip se puede volver a solicitar otra con el comando dhclient.

La segunda es utilizar el comando system-config-network. De esta forma aparece en pantalla una interfaz basada en texto que permite configurar la red de forma sencilla.

Para configurar la dirección ip y puerta de enlace se selecciona "Edit Devices" con las teclas de dirección o cursores (las de las flechitas) y se pulsa la tecla "Enter".
Las interfaces (tarjetas de red) ethernet tienen nombres como eth0, eth1, eth2, ... dependiendo del numero de interfaces que tenga la máquina. En el ejemplo solo esta disponible una interfaz de red llamada eth0, se selecciona y se pulsa "Enter".
Si no se ha realizado ningún cambio en la configuración de la red durante la instalación, la interfaz obtendrá la configuración consultando a un servidor DHCP. Para poner un dirección estática , hay que seleccionar "Utilizar DHCP" con los cursores y pulsar la barra espaciadora para quitar el asterisco y que se permita introducir los datos en los otros campos. Si se desea volver a utilizar el DHCP, solo hay que poner el asterisco de nuevo en "Utilizar DHCP".
Una vez introducidos todos los campos, se selecciona "Ok" y se pulsa "Enter" para volver a la pantalla anterior.
Con la tecla tabulador se selecciona "Guardar" y automáticamente volvemos a la pantalla inicial.
Ahora, para configurar los DNS, se selecciona "Edit DNS configuration" y se pulsa "Enter".
Posiblemente la ventana que aparece mostrara los datos del dns obtenidos por el DHCP.
Utilizando las teclas de dirección se selecciona cada uno de los campos y se introduce los datos necesarios. cuando estén completados, se selecciona "Ok" y se vuelve automáticamente a la ventana inicial.
Con el tabulador se selecciona "Guardar y Cerrar" y se pulsa "Enter" para que la configuración tenga efecto. El comando system-config-network modifica los archivos relacionados con la configuración de la red, pero para que las interfaces carguen su nueva configuración hay que reiniciar el servicio de red ejecutando el comando service network restart.

Y por ultimo, y la forma más compleja, es editar directamente los archivos relacionados con la red. Aviso: Estos archivos tienen más opciones de las que se exponen aqui, pero las expuestas son suficientes para que la red funcione correctamente.
Por cada interfaz de red existe un archivo de configuración en el directorio "/etc/sysconfig/network-scripts/". Para la interfaz eth0 este archivo se llama "ifcfg-eth0".

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0
BOOTPROTO=none
HWADDR=00:0c:29:c7:d3:5a
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=192.168.1.200
GATEWAY=192.168.69.1
TYPE=Ethernet


El contenido del archivo indica lo siguiente:
  • Las lineas que empiezan por # son comentarios y no afectan a la configuración.
  • DEVICE indica la interfaz a la que pertenece este archivo.
  • BOOTPROTO indica el protocolo que se utiliza para obtener la dirección ip. En este caso none quiere decir que se usa la configuración del archivo. Si pone dhcp se utiliza un servidor dhcp.
  • HWADDR indica la dirección mac de la interfaz de red.
  • ONBOOT indica que esta interfaz se tiene que activar o no cada vez que se arranque/reinicie el servicio de red. Si pone yes, se activa y si pone no, evidentemente no se activa.
  • NETMASK indica la mascara de subred.
  • IPADDR indica la dirección ip de la interfaz.
  • GATEWAY indica la puerta de enlace que se utilizara para llegar a otras redes (incluido Internet).
  • TYPE indica que la interfaz de red es ethernet.
En el archivo /etc/sysconfig/network se indican varias opciones de red.

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=servidor.trombotic.tic


El contenido del archivo indica lo siguiente:
  • NETWORKING indica que se activa el servicio de red ipv4 si pone yes y que no se activa si pone no.
  • NETWORKING_IPV6 indica que se activa el servicio de red ipv6 (nueva versión del protocolo ip que utiliza direcciones ip de 128 bits en vez de 32bit a parte de otras mejoras) si pone yes y que no se activa si pone no.
  • HOSTNAME indica el nombre de dominio de la máquina.
El archivo /etc/resolv.conf contiene información necesaria para el cliente DNS.

search trombotic.tic 

nameserver 192.168.1.1 
nameserver 192.168.1.2


El contenido del archivo indica lo siguiente:
  • search indica el dominio que se añadirá a los nombres de máquina que no sean nombres de dominio completamente cualificados (FQDN)
  • nameserver indica la dirección ip del servidor DNS. En el caso de haber varios servidores, aparece una linea por cada servidor.
Una vez editados los archivos, es necesario reiniciar el servicio de red.