# rm-rf.es | Administración de sistemas

Bitácora personal de un SysAdmin Gnu/Linux, Windows, BSD...

Desactivar el acceso por proxy en Debian a APT


Esta mañana nos encontrábamos instalando una máquina virtual Debian Squeeze a través de netinstall y por restricciones de seguridad hemos tenido que configurar vía proxy la descarga de paquetes para la instalación.

Una vez instalado e intentar actualizar el sistema nos hemos dado cuenta que seguíamos usando el proxy al usar apt/aptitude. Cuando instalamos Debian a través de un proxy, luego hay que desactivarlo en apt si no queremos seguir usándolo.

Para ello, debemos eliminar las líneas en /etc/apt/apt.conf que contienen la configuración del proxy: Acquire::http::Proxy ó Acquire::ftp::Proxy seguido de la URL del proxy:

Acquire::http::Proxy "http://miproxy.com:8213";
Acquire::ftp::Proxy "http://miproxy.com:8213";

Ubuntu/Debian: deshabilitar Touchpad portatil Dell Vostro


Nos salimos un poquito de los post habituales del blog para dejar constancia de la forma de deshabilitar el dichoso Touchpad de los portatiles Dell Vostro (en este caso un 3300). En mi caso necesito deshabilitarlo debido a que uso un ratón USB y que siempre toco sin querer el Touchpad y es lo más incómodo que existe…

Bien, para desactivarlo seguimos los siguientes pasos. Primero con el comando xinput list localizamos el nombre del dispositivo en el sistema:

$ xinput list
...
...
SynPS/2 Synaptics TouchPad
...

Una vez localizado, estas son las líneas de comando para activar y desactivar el Touchpad.

Activar:

$ xinput --set-prop "SynPS/2 Synaptics TouchPad" "Device Enabled" 1

Desactivar:

$ xinput --set-prop "SynPS/2 Synaptics TouchPad" "Device Enabled" 0

A partir de aquí, podéis configurarlo al inicio del sistema, con un alias, etc:

$ vim ~/.bashrc

alias raton_off='xinput --set-prop "SynPS/2 Synaptics TouchPad" "Device Enabled" 0'
alias raton_on='xinput --set-prop "SynPS/2 Synaptics TouchPad" "Device Enabled" 1'

Getlibs: encontrar dependencias en librerías (64 vs 32 bits)


El otro día tuvimos que instalar software de 32 bits en una máquina virtual de Debian de 64 bits. Tras la instalación encontramos problemas con dependencias incumplidas que hacían referencia a librerías de 32 bits que no se encontraban instaladas en el sistema. A partir de ahí, gracias a getlibs (¡y a Ángel!) pudimos instalar de forma sencilla todas las librerías necesarias. Todo ello debido a que dicho software no disponía de versión para Debian en 64 bits.

Lo primero que hicimos fue descargar e instalar getlibs:

$ wget http://frozenfox.freehostia.com/cappy/getlibs-all.deb
$ sudo dpkg -i getlibs-all.deb

Después sólo queda ejecutar getlibs seguido de la ruta al binario que da problemas para que automáticamente podamos resolver todas las dependencias:

$ getlibs
Usage: getlibs /path/to/binary
       getlibs -l i386librarytoinstall.so
       getlibs -p i386packagename
       getlibs -w www.website.com/i386package.deb
       getlibs -i /home/alex/i386package.deb
       See 'man getlibs' for more commands

Guía de comandos apt para Debian / Ubuntu (apt-get, apt-cache)


debianHoy vamos a dar un repaso al gestor de paquetes de Debian (y Ubuntu…) apt (Advanced Packaging Tool). Nos vamos a centrar en apt-get y apt-cache. apt-get permite descargar, actualizar e instalar paquetes entre otras cosas, apt-cache por otro lado permite lanzar consultas y buscar paquetes contra la base de datos de los repositorios.

APT-GET

Instalar un paquete:

# apt-get install <paquete>

Desinstalar un paquete:

# apt-get remove <paquete>

Eliminar un paquete incluidos sus ficheros de configuración:

# apt-get purge <paquete>

Eliminar de forma automática aquellos paquetes que no se estén utilizando:

# apt-get autoremove

Actualizar un paquete a la última versión disponible en el repositorio:

# apt-get update <paquete>

Actualizar el sistema. Actualizará todos los paquetes que dispongan de una versión superior dentro de la rama instalada de la distribución:

# apt-get upgrade

Actualizar la distribución completa. Actualizará nuestro sistema a la siguiente versión disponible de la distribución:

# apt-get dist-upgrade

Descargar únicamente las fuentes de un paquete para manipularlas de forma manual:

# apt-get source <paquete>

Limpiar cachés, paquetes descargados, etc:

# apt-get clean
# apt-get autoclean

Verificar que no tenemos ninguna dependencia incumplida:

# apt-get check

APT-CACHE

Buscar un paquete en los repositorios, se puede especificar un patrón, expresión regular, el nombre exacto del paquete, etc:

# apt-cache search <paquete>

Mostrar información sobre un paquete específico (nombre del paquete, versión, dependencias…):

# apt-cache showpkg <paquete>

Mostrar información del paquete incluyendo la descripción, información del paquete como su sitio web, página de bugs…

# apt-cache show <paquete>

Mostrar dependencias de un paquete:

# apt-cache depends <paquete>

Mostrar los nombres de todos los paquetes instalados en el sistema:

# apt-cache pkgnames

Cómo configurar tarjetas de red en Debian / Ubuntu


Vamos a ver cómo configurar las interfaces/tarjetas de red en sistemas GNU/Linux Debian (como por ejemplo Ubuntu) a través del fichero interfaces. Normalmente si disponemos de entorno gráfico solemos hacerlo a través de GUI pero nunca viene mal, para el caso de que este fallo o que no lo tengamos saber hacerlo desde los ficheros de configuración.

Lo primero que tenemos que saber es que el fichero de configuración en el que se almacena toda esta información es /etc/network/interfaces. Este fichero se puede dividir en “bloques” a través de los cuales definimos parámetros de configuración a cada una de las interfaces. Un ejemplo básico de configuración en un equipo de escritorio sería el siguiente:

Interfaz de red configurada con DHCP

auto eth0
iface eth0 inet dhcp

Este ejemplo implica una configuración en la que la interfaz de red eth0 está configurada para que arranque automáticamente y a través de DHCP. Lo primero que definimos cuando configuramos una interfaz es si queremos que arranque automáticamente con el sistema, para ello indicamos auto seguido del nombre de la interfaz. Después mediante iface definimos los parámetros de configuración de la interfaz de red, la estructura es la siguiente:

iface <nombre de la interfaz de red> <protocolo> <tipo de asignamiento IP>

Con esto ya tendríamos configurada nuestra tarjeta de red mediante DHCP

Interfaz de red configurada con IP estática

En equipos de escritorio rara vez configuramos nuestra red mediante IP estática, pero en servidores y otros sistemas es el método a utilizar. Una estructura básica de configuración de interfaz de red con IP estática es la siguiente, pasamos a explicarla:

auto eth1
iface eth1 inet static
        address 192.168.0.120
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        dns-nameservers 8.8.8.8

Como podéis ver seguimos la misma estructura, en este caso utilizamos la interfaz eth1, la configuramos para que levante con el sistema (auto eth1) y pasamos a definir mediante iface todos los parámetros de red, que en este caso engloban la IP asignada a la interfaz (192.168.0.120), su máscara de red (255.255.255.0), la red en la que se encuentra (192.168.0.0), la IP asignada para Broadcast en la red (192.168.0.255), la puerta de enlace o router (192.168.0.1) y los servidores DNS (8.8.8.8).

Podríamos combinar ambos ejemplos si por ejemplo tuviéramos un equipo con dos tarjetas de red y quisiéramos asignar una mediante DHCP y otra con IP estática:

# Interfaz de red por DHCP
auto eth0
iface eth0 inet dhcp
# Interfaz de red con IP estática
auto eth1
iface eth1 inet static
        address 192.168.0.120
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        dns-nameservers 8.8.8.8

Como podréis imaginar, esto es lo más básico, podemos hacer otras cosas como asignar IPs virtuales o alias, añadir rutas estáticas permanentes, etc.

Interfaz de red configurada con IP estática y alias

Para asignar un alias tenemos que definir primero la interfaz principal. Si tomamos como ejemplo la configuración anterior para IP estática, podemos añadir a la interfaz un alias y así poder tener dos IPs distintas a través de una única tarjeta de red:

# Interfaz principal
auto eth1
iface eth1 inet static
        address 192.168.0.120
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        dns-nameservers 8.8.8.8
# Alias
auto eth1:1
iface eth1:1 inet static
       address 192.168.0.121
       netmask 255.255.255.0
       network 192.168.0.0
       broadcast 192.168.0.255
       gateway 192.168.0.1
       dns-nameservers 8.8.8.8

Una vez que hayamos finalizado la configuración, podemos reiniciar la red por completo o levantar manualmente la interfaz que queramos con el comando ifup:

Reiniciar toda la red

# /etc/init.d/networking restart

Levantar por separado cada interfaz

# ifup eth0

Averiguar información sobre las tarjetas de red de nuestro sistema

Mediante dmesg podéis averiguar tanto el nombre de interfaz como cuantas tarjetas de red tiene el equipo, su modelo, etc. Aquí tenéis un ejemplo en el que encontramos dos tarjetas de red a las que se les ha asignado los nombres eth0 y eth1:

# dmesg | grep eth

e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection
e1000: eth1: e1000_probe: Intel(R) PRO/1000 Network Connection
e1000: eth0: e1000_watchdog_task: NIC Link is Up 100 Mbps Full Duplex, Flow Control: RX
e1000: eth1: e1000_watchdog_task: NIC Link is Up 100 Mbps Full Duplex, Flow Control: RX
eth0: no IPv6 routers present
eth1: no IPv6 routers present

Debian: eth0: ERROR while getting interface flags: No such device


Hoy he tenido que estar peleando un rato con una Debian tras hacer un pequeño cambio de hardware. El cambio consistía en cambiar los discos duros de un servidor a otro (identicos) para una tarea de mantenimiento.

En el fichero de interfaces, no estaban especificadas las direcciones MAC de las tarjetas de red, por lo que en principio supuse que no habría conflicto al moverlo a otro hardware, pero no era así. Al intentar arrancar la red en el nuevo equipo aparecía un error similar al siguiente:

# /etc/init.d/networking restart
SIOCSIFADDR: No such device
eth0: ERROR while getting interface flags: No such device
eth1: ERROR while getting interface flags: No such device
Bind socket to interface: No such device
Failed to bring up eth0
Failed to bring up eth1

Resulta que Debian guarda una especie de caché con las direcciones MAC de las tarjetas de red, por lo que al encontrar un equipo igual pero con MAC distinta no le apetecía arrancar la red. La solución pasa por eliminar esta caché.

El fichero en el que se encuentra el problema será uno de estos dos:

/etc/udev/rules.d/70-persistent-net.rules
/etc/udev/rules.d/z25_persistent-net.rules

Personalmente como tenía prisa directamente he borrado el fichero, reiniciado el sistema y solucionado. Es probable que cambiando o borrando la MAC en el fichero se solucione, pero borrarlo funciona por lo que parece la solución más fácil ;)

Virtualbox: máquinas virtuales Debian clonadas no funciona la red


Este tip lo he encontrado en “Reflexión = 2 x flexión” y me vino de perlas porque ciertamente no sabía por donde iban los tiros…

Resulta que para unas pruebas creé en mi pc una máquina virtual Debian con Virtualbox. Necesitaba duplicarla, por lo que me dispuse a hacerlo primero clonando el disco duro y después usandolo en otra máquina virtual:

# VBoxManage clonevdi Debian01.vdi Debian02.vdi

El problema vino en el momento de arrancar las dos máquinas virtuales a la vez y comprobar que la “clonada” no levantaba la interfaz de red. Cambiar la MAC en Virtualbox, la configuración de interfaces y demás no funcionaba hasta que descubrí en el enlace que os comentaba antes que Debian y derivado tiene una característica que consiste en asignar un nombre de interfaz de red a una dirección MAC, impidiendo esto que funcione la red en discos clonados.

La solución es sencilla, tenemos que ir a la máquina virtual en la que tenemos problemas y eliminar esa regla (como root):

# rm /etc/udev/rules.d/70-persistent-net.rules

Reiniciamos la máquina virtual y solucionado.

Restaurar clave de root en Debian


Si has perdido u olvidado la clave de root en un sistema Debian sigue estos pasos para regenerarla. Funcionará para aquellos con GRUB instalado:

  1. En el momento que aparezca el GRUB con la selección kernels y sistemas para arrancar la máquina, presionamos la tecla “e” para acceder al modo de edición.

    Grub Debian

  2. Una vez en este modo, buscamos la línea que comience por “kernel …”,nos colocamos sobre ella y la editamos pulsando de nuevo la tecla “e”.

    Grub Debian editando arranque

  3. Ahora estamos en el modo edición, añadimos al final de la línea “init=/bin/sh“, sin las comillas.
  4. Guardamos la línea pulsando ENTER y arrancamos con ella pulsando sobre ella la tecla “b”.
  5. Ahora ya deberías estar en la shell con la posibilidad de escribir comandos.
  6. Montamos la partición / con lectura y escritura:
    # mount -o remount rw /
  7. Ahora ya podemos asignar la clave que queramos al usuario root:
    # passwd root
  8. Reiniciamos la máquina:
    # reboot