Algo de Linux

jueves, 20 de noviembre de 2014

El comando sed: Insertar texto al principio o al final de una línea

Vamos a ver algunos ejemplos de inserción de texto con el comando sed que utilizo con frecuencia en scripts. Como siempre, lo mejor es verlo con ejemplos concretos para que se entienda fácilmente:

Supongamos que queremos insertar una cadena de texto al principio de una línea concreta, por ejemplo en la línea 1. Haríamos lo siguiente:
$ sed -i "1 s|^|IP=|" /tmp/formulario
Con el comando anterior le estamos diciendo a sed que sustituya el comienzo de la línea por el texto "IP=" en la línea 1 en el archivo /tmp/formulario.

Si en lugar de ésto, lo que queremos es insertar el mismo texto en todas las líneas, cambiaríamos el comando para que quedara así:
$ sed -i "s|^|IP=|g" /tmp/formulario
Si en lugar de insertar el texto al principio de la línea, quisiéramos insertarlo al final de una línea concreta, el comando también sería sencillo:
$ sed -i "2 s|$|=$valor|" /tmp/formulario
En este caso, le estamos diciendo al comando sed que sustituya el final de la línea por el valor de una variable a la que hemos llamado $valor en la línea 2 del archivo /tmp/formulario.
Si ahora quisiéramos realizar la sustitución en todas las líneas del archivo, el comando quedaría así:
$ sed -i "s|$|=$valor|g" /tmp/formulario 
Publicado por primera vez en http://enavas.blogspot.com.es

lunes, 17 de noviembre de 2014

Montar particiones exfat en Debian

exFAT (Extended File Allocation Table) es un sistema de archivos de Microsoft que mejora el antiguo FAT32. 

Para montar particiones extfat en Debian debemos instalar el paquete exfat-utils:
# apt-get install exfat-utils
Publicado por primera vez en http://enavas.blogspot.com.es

sábado, 8 de noviembre de 2014

Forzar la actualización de Raspbmc

Raspbmc se autoactualizará si la opción "Keep Raspbmc updated" se encuentra activada en Ajustes de Raspbmc, en Configuración del Sistema, pero como ya me ha pasado en ocasiones las actualizaciones no se realizan. En este caso, podemos forzar la actualización de Raspbmc borrando los scripts de actualización y descargándolos de nuevo:
# sudo -s
# cd /scripts/upd_sys
# rm *.sh
# wget http://svn.stmlabs.com/svn/raspbmc/release/update-system/getfile.sh
# wget http://svn.stmlabs.com/svn/raspbmc/release/update-system/cdn_env_prep.sh
# reboot
Publicado por primera vez en http://enavas.blogspot.com.es

Aumentar el tamaño de una máquina virtual

A veces creamos una máquina virtual con un tamaño de disco duro adecuado para el momento, pero con el tiempo el disco virtual se va llenando y nos damos cuenta de que necesitamos incrementar su tamaño. Como es muy sencillo aumentarlo, veamoslo con un ejemplo en el que incrementamos el tamaño del disco duro virtual a 8Gb:
# VBoxManage modifyhd xfce.vdi --resize 8192
Veremos una salida como la siguiente:
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Publicado por primera vez en http://enavas.blogspot.com.es

miércoles, 5 de noviembre de 2014

Detectar si hay algún servidor dhcp activo en la red

Podemos detectar si hay algún servidor dhcp activo en la red usando el script broadcast-dhcp-discover de la versión 6.01 de nmap:
# nmap --script broadcast-dhcp-discover
Si en la máquina donde vamos a utilizar el comando hay varias interfaces de red, podemos especificar la interfaz de escaneo mediante el parámetro -e "interfaz". Por ejemplo:
# nmap --script broadcast-dhcp-discover -e eth3
Publicado por primera vez en http://enavas.blogspot.com.es

jueves, 30 de octubre de 2014

Problema de forwarding en bind9

Estaba tratando de configurar el forwarding en el servidor bind9 de la subred de los ciclos para que reenviara peticiones a los servidores DNS de la red del centro, y a pesar de que la configuración es sencilla, no funcionaba:

options {
        directory "/var/cache/bind";

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.

        recursion yes;
        forwarders { 172.19.144.3; 172.19.144.2; };

        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================
        dnssec-validation yes;

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
};
Buscando un poco, he encontrado que si dejamos dnssec-validation auto, bind9 no realiza las peticiones a los servidores que le hayamos indicado, pero sí funciona cuando el valor es yes o no. Un bug??

Publicado por primera vez en http://enavas.blogspot.com.es

Configuración de PowerDNS en los IES utilizando pdns-recursor para resolver direcciones internas y externas

En un post de abril de este año (http://enavas.blogspot.com/2014/04/configurar-powerdns-en-los-centros-para.html) explicaba cómo configurar PowerDNS en los servidores de los centros para tener acceso a las aplicaciones de intranet del Gobierno de Extremadura.

Como estoy demasiado ocupado en el centro, casi no leo el correo de la lista o lo ojeo por encima. El caso es que esta mañana he visto que algún compañero comentaba en un mensaje de hace algunos días que la configuración que explicaba en el post mencionado anteriormente no le servía para que el DNS le resolviera una dirección de una web externa.

Decir que es lógico porque con lo expuesto en el post no se trata de resolver direcciones externas, sino de configurar PowerDNS para que resuelva direcciones de la intranet. Para mejorar la configuración de la resolución externa, habría que tocar otras configuraciones adicionales.

Cuando escribí el artículo no quise incluir mi configuración completa para que la gente no se liara y copiara y pegara mis configuraciones en sus servidores sin entenderlas, algo que puede ser bastante problemático si no se sabe lo que se está haciendo. Como ya he comentado en alguna ocasión, en mi centro tengo montada una réplica del servicio ldap en el servidor nfs y un powerdns en cada uno de los servidores, de tal manera que ambos resuelvan nombres consultando la base de datos del ldap local.

En el fichero de configuración de powerdns /etc/powerdns/pdns.d/pdns-debian-edu.conf tengo definido que use como recursor el propio servidor dns (127.0.0.1:1553):
recursor=127.0.0.1:1553
- See more at: http://enavas.blogspot.com.es/2014/04/configurar-powerdns-en-los-centros-para.html#sthash.kK0RGkaZ.dpuf
En el fichero de configuración de powerdns /etc/powerdns/pdns.d/pdns-debian-edu.conf tengo definido que use como recursor el propio servidor dns (127.0.0.1:1553):
recursor=127.0.0.1:1553
- See more at: http://enavas.blogspot.com.es/2014/04/configurar-powerdns-en-los-centros-para.html#sthash.kK0RGkaZ.dpuf
En el fichero de configuración de powerdns /etc/powerdns/pdns.d/pdns-debian-edu.conf tengo definido que use como recursor el propio servidor dns (127.0.0.1:1553):
recursor=127.0.0.1:1553
- See more at: http://enavas.blogspot.com.es/2014/04/configurar-powerdns-en-los-centros-para.html#sthash.kK0RGkaZ.dpuf
También creo haber leído que alguien había desactivado el recursor porque al fin y al cabo en la configuración que aplicaba, no se estaba usando y realmente no sabía para qué servía.

No voy a entrar en demasiados detalles sobre PowerDNS, pero voy a tratar de aclarar un poco el tema para que se entienda, sobre todo porque a mí me gusta entender todo aquello con lo que trabajo y supongo que a otros también.

Bueno, vamos al tema...

PowerDNS está formado por dos componentes:
  • El servidor "autoritativo": pdns.
  • Y el recursor: pdns-recursor.
Otros servidores DNS combinan ambas funciones.

Por decirlo de algún modo, un servidor DNS "autoritativo" es la fuente que proporciona información de resolución de nombres para un dominio en particular. 
Los servidores "autoritativos" pueden ser de dos tipos: primarios o secundarios.

En cuanto al recursor, simplemente nos proporciona un sistema de almacenamiento en caché para acelerar la resolución de nombres y un dispositivo de resolución recursiva de nombres para que nuestros clientes accedan a nuestra red o a internet utilizando DNS.

Teniendo en cuenta todo ésto, estaréis de acuerdo conmigo en que, aunque el recursor no es imprescindible, sí es de gran utilidad.
Cuando en el fichero /etc/powerdns/pdns.d/pdns-debian-edu.conf tenemos la siguiente línea:
recursor=127.0.0.1:1553
Le estamos diciendo a nuestro servidor DNS "autoritativo" que  utilice como recursor el servidor que escucha en la dirección IP 127.0.0.1 y en el puerto 1553.

Si en lugar de eso, en el fichero /etc/powerdns/pdns.d/pdns-debian-edu.conf ponemos la siguiente línea:
recursor=8.8.8.8
Le estamos diciendo a nuestro servidor DNS "autoritativo" que  utilice como recursor el servidor de Google cuya IP es 8.8.8.8

En mi caso, utilizo el recursor que corre en mi servidor (recursor=127.0.0.1:1553), sencillamente porque mi recursor cacheará información de dns localmente y eso hará que esa información se proporcione más rápidamente a los clientes.

Alguien me preguntaba cómo es posible que el servidor autoritativo y el recursor se encuentren corriendo en la misma máquina. La respuesta es muy sencilla: El servidor autoritativo escucha en el puerto 53 y el recursor escucha en el puerto 1553.

Una vez aclarado un poco el tema, os muestro mi configuración para el recursor, que se entiende bastante bien con sólo ver el fichero:

/etc/powerdns/recursor.conf
dont-query=
forward-zones=valledeljerte3=172.19.144.3;172.19.144.2,gobex.pri=172.20.5.4;172.20.5.3,juntaextremadura.pri=172.16.1.28
forward-zones-recurse=.=8.8.8.8;8.8.4.4
local-address=127.0.0.1
local-port=1553
quiet=yes
setgid=pdns
setuid=pdns
Con ésto, garantizo la resolución de nombres de mi dominio, la resolución de nombres de dominio de la intranet y la resolución de nombres de internet.
Publicado por primera vez en http://enavas.blogspot.com.es