Mostrando entradas con la etiqueta raspberry. Mostrar todas las entradas
Mostrando entradas con la etiqueta raspberry. Mostrar todas las entradas

jueves, 14 de diciembre de 2023

Instalación servidor DNS en Raspberry PI

 Introducción

¿Que apetece tener un servicio de resolución de nombres interno en tu red local ya sea tu casa, tu laboratorio o entorno profesional?, una alternativa razonable al super conocido servicio DNS de Microsoft y encima open source, podría ser dnsmasq.



Manos a la obra

Lo primero que te recomiendo hacer es actualizar los paquetes de tu distribución, para ello debes seguir este sencillo pasos (2x1):

sudo apt update && apt upgrade -y
Una vez actualizados los paquetes, pasemos a lo más interesante, instalación de la suite dnsmasq (dnsmasq es excelente para redes pequeñas).

sudo apt install dnsmasq
Una vez instalado:

  1. Modifica el fichero dnsmasq.conf utilizando el editor que más te guste, yo usaré vim.
sudo vim /etc/dnsmasq.conf
2. Localiza las siguientes líneas y edita:

  • domain-needed - Configura el servidor DNS para que no reenvíe nombres sin un punto (.) o un nombre de dominio a servidores ascendentes. Los nombres sin punto o dominio permanecen en la red local.
  • bogus-priv - Evita que el servidor DNS reenvíe las consultas de búsqueda inversa del rango IP local a los servidores DNS ascendentes. De este modo, se evitan filtraciones de la red local a los servidores ascendentes.
  • no-resolv - Deja de leer los servidores de nombres upstream del archivo /etc/resolv.conf, confiando en su lugar en los de la configuración de DNSMasq.

3. Guarda los cambios en el fichero y reinicia el servicio:

sudo systemctl restart dnsmasq
4. Verifica el estatus del servicio.

sudo systemctl status dnsmasq




5. Prueba que esté funcionando desde la raspberry.


6. Pruébalo desde otra computadora en la red.







martes, 14 de abril de 2020

Backup de seguridad de tu máquina Linux

En estos días de confinamiento, me he decidido a ordenar un poco mis máquinas, en mi caso, cuento con tres raspberry en casa con diferentes distribuciones de Linux que utilizo para montar labs de sistemas, de programación, bases de datos como MariaDB o PostgreSQL e incluso cosas de seguridad o hardening.

Las raspberry, por la experiencia que tengo ya con ellas de varios años pueden sufrir problemas con la tarjeta SD y dejarte tirado. Como me ha pasado ya varias veces, me he decidido por escribir un script en shell para salvaguardar la información. Hasta aquí, todo más o menos sencillo, el problema es... ¿donde lo almaceno?.

Gracias a mi hermano, he descubierto http://mega.nz, se trata de una nueva startup del reputado empresario Kim_Dotcom, el creador de Megaupload. Lo primero que recomiendo hacer es crearte una cuenta gratuita de Meganz (50GB gratis).



Una vez la crees, descargate el componente para utilizar via json la integración con el API de meganz, el componente se llama Megacmd


Una vez que ya tengas todo esto instalado en tu máquina, ya puedes personalizar este pequeño shell script y almacenar tus backups en la nube.



#!/bin/bash

NAME=`hostname`
LIMITSIZE=5485760 # 5G = 10*1024*1024k   # limit size in GB   (FLOOR QUOTA)
MAILCMD=mail
R=/home/xxxx/src
LOG=$R/log/log-$(basename ${0}).log
EMAILIDS="user@domain.net"
MAILMESSAGE=$R/log/tmp-$(basename ${0})

if [ -d /media/4TB ]
then
        ROOTPATH=/media/4TB/servers/$NAME  # in case we've mount volume
        MOUNTP=/media/4TB
else
        ROOTPATH=/opt/$NAME  # in case no
        MOUNTP=/
fi

BKDIR=$ROOTPATH/bkdir # simple text file for to list your directories for backup, normally /etc /home/user /root /var/www/html ...
BKPATH=$ROOTPATH/backup
FREE=$(df -k --output=avail "$MOUNTP" | tail -n1) # df -k not df -h because is more exact

if [ ! -d $BKPATH ]
then
        mkdir -p $BKPATH
fi

if [ ! -d $R/log ]
then
        mkdir -p $R/log
fi

email_on_failure () # functions for launch email alert
{

          sMess="$1"
          echo "" >$MAILMESSAGE
          echo "Hostname: $(hostname)" >>$MAILMESSAGE
          echo "Date & Time: $(date)" >>$MAILMESSAGE

          # Email letter formation here:
          echo -e "\n[ $(date +%Y%m%d_%H%M%S%Z) ] Current Status:\n\n" >>$MAILMESSAGE
          cat $sMess >>$MAILMESSAGE

          echo "" >>$MAILMESSAGE
          echo "*** This email generated by $(basename $0) shell script ***" >>$MAILMESSAGE
          echo "*** Please don't reply this email, this is just notification email ***" >>$MAILMESSAGE

          # sending email (need to have an email client set up or sendmail)
          $MAILCMD -s "Urgent MAIL Alert For $(hostname) Server" "$EMAILIDS" < $MAILMESSAGE

          [ -f $MAILMESSAGE ] && rm -f $MAILMESSAGE
}

if [ "$FREE" -lt "$LIMITSIZE" ]
then
          echo "Writing to $LOG"
          echo "MAIL ERROR: Less than $((($FREE/1000))) MB free (QUOTA) on $MOUNTP!" | tee ${LOG}
          echo -e "\nPotential Files To Delete:" | tee -a ${LOG}
          find $MOUNTP -xdev -type f -size +500M -exec du -sh {} ';' | sort -rh | head -n20 | tee -a ${LOG}
          email_on_failure ${LOG}
else
   echo "Currently $((($FREE-$LIMITSIZE)/1000))) MB of QUOTA available of on $MOUNTP. " 
fi

if [ ! -f $BKDIR ]
then
        echo "Doesn't exist bkdir file. Aborting!" 
        exit 1
else
        filename=$NAME"_daily_backup_""$(date +'%Y_%m_%d')".tar.gz
        logfile="$R/"log/backup_log_"$(date +'%Y_%m')".log

        # Packages installed on Linux

        dpkg-query -W -f='${Installed-Size} ${Package}\n' | sort -n > $BKPATH/packages_installed.txt

        # Compressing my directories

        tar czf $BKPATH/$filename -T $BKDIR
        echo "dumping source code finished at $(date +'%d-%m-%Y %H:%M:%S')" >> "$logfile"

        # Changing permission

        chown root -R "$BKPATH"
        chown root "$logfile"
        chmod 644 $BKDIR
        chmod 600 $ROOTPATH

        echo "file permission changed" >> "$logfile"

        # removing old files and temporary files

        find "$BKPATH" -name "*daily_backup*" -mtime +3 -exec rm {} \;
        echo "old files deleted" >> "$logfile"
        echo "operation finished at $(date +'%d-%m-%Y %H:%M:%S')" >> "$logfile"

        # pushing mega.nz

        mega-login user@domain.net password
        mega-sync $BKPATH $NAME
        echo "pushing backup to mega.nz $(date +'%d-%m-%Y %H:%M:%S')" >> "$logfile"
        echo "*****************" >> "$logfile"
        exit 0
fi

martes, 22 de enero de 2019

Mi caminar junto a mi raspberry

Utilizo raspberry, como muchos otros, desde hace varios años, diría que desde que salió la versión 1 al mercado. Con este pequeño dispositivo he hecho diferentes experimentos:
  • Implementé no hace demasiado tiempo un Windows 10 iot en una raspberry pi 3 con éxito. 
  • Utilizo habitualmente una raspberry pi 2 como Home Center en el salón de mi casa utilizando KODI como motor principal.
  • Tengo una raspberry con Noobs para realizar labs con aplicaciones gráficas, como no tengo monitor en este dispositov, utilizo la nueva versión SaaS de VNC para acceder, y he de decir que funciona realmente bien.
  • Estoy utilizando una versión de desarrollo donde estoy haciendo una conexión con Apple Homekit mediante el JSON de desarrollo.