jueves, 8 de diciembre de 2011

Utilizar un sistema operativo CentOS como router en una red local.

CentOS (Comunnity enterprise Operating System) es un sistema operativo de código libre, basado en el núcleo Red Hat, pero con código liberado. CentOS es la alternativa gratuíta a Red Hat, y por ello, suele tener bastante tirón para implementarlo como servidor en una pequeña o mediana red. CentOS puede ser usado también como servidor LAMP, servidor de correo, servidor DHCP, DNS, y un largo etcétera.


CentOS puede ser usado también como un router, usando dos tarjetas de red, una hacia la red de área local y otra al exterior(Internet)

Para empezar esta entrada, nos centraremos primero en una situación "de la vida real":

Imaginemos que tenemos una red de área local de por ejemplo tres o cuatro ordenadores, todos conectados por un switch, y queremos usar un ordenador ajeno a esos como servidor, para administrar a esos ordenadores direcciones IP y servicios de red cualesquiera. El ordenador servidor se usará como router, y también como firewall, filtrando las conexiones, rechazando algunas y aceptando otros puertos, para así tener control absoluto sobre las conexiones.

Configuración del servidor:

  • El servidor tiene para esta administración dos interfaces: eth0 y eth1
    • eth0 para local.
    • eth1 para salida a Internet.
  • La configuración del firewall de la red se administrará mediante iptables
  • El método para enrutar los paquetes será NAT.
Éste esquema se da en bastantes empresas a nivel pequeño y mediano. La diferencia es que nosotros usaremos CentOS, mientras que en una empresa es más probable usar un Windows Server (No tengo nada contra WS, pero resulta más eficiente el uso de Linux para administración de servidores. Más control)

Una vez planteado todo, lo iremos montando poco a poco.

El esquema a seguir será el siguiente:

  1. Instalaremos un servidor DHCP y configuraremos las opciones del mismo.
  2. Configurar las interfaces eth0 y eth1 para su funcionamiento.
  3. Enrutar los paquetes entre las dos conexiones (IP Forward y NAT)
  4. Establecer las políticas de filtrado (iptables)
Sugerencia: Recomiendo usar CentOS en runlevel 3 (Línea de comandos). Ganaremos rapidez en el servidor al omitir el entorno gráfico.

Nota: Todos los comandos deben ser ejecutados como Superuser (root).

1. Instalación del servidor DHCP y configuración del mismo.

En primer lugar, hay que descargar de los repositorios de CentOS el servidor DHCP. El paquete actual a fecha de hoy es dhcp-3.0.5-29.el5_7.1. Para instalarlo, en la línea de comandos, escribimos

# yum install dhcp

El ordenador buscará en los repositorios de CentOS el paquete solicitado. Una vez lo tenga, lo bajará a nuestro ordenador, lo configurará y lo intentará inicializar sin éxito, debido a que no tiene una configuración predefinida todavía.


Una vez tenemos bajado el servidor DHCP, vamos a proceder a configurarlo.

En primer lugar, tenemos que tener fijada cuál va a ser nuestra política de administración de las direcciones IP, así como del rango de direcciones disponible, máscara de subred, puerta de enlace y servidor DNS. Como será un servidor único, no usaremos política de alquiler de direcciones.

El archivo de configuración a editar se encuentra en /etc y se llama dhcpd.conf. Si lo ejecutamos con nano y vim, nos saldrá que el archivo de configuración de muestra se encuentra en /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample. Para evitar posibles fallos y autorizaciones erróneas, introduciremos nuestro propio dhcpd.conf sin copiar el archivo de muestra.

Como ejemplo, vamos a usar la subred 172.16.1.0,  máscara de subred 255.255.255.0, puerta de enlace la 172.16.1.1, DNS el 8.8.8.8. La administración de direcciones IP va de la 20 a la 30.

El archivo quedaría así:


# /etc/dhcpd.conf
ddns-update-style none;
ignore client-updates;

subnet 172.16.1.0 netmask 255.255.255.0 {

option routers 172.16.1.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 8.8.8.8;

range dynamic-bootp 172.16.1.20 172.16.1.30;
}



Guardamos el archivo. Ahora tenemos configurado correctamente todas las opciones que requería nuestro servidor. Seguimos sin poder ejecutar el servicio debido a que no hemos configurado la dirección IP del interfaz a usar, pero lo arreglamos enseguida.

PD: Las dos primeras líneas (ddns-update-style y ignore client-updates) vienen a decir que no queremos actualizaciones dns e ignoraremos las peticiones de clientes queriendo renovar su dirección IP local.

(Corrección hecha por el usuario Juan Ortega. Comentario más abajo. Gracias por la ayuda)
Si tenemos un equipo al que le queremos dar una IP fija, añadimos la siguiente línea:

host (nombre máquina abreviado) {
option host-name (nombre máquina completo);
hardware ethernet (dirección mac);
fixed-address (dirección ip que le damos);
}

El nombre abreviado o completo de máquina lo pueden poner como quieran.

Nota: la dirección IP que le demos debe estar en la subred o subredes del servidor DHCP que definan.

2. Configurar las interfaces eth0 y eth1

Las interfaces eth0 y eth1, por lo general, tendrán diferente rango de direcciones IP:

  • eth0: Deberá llevar la dirección que pusimos en option-routers, ya que CentOS es nuestro servidor y puerta de enlace para la red local.
     
    • Bloque de direcciones a usar:
      • Dirección IP: 172.16.1.1
      • Máscara de subred: 255.255.255.0
      • No requiere de gateway ni DNS.
  • eth1: A gusto del consumidor. Yo utilizaré un modelo DHCP, ya que usaremos CentOS solo para enrutar la red local y servir como filtro y eth1 se conectaría a un router ADSL, pero si necesita ser implementado como red fija, especificaré donde proceda.

En CentOS, las configuraciones de las interfaces de red no se hacen por ifconfig de forma general. En su lugar, lo haremos más eficiente.

Hay dos modos:

  • Usando la Utilidad de configuración en modo texto (setup). Se ejecuta poniendo en la línea de comandos  # setup. Es más fácil de manejar.
  • Editando los archivos de configuración. Se encuentran en /etc/sysconfig/network-scripts/ y su nombre es ifcfg-ethx, donde x es el número de conexión
Setup es una sencilla herramienta semigráfica que mediante un menú intuitivo nos permite configurar las interfaces fácilmente.

La edición de los ficheros de configuración se puede realizar utilizando Vim o Nano, el que más rabia os dé.

El fichero de configuración será algo así para eth0:

# (Controlador del adaptador de red)


DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
HWADDR=(Dirección MAC del adaptador)
IPADDR=172.16.1.1
NETMASK=255.255.255.0

Para el fichero eth1, algo tal que así:


# (Controlador del adaptador de red)


DEVICE=eth1
BOOTPROTO=dhcp
ONBOOT=yes
HWADDR=(Dirección MAC del adaptador)

Si queremos especificar un gateway en cualquiera de los dos adaptadores, se añadirá GATEWAY=(Dirección del gateway). Si queremos añadir un servidor DNS, debemos cambiar el archivo de configuración ubicado en /etc/resolv.conf, y en las líneas que proceden escribir.

nameserver (dirección DNS)


Una vez modificados los valores de los ficheros de configuración y del Setup, debemos reiniciar el servicio para que la configuración tenga efecto. Para ello, escribimos:

# service network restart

Una vez realizamos la siguiente acción, la dirección de las dos interfaces se cambiará a la que hayamos configurado en el Setup o los ifcfg. Acto seguido, procederemos a iniciar el servicio dhcp, para así inicializar la red local. Para ello, en la misma consola, escribimos:

# service dhcpd start

PD: Si falla el inicio de dhcpd, revisa los ficheros de configuración  (generalmente es que falta un punto y coma, o algo mal puesto de nombre). Si no encuentras nada, existe un fichero en /var/log/messages que nos dirá lo que nos chirría de la configuración general de dhcp o cualquiera que estemos usando. Si falla alguna cosa, revisar este archivo es lo más conveniente. se ejecuta con:


# cat /var/log/messages

3. Enrutar los paquetes entre las dos conexiones (IP Forward y NAT)

Hemos configurado las dos interfaces, pero aunque hayamos configurado, nos resulta un poco "inútil", debido a que aún nos falta realizar el enrutamiento y el seguimiento de paquetes entre interfaces. Para ello, debemos activar el IP Forward y establecer NAT para realizar un enrutamiento exitoso.

  • Activar IP Forward: Para activarlo, tenemos que editar el fichero /etc/sysctl.conf, y en la línea denominada

    net.ipv4.ip_forward = 0

    Editar el 0 por un 1. Reiniciar el servidor CentOS para que los cambios hagan efecto.

  • Establecer NAT como configuración de enrutamiento: Por sí solo, el IP Forward no sirve de nada si no ejecutamos una excepción en iptables para añadir una "ruta" interna entre ambas interfaces y así poder enrutar.

    Para ello, en la consola, escribimos:

    # iptables -F
    # iptables -t nat -F


    Estos dos primeros comandos son para limpiar las configuraciones.

    # iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -d 0/0 -j MASQUERADE
Una vez realizado ésto, CentOS podrá enrutar los paquetes que le lleguen desde eth0 a eth1 y así, dar acceso a Internet a la red local en DHCP que montamos anteriormente.

4. Establecer las políticas de filtrado (iptables).

Una vez todo está funcionando, es posible que solo queramos que estén abiertos determinados puertos, o denegar el acceso a un usuario concreto, permitir que pase información de un puerto... Para ello, CentOS y su iptables (cortafuegos) nos podrán ayudar para establecer qué dejamos o no pasar a través de la red.

Lo primero de todo, antes de establecer filtros, vamos a eliminar la configuración antigua del cortafuegos. Para eso, teclearemos los siguientes comandos:


# iptables -F (Borra todas las reglas de iptables)
# iptables -X (Igual que -F)
# iptables -Z (Pone el contador de paquetes de iptables a cero)
# iptables -t nat -F (Borra la regla de enrutamiento NAT anterior)

Una vez tecleamos todos estos comandos, procederemos a disponer nuestra propia configuración. Por ejemplo:

  • Permitiremos acceso a los puertos de Internet básicos (80 y 443, HTTP y HTTPS)
  • Permitiremos un puerto de conexión segura (22, SSH)
  • A un equipo le daremos acceso total.
Para empezar, restauraremos la última línea de cuando usamos NAT en el servidor:

# iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -d 0/0 -j MASQUERADE

Para que el servidor acepte y reenvíe paquetes, debemos aceptar las políticas de uso (INPUT para enviar paquetes, FORWARD para enrutar, y POSTROUTING para enviar a la ruta)


# iptables -P INPUT ACCEPT
# iptables -P FORWARD ACCEPT
# iptables -t nat -P POSTROUTING ACCEPT


Para aceptar las políticas de HTTP y HTTPS, añadiremos la siguiente línea:

# iptables -A FORWARD -s 172.16.1.0/24 -p tcp --dport 80 -j ACCEPT
# iptables -A FORWARD -s 172.16.1.0/24 -p tcp --dport 443 -j ACCEPT

Para aceptar el SSH, añadiremos la siguiente línea:

# iptables -A INPUT -s 172.16.1.0/24 -p tcp --dport 22 -j ACCEPT

Para rechazar los paquetes de un determinado número de puerto. 

# iptables -I INPUT -s 172.16.1.0/24 -p tcp --dport (puerto cualesquiera) -j DROP

Para el acceso total a un equipo, añadiremos la siguiente línea. Como ejemplo, pondré el 172.16.1.2

# iptables -A FORWARD -s 172.16.1.2 -j ACCEPT

Para consultar todos los cambios hechos, ejecutamos:


# iptables -L


Para guardar la configuración, ejecutamos:


# iptables-save


Nota: Para las reglas iptables, es más recomendable usar un script, para ejecutar todo a la vez y no uno a uno.

Siguiendo estos pasos, conseguiremos tener nuestra propia red local con un CentOS como router.

Fuentes:
Redes de Área local. Aplicaciones y Servicios Linux [Formación del profesorado]. Instituto de Tecnologías Educativas.
Experiencia propia.

Revisión de artículo: Octubre de 2013
Razón: Corrección del contexto. Adición de la cláusula de rechazo de paquetes. Corrección de la cláusula de IP fija gracias al comentario de un usuario.

    martes, 6 de diciembre de 2011

    Modificar el prompt de Windows

    El "Prompt" propiamente dicho es el conjunto de caracteres que se muestran en una línea de comandos y que puede ejecutar órdenes. Básicamente, el prompt es la línea que aparece cuando abrimos una línea de comandos en Windows o Linux y como tal se muestra así:

    • Linux: usuario@máquina:~$ o usuario@máquina:~# si es superusuario (root)
    • DOS y Windows: C:\>
    En Linux, el prompt de usuario se puede cambiar modificando la .bashrc del usuario. Por el momento, llevo investigando tiempo intentando modificarlo sin resultados esperados o positivos. Si consigo hacerlo posible lo compartiré con vosot... con el que lea éste artículo, si es que lo va a leer alguien, claro.

    En Windows, el prompt sí puede cambiarse de manera fácil y sencilla. Existen dos métodos:

    • En la sesión actual:

      En la línea de comandos, escribimos prompt y después la cadena que queramos usar.
      Las opciones de la cadena son las siguientes:

      $A   & (Símbolo de unión)
      $B   | (barra vertical)
      $C   ( (Paréntesis izquierdo)
      $D   Fecha actual
      $E   Código de escape (código ASCII 27)
      $F   ) (Paréntesis derecho)
      $G   > (signo mayor que)
      $H   Retroceso (elimina el carácter previo)
      $L   < (signo menor que)
      $N   Unidad actual
      $P   Unidad y ruta de acceso actual
      $Q   = (signo igual)
      $S     (espacio)
      $T   Hora actual
      $V   Versión de Windows
      $_   Retorno de carro y alimentación de línea
      $$   $ (signo del dólar)

      Como ejemplo, pondré el siguiente:

      (hora del sistema)[Directorio en el que nos encontramos]$

      En el cual, la cadena exacta de todo ello es:

      ($S)[$P]$$

      Al final de la cadena, añadimos un espacio en blanco, ya que si ponemos todo tal cual los caracteres que introduzcamos aparecerán justo después del $, todo junto.

      La cadena será:

      C:\Users\Administrador> prompt ($T)[$P]$$(espacioenblanco)

      Automáticamente escribamos ésto, el prompt tendrá la cadena puesta. Por ejemplo:

      (00:00:00,00)[C:\Users\Administrador]$$
    • De forma permanente: Para establecer tu propio prompt personalizado, habrá que entrar en el regedit y añadir una clave a la siguiente cadena:

      HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

      En la carpeta, añadimos un valor de cadena en Edición>Nuevo>Valor de cadena. Se añadirá una nueva a la carpeta actual. Cambiamos el nombre de la cadena a Prompt y dentro escribimos la cadena que queremos tener.

      Después, reiniciamos el ordenador y aparecerá el nuevo prompt personalizado cada vez que inicies el cmd.

    Nota: Para modificar el regedit, se requieren permisos de administrador.

    Fuente:
    Blogs de informática sobre el tema.
    Experiencia propia.

    domingo, 4 de diciembre de 2011

    Desactivar la campana del sistema en CentOS

    En esta entrada voy a explicar cómo deshacerse de la tediosa Campana del sistema, o pcspkr, que la mayoría de los sistemas operativos basados en Linux carga en el kernel y puede llegar a resultar cargante para cuando trabajamos en modo texto.

    Hay dos modos para desactivarlo: Solo la sesión o definitivamente.

    • Sesión activa:

      Si queremos desactivar la campana del sistema solo en la sesión actual, debemos teclear en la terminal

      # rmmod pcspkr


      De esta forma, el sistema apaga el pcspkr y no sonará más la campana del sistema en la sesión. Si deslogueamos e iniciamos de nuevo, la excepción se quitará y el sistema volverá a emitir el sonido
    • Definitivamente:

      Para descartar definitivamente el controlador, podemos utilizar dos métodos:

      En consola de comandos, escribir:
      # rmmod -v pcspkr
      Que descarta el módulo pcspkr e inicia el ordenador sin sonido.

      Si no funcionase éste comando, modificamos el fichero /etc/rc.d/rc.local con vim o nano y añadimos la línea /sbin/rmmod pcspkr al final del documento
     De estas formas podremos desactivar el tedioso sonido de la campana del sistema.

    Fuente:
    Diversos blog de Linux sobre el problema

    Experiencia propia.

    jueves, 1 de diciembre de 2011

    Windows 7, Windows Server 2008 y "Adaptador de túnel Conexión de Área Local *X" [Solución]

    Este bug se basa en un fallo en la tarjeta de red inalámbrica. Dicho fallo tiene su base en el adaptador 6to4 de Microsoft (Dicho adaptador virtual es utilizado para los protocolos IP, el v4 y v6, un "túnel" de red, como indica el nombre de conexión) el cual se crea nuevamente al haber un fallo en el Virtual Wifi del equipo. Básicamente, viene a decir que si cerramos el ordenador antes que el servicio Plug & Play se desactive, cuando iniciemos de nuevo el ordenador, el servicio asignará un nuevo adaptador de túnel, dejando obsoleto al anterior. La cadena de nombre con la que aparece es

    Adaptador de Túnel Conexión de Área Local* 2

    Estado de los medios: Medios desconectados
    Sufijo DNS específico para la conexión:



    Adaptador de Túnel Conexión de Área Local*3

    Estado de los medios: Medios desconectados
    Sufijo DNS específico para la conexión:
    etc, etc.


    Para un usuario normal y corriente no tendría mucha repercusión. Éste problema es solamente visualizable a través de la herramienta ipconfig de la línea de comandos de Windows (cmd). Dicho error puede llegar a la creación de (según datos consultados por foros) hasta 52 conexiones de área local inútiles. Inicialmente esto no enturbia las conexiones normalmente, pero ciertamente, es un engorro el ejecutar ipconfig y encontrarte con hasta 52 conexiones, llenando todo el búfer del cmd. Personalmente, yo llegué a acumular hasta 27 adaptadores basura.

    Tras investigar por varios sitios de Internet, toquetear el registro de Windows (regedit), la consola netsh, revisar cientos de miles de veces los adaptadores conectados y no encontrar absolutamente nada, hace poco por fin encontré la respuesta.

    Primero me centré en buscar en el registro. Todo cambio que se haga nuevo en el ordenador, queda reflejado en el Regedit. Encontré las referencias de conexión de Área local en la ruta
    HKEYLM/SYSTEM/CurrentControlSet/Control/Network/ y la primera rama de números. Dicha rama tendrá aún más ramas con números, y dentro de cada rama una subcarpeta llamada Connection, en el cual aparece en una clave REG_SZ de nombre Name el nombre de la conexión basura. Eliminé todas las carpetas excepto las de Conexión de Área Inalámbrica y Conexión de Área local, y las correspondientes a VMware (En caso de que se tenga instalado). Reinicié y el fallo no remitía, de hecho, me generó de nuevo las carpetas.

    Investigué después en Internet, y ví que en el Administrador de dispositivos de Windows, podían consultarse todas las opciones respecto a los adaptadores de red del sistema. Consulté y las únicas que me aparecían eran las tres anteriores que no borré. En Internet aparecía también que hay algunos dispositivos (Por ejemplo, los adaptadores Teredo Tunneling Pseudo Interface, que no aparecen) que aparecen ocultos. en Ver, aparece la opcion de Mostrar Dispositivos Ocultos. Nada más acepté la opción, me aparecieron los 26 interfaces de red que mi ordenador había ido generando solos tras el fallo consecutivo del anterior. Además, me aparecían tres conexiones duplicadas, como Adaptador ISATAP de Microsoft.
    Se pueden borrar todos los conectores, excepto los Minipuerto WAN (Todos los que procedan), los adaptadores propios de nuestro ordenador, el ISATAP original y todos los propios que hayamos instalado con programas.

    De esta forma, podemos librarnos de todas las molestas conexiones inservibles que Windows 7 y Server 2008 generan por fallo al iniciar un ipconfig.

    También es de interés el comunicar que existe un programa que realiza esta acción de manera automática, pero al no fiarme demasiado y no probarlo, no puedo asegurar ni garantizar su funcionamiento. Si volviera a generarme las conexiones, posiblemente lo use para ver cómo va y ofrecer descarga.

    Hasta ahora, dicho fallo no ha sido solucionado por Microsoft.


    Nota: Hay que tener cuidado al manejar el administrador de dispositivos. Si por algún descuido eliminásemos un adaptador que sí nos hacía falta (Por ejemplo, el VPN de Hamachi o alguno de VMware), habría que reinstalar todo el programa.

    Fuente oficial de Microsoft donde hace referencia el fallo:
    http://support.microsoft.com/kb/980486/es

    Fuentes:
    Foros de Microsoft.
    Otros foros de Internet
    Experiencia propia

    sábado, 12 de noviembre de 2011

    Resolución de problemas de DHCP en tarjetas de red.

    En esta entrada, creada a partir de un problema cotidiano reciente, vamos a intentar solventar problemas relacionados con ordenadores clientes que no aceptan bien el protocolo DHCP sobre Windows y, por tanto, no navegan bien.

    En primer lugar, explicaré el proceso APIPA, uno de los pilares básicos en las redes de Microsoft, creado para la simplificación de redes locales sin salida a Internet.

    El proceso APIPA (Automatic Private IP Addresing) es un proceso por el cual una tarjeta de red, al conectarse a una red y detectar que no hay ningún servidor DHCP, se asigna a sí misma una dirección IP comprendida entre el rango 169.254.x.x, siendo X los valores que se asignará ella sola (sin colisionar con otros posibles ordenadores que estén conectados y con el mismo proceso) El proceso APIPA es ideal para cuando queremos tener una red sencilla entre dos ordenadores. No requiere de puerta de enlace ni servidores DNS y la conexión actúa entre dos nodos de red, así como la formación de redes locales sencillas.

    El proceso APIPA se da en sistemas Windows 98 en adelante. Es un sistema sencillo, sin complicaciones, pero tiene algunos problemas de depuración. Es eficaz por una parte, pero ineficaz por otra. Sencillez y no complejidad, pero problemas para depurar errores presentes.

    A veces, el proceso APIPA nos puede acarrear ciertos problemas, como por ejemplo que la tarjeta de red se ciña siempre a realizar el proceso APIPA aunque haya un servidor DHCP activo, por mero protocol de actuación. Ésto nos puede inducir a que pensemos que tenemos problemas con la interfaz o que nuestro ordenador está dando las últimas agonías. Pero no.

    Pongamos un escenario no muy diferente de la realidad:

    Tenemos un router ADSL y nuestro PC. EL router ADSL puede ser de cualquier marca o compañía, pero el ordenador tiene de Windows 98 en adelante (Para adaptarnos a los tiempos que corren, digamos por ejemplo un Windows 7). Conectamos el PC al router pero el proceso APIPA siempre interfiere y nos da fallo. La IP fija no funciona tampoco porque el proceso APIPA adquiere un fallo y se ciñe más al mismo que a la configuración que le intentamos poner.

    Hay tres posibilidades:
    • APIPA se queda pillado y se ciñe siempre a ese protocolo.
    • El servicio de cliente DHCP está desactivado
    • La tarjeta de red tiene mal los drivers

    Para solucionar el problema, debemos realizar dos sencillas operaciones:

    En primer lugar, "tirar" el adaptador (Deshabilitar y volver a habilitar)
    En segunda, interrumpir el proceso APIPA mediante la liberación de la IP y, después, renovar la dirección IP

    Para realizar el primer paso, nos vamos a Conexiones de Red o Centro de Redes e Internet, varía según la versión de Windows que usemos. Una vez encontremos el adaptador, lo deshabilitamos y después lo volvemos a habilitar. Esto puede resultar un poco banal, porque, pensémoslo ¿Para qué reiniciar el adaptador si el proceso APIPA seguirá activo una vez lo activemos de nuevo? Por si acaso. En la informática, como en todo, nada es seguro y todo es probable.

    Si el primer paso no solucionó el problema, podemos intentar el segundo.

    Para ello, abrimos un Símbolo del sistema. En Windows XP y Vista es en Inicio > Ejecutar y escribimos cmd.

    En Windows 7, en Inicio -> Todos los programas -> Accesorios -> Símbolo del sistema.

    Una vez estemos ahí, introducimos el comando ipconfig /release para liberar la dirección IP del proceso APIPA. Una vez lo hagamos, el adaptador estará totalmente libre de direcciones IP y el proceso APIPA se cortará.

    Dado que ahora la interfaz de red no tiene ninguna dirección de red, procedemos a pedir que consulte al servidor DHCP y que le dé un alquiler nuevo. Para ello, introduciremos el comando ipconfig /renew.

    Si por algún motivo el adaptador siguiera sin renovar direcciones IP y se siguiera ciñendo a APIPA, podría ser que el servicio de Cliente DHCP de Windows esté desactivado. En este caso, en Ejecutar de nuevo, escribimos Services.msc para iniciar el programa gestor de servicios.

    Si el servicio está desactivado, debe poner Detenido. Botón derecho sobre el servicio y Iniciar. Para establecerlo como automático, en Propiedades, y en modo de inicio, Automático.

    Si el servicio DHCP está activado y aún así sigue dando problemas de éste estilo, podemos intentar reinstalar los controladores de la tarjeta de red. Para ello, en el Administrador de dispositivos.

    Windows XP: Panel de control, Herramientas administrativas, Administrador de dispositivos
    Windows Vista y 7: Panel de control, Hardware, Administrador de dispositivos

    Seleccionamos nuestra tarjeta de red, y en propiedades, Actualizar controlador. Si sigue sin funcionar, Consultamos al fabricante los controladores o tiramos de Google para buscarlos y reinstalarlos. Para ello, en el Administrador de dispositivos, desinstalamos el controlador antes de instalar otro de nuevo, de lo contrario no lo realizaría.

    Si sigue fallando aún realizando todo lo anterior, podría ser un problema de hardware. Consulta al vendedor para más información.

    Fuente:
    Experiencia realizada en clase
    Algunos problemas cotidianos.

    Nota: En unos días procedere a actualizar ésta entrada para hacer una edición más resuelta.

    martes, 8 de noviembre de 2011

    Recuperar la contraseña de superusuario (root) [Sólo emergencias]

     Las distribuciones basadas en UNIX tienen como particularidad que todas ellas comparten un usuario único y que tiene una total administración de los ficheros y de todas las configuraciones del sistema.
    Dicho usuario es el llamado superusuario, superuser o comúnmente llamado root.
    Cuando intentamos instalar algo nuevo en el sistema, sea cual sea, siempre hay que usar la clave de root para acceder, o que el usuario en el que estamos trabajando tiene acceso siempre que esté en el fichero /etc/sudoers. Aun así, siempre prevalecerá mucho más el superusuario root.

    Aunque root sea un usuario especial, en ocasiones puede existir la posibilidad de que queramos acceder al superusuario y no recordemos la contraseña, bien sea porque hacía tiempo que no iniciábamos el sistema o bien para otros usos.

    Por ello, existe un método para quitar la contraseña de root. Al iniciar el login de root, no pedirá la contraseña y será totalmente accesible al ordenador



    Por defecto, al instalar un nuevo sistema operativo bajo Linux, el sistema operativo tiene deshabilitada la cuenta de root como tal. Sí se puede entrar como superusuario con el comando sudo bash, pero para entrar como usuario root se le debe asignar antes una contraseña con el comando passwd.

    Importante: El método aquí explicado es para recuperar la contraseña. Cualquier uso del presente artículo de forma maliciosa es bajo su responsabilidad total. Cada cual es libre de usarlo como quiera, bajo su propio riesgo.

    Pasemos a explicar cómo recuperar la contraseña.

    (Pruebas realizadas sobre sistemas Ubuntu y CentOS. Trataré de verificar resto de 
    sistemas)

    •  Con un Live CD: Los Live CD de ubuntu permiten al ordenador la capacidad de usar Linux sin modificar ni cargarse parte de espacio del disco duro. Asímismo, el disco Live permite también acceder al sistema de ficheros del disco duro, lo que nos lleva a que podemos modificar cualquier archivo del mismo sistema como si de root se tratara.

      Para eliminar la contraseña, debemos acceder a la carpeta /etc y buscar el archivo shadow. Dicho archivo guarda las contraseñas encriptadas de todos los usuarios del sistema. Generalmente, la contraseña aparece con encriptación, y, eventualmente, el usuario root será el primero. Ejemplo:
      root:$1$N9L1HjIf$.YbfoPCCZmrqemk4zwYUb4:13918:0:::::0
      
      - root: nombre de usuario
      - $1$N9L1HjIf$.YbfoPCCZmrqemk4zwYUb4: contraseña encriptada
      - resto de campos: algunos permisos sobre la contraseña (Hace cuantos días
      se cambió, cuántos faltan para cambiarla.
      Para restablecer la contraseña, hay que borrar el campo de la misma. Con Vim, Nano o
      cualquier otro editor, lo borramos. Debe quedar algo así:
      
      
      root::13918:0:::::0
       
      Guardamos el fichero y reiniciamos el ordenador. Ahora, cada vez que iniciemos el usuario
      root, se iniciará sin pedir contraseña. En el caso de pedirla, basta con pulsar la tecla
      Enter y entrar.
       
    • Entrando en el sistema en el runlevel 1 o single: El runlevel 1 o single es un nivel especial del sistema que permite realizar cambios como si de un un superusuario root se tratara. Para hacerlo más efectivo, se puede recurrir al mismo método que el que usamos para el Live CD, pero también podemos usar el comando passwd root y cambiársela. Para gustos los colores.

      Para entrar en el Runlevel 1 hay varios métodos. En artículos anteriores expliqué como realizarlo en CentOS.

      Para entrar en el Runlevel 1 en Ubuntu habrá que hacerlo a través del GRUB. Hacer el montaje de la unidad de sistema como rw y no como ro, y especificar al final de la misma línea el comando init=/bin/bash
    Fuente:

    Foros varios sobre Linux.
    Experiencia de clase.
    Trasteos con el sistema.

    martes, 1 de noviembre de 2011

    Niveles de ejecución en núcleos UNIX (Init)

    En la mayoría de distribuciones basadas en el núcleo UNIX, así como los distintos sistemas operativos derivados, comparten entre sí la complicidad de ser sistemas multiusuario y multitarea. Dicha función también radica en que tienen el mismo proceso de carga de núcleo y sistema.

    Dicho sistema de arranque puede ser alterable.

    Los sistemas UNIX ofrecen varios niveles de ejecución de Kernel o INIT. Éstos niveles, también llamados Runlevel, ayudan a que un usuario elija qué nivel quiere iniciar: Si solo quiere interfaz gráfica, o línea de comandos, o quiere iniciar la línea de comandos con unos determinados servicios, o la interfaz gráfica con todo completo.

    Los niveles básicos de ejecución (y los más extendidos) de un kernel Linux/UNIX son:

    • 0 : Nivel HALT. Es el nivel de apagado del sistema
    • 1 : Nivel monousuario. Se realiza para tareas de mantenimiento del ordenador.
    • 2 : Nivel multiusuario sin soporte de red, por línea de comandos.
    • 3 : Nivel multiusuario con soporte de red, por línea de comandos.
    • 4 : Nivel no ocupado. 
    • 5 : Multiusuario gráfico con soporte de red. Es el nivel 3 añadiéndole el Display o X-Server.
    • 6 : Nivel REBOOT. Reinicio del sistema.

      PD: Estos niveles pueden ser diferentes dependiendo de la distribución que se use. Éstos, por ejemplo, son los más extendidos en Red Hat, CentOS, Fedora, Ubuntu.
    Los niveles de ejecución albergan también los servicios que ejecuta cada determinado INIT. Es posible que en el nivel 5 tengamos un servicio que no se ejecute en el nivel 3. Todo ello es configurable con el comando chkconfig. Con este método, podemos hacer un uso más selectivo de la memoria dependiendo del runlevel.

    Existen dos métodos posibles para iniciar un runlevel en un sistema UNIX: Antes de la ejecución del Kernel o después.

    (Probado en CentOS las siguientes variables. Confirmaré cuando tenga datos de otros sistemas operativos y sus variables)

    •  Antes del inicio del Kernel: Se modifica la línea de Grub del Kernel. Si por ejemplo la línea del Grub correspondiente al Kernel es tal como:

      Grub > Kernel (Línea de iniciación del Kernel) Número de init a iniciar

      Ejemplo
      para iniciar el nivel 3

      Grub > Kernel (Línea de iniciación del Kernel) 3

      Éste método viene mejor para el nivel 1. Así, por ejemplo, si perdiéramos la contraseña del sistema, cambiado el nivel de ejecución podríamos asignarle una nueva sin pérdida de datos

    •  Después del inicio del Kernel: Una vez iniciado el sistema, sea en cual sea el tipo de inicio que se le haya transmitido, en una línea de comandos escribimos como superuser

      # init (nivel de ejecución)
    Hemos aprendido a hacer que un runlevel nos funcione en el sistema de una forma fácil e intuitiva, pero con una pequeña pega: Los anteriores ejemplos solo sirven para ése inicio, con lo que el cambio de init es solo temporal. Una vez el ordenador reinicie seguirá ejecutándose en el predeterminado del sistema. Para cambiar este parámetro y, por ejemplo, ejecutar siempre la línea de comandos o cualquier otro nivel:

    (Sistemas CentOS)
    • Entramos como superuser en el sistema
    • En la carpeta /etc, buscamos el archivo Inittab
    • Con Vim, Nano o cualquier otro editor de texto, Modificamos la línea por defecto.
      # Default runlevel.
      id:X:initdefault:

      Donde X es el número de init a arrancar.
    • Guardamos. Una vez reiniciemos el sistema, arrancará en el INIT que hayamos pedido como predeterminado.
    (Sistemas Ubuntu)

    • Entramos como superuser en el sistema
    • En la caperta /etc/init, buscamos el archivo gdm.conf
    • Con Vim, Nano o cualquier editor de texto, Añadimos después de la línea "start on", en los paréntesis, runlevel [3], debiendo quedar algo tal como

      start on (runlevel [3] ...).

      Si queremos deshabilitar por completo el entorno, en vez del anterior, agregamos el siguiente

      start on (runlevel [ ] ... )
    • Guardamos y reiniciamos el ordenador. 
    Nota: Antes de modificar cualquier fichero de éste tipo, debemos hacer previa copia de seguridad, para por si acaso fallase y podamos tener un fichero de restauración del sistema.
      Fuente:
      Experiencia realizada en clase.
      Wikipedia y su sabiduría