hits counter
Este sitio web utiliza cookies para obtener estadísticas de navegación. Si sigue adelante, consideraremos que acepta su uso. Acepto | Más información

Red local



Samba

Samba es un servicio libre que implementa el protocolo de archivos compartidos de Microsoft Windows, llamado SMB o CIFS en los sistemas UNIX/Linux. Este protocolo nos va a permitir compartir archivos y carpetas con los demás ordenadores de nuestra red.

Vamos, pues, a instalar el servidor y a crear una carpeta en la Raspberry para poner en ella todo aquello que queramos compartir con cualquiera de los demás ordenadores de nuestra red local, de manera que estos puedan acceder a dichos recursos compartidos.

Primero instalamos Samba:

sudo apt install samba samba-common-bin

A continuación añadimos los usuarios, que deben de estar previamente creados en el SO. Dado que al instalar este, ya creamos un usuario, lo añadimos a Samba (cambiando piuser por el nombre del usuario que estemos usando en la Raspberry):

sudo smbpasswd -a piuser

Nos pedirá una contraseña. Escribimos la misma que tenemos ya establecida en el sistema para dicho usuario (aunque podemos poner otra distinta).

Si tenemos más usuarios creados en el sistema operativo, podríamos añadirlos también de la misma forma que lo hemos hecho con el anterior.


Compartir una carpeta pública

Suponiendo que tenemos un disco duro conectado a la Raspberry, vamos a crear en él una carpeta para compartirla y hacerla pública, de manera que cualquiera pueda acceder a ella sin tener que escribir un nombre de usuario y una contraseña. Para ello, nos desplazamos a donde tenemos montado el disco, creamos la carpeta y le damos todos los permisos:

cd /media/hdusb
sudo mkdir musica
sudo chmod 777 musica

Ahora editamos el fichero de configuración de Samba para añadir la carpeta:

sudo nano /etc/samba/smb.conf

Nos desplazamos al final del mismo y escribimos estas líneas:

[musica]
comment = carpeta pública para compartir música
path = /media/hdusb/musica
browseable = yes
read only = no
writeable = yes
guest ok = yes
public = yes
force user = nobody
create mask = 0777
directory mask = 0777

Al comienzo ponemos entre corchetes un nombre para identificar la carpeta que queremos compartir ([musica]), luego añadimos un comentario descriptivo de la misma (comment) e indicamos su ruta exacta (path). Como se puede observar, los usuarios que accedan a la carpeta lo harán como nobody, que es una especie de usuario anónimo, que tendrá permiso para hacer cualquier modificación en ella (read only = no, writeable = yes). Para ello es neceario, además, otorgar todos los permisos para la creación de archivos y directorios (0777), tal y como se indica en las dos últimas líneas.


Compartir una carpeta privada

Pero también podemos hacer que la carpeta sea privada y que sólo el/los usuario/s autorizados accedan a la misma. Para ello tendríamos que configurarla de la siguiente forma (cambiando piuser por el nombre del usuario que estemos usando en nuestro sistema):

[musica]
comment = carpeta privada para compartir música
path = /media/hdusb/musica
browseable = yes
read only = no
writeable = yes
guest ok = no
public = no
valid users = piuser
admin users = piuser
create mask = 0644
directory mask = 0755

Como se observa, sólo se admite el acceso del usuario piuser, aunque podríamos añadir más usuarios (separados por comas o espacios). A este usuario se le conceden permisos tanto de lectura como de escritura (read only = no, writeable = yes). En este caso, create mask y directory mask se refieren a los permisos para la creación de nuevos ficheros y carpetas, respectivamente, desde Samba. Para que los permisos de escritura sobre el recurso compartido sean efectivos, deben coincidir con los permisos que posee la carpeta en el sistema de ficheros de Raspberry Pi OS. De no ser así, se aplicarán los permisos más restrictivos.

Ya sólo queda guardar el archivo de configuración y reiniciar el servidor:

sudo service smbd restart

Ahora la carpeta estará compartida y podremos usarla para intercambiar ficheros con otros ordenadores de nuestra red. Podemos comprobarlo accediendo a la carpeta mediante la IP local de la Raspberry. En el Explorador de Archivos de Windows podemos crear un acceso directo para Agregar una ubicación de red y también podremos acceder escribiendo directamente su IP en la barra superior, así:

\\192.168.1.33

En el caso de Linux, probablemente nos aparecerá la Raspberry en la sección de Red o, de forma similar a Windows, podemos acceder desde la barra superior del Gestor de archivos indicando el protocolo y la IP:

smb://192.168.1.33

Si la carpeta es privada, para tener acceso a la misma debemos escribir previamente el nombre de usuario y la contraeña que definimos al principio, después de instalar Samba.


Compartir un disco

En el caso de que quisiéramos compartir todo el contenido del disco duro (no sólo una carpeta), incluiríamos los mismos parámetros que en los ejemplos anteriores, sólo que en este caso tendríamos que cambiar la identificacióin de la carpeta por otro nombre más apropiado que nos sirva de referencia para saber que se trata de un disco ([hdusb] por ejemplo), el correspondiente comentario para describir su uso (comment) y la ruta donde se encuentra montado el disco (path):

[hdusb]
comment = carpeta para compartir el disco duro
path = /media/hdusb
. . . . . .
. . . . . .

Evitar compartir la carpeta de usuario

Normalmente, cuando instalamos el servidor Samba se comparte por defecto la carpeta de los usuarios (/home/piuser en nuestro caso). Si queremos evitar esto, tenemos que hacer algunos cambios en el fichero de configuración:

sudo nano /etc/samba/smb.conf

Buscamos con Ctrl+w la línea [homes] y comentamos (con ; o con #) a partir de aquí todos los valores referentes al directorio home de los usuarios:

#[homes]
#     comment = Home Directories
#     browseable = no
. . . . . .
#     read only = yes
. . . . . .
#     create mask = 0700
. . . . . .
#     directory mask = 0700
. . . . . .
#     valid users = %S

Ahora tendremos que reiniciar el servidor para que los cambios surtan efecto:

sudo service smbd restart

Añadir una papelera

Una interesante utilidad que podemos añadir a Samba es una papelera, lo que nos permitirá recuperar archivos o carpetas que hayamos borrado previamente, ya sea de forma voluntaria o accidental. Tomando el mismo ejemplo que hemos usado antes para crear una carpeta privada, bastará con añadir cuatro líneas al final (las escritas en negrita) para crear la papelera, de modo que quedará así:

[musica]
comment = carpeta para guardar música
path = /media/hdusb/musica
browseable = yes
read only = no
writeable = yes
guest ok = no
public = no
valid users = piuser
admin users = piuser
create mask = 0644
directory mask = 0755
vfs object = recycle
recycle:repository = papelera
recycle:keeptree = true
recycle:versions = true

Como es habitual, tendremos que reiniciar de nuevo el servicio para que los cambios surtan efecto:

sudo service smbd restart

AVISO: Es posible que la carpeta que contiene la papelera no se cree hasta que borremos algún elemento por primera vez.




DLNA

Según la Wikipedia, "DLNA (Digital Living Network Alliance o Alianza para el estilo de vida digital en red, en español) es una asociación de fabricantes de electrónica e informática sin ánimo de lucro fundada por Sony en junio de 2003. Su objetivo es definir directrices de interoperabilidad que permitan compartir medios digitales entre dispositivos de consumo como ordenadores, impresoras, cámaras, teléfono móviles y otros dispositivos multimedia."

Se trata, pues, de crear un sistema para transmitir contenido multimedia (vídeos, películas, música o fotos) a través de la red y que pueda ser reproducido en dispositivos como PCs, smart TV, videoconsolas, tabletas digitales o smartphones.

Como es obvio, lo primero que haremos es instalar el servidor DLNA en nuestra Raspberry. Debido a su escaso consumo de recursos, vamos a elegir para ello el servidor miniDLNA:

sudo apt install minidlna

Una vez instalado, debemos proceder a la configuración del servidor:

sudo nano /etc/minidlna.conf

En el fichero de configuración buscamos la línea en la que se indica dónde se encuentran ubicados nuestros archivos multimedia. Será una línea similar a esta:

media_dir=/var/lib/minidlna

Naturalmente, deberemos cambiarla por el directorio (o directorios, si son varios) donde cada uno tenga guardados sus archivos. En nuestro caso, tenemos un disco duro USB y un pendrive conectados a dos de los puertos USB de la RasPi, con sendas carpetas que incluyen, respectivamente, películas y música, por lo que nos quedaría así:

media_dir=V,/media/hdusb/peliculas
media_dir=A,/media/pen/musica

La V de la primera línea significa vídeo y la A de la segunda, audio. Y es que la configuración admite filtros de indexación de contenidos: A para audio, V para vídeo y P para fotos. Si no indicamos nada, se indexará todo.

Ahora le daremos un nombre al servidor, para que cuando accedamos a él desde otro dispositivo nos sea fácil de encontrar. Para ello bajamos unas líneas hasta que localizamos la siguiente:

#friendly_name=

Descomentamos la línea quitándole la almohadilla (#) y añadimos el nombre que queramos darle a nuestro servidor DLNA:

friendly_name=RPi DLNA Server

Ahora, un poco más abajo, le decimos que automáticamente vaya añadiendo el nuevo contenido que metamos en las carpetas indicadas antes, para lo que descomentamos también estas dos líneas, poniendo en la segunda el intervalo de tiempo (en segundos):

inotify=yes
notify_interval=600

Guardamos el fichero (Ctrl+o, Intro, Ctrl+x) y ya tenemos el servidor listo para funcionar, así que lo arrancamos:

sudo service minidlna start

La indexación de contenidos hemos de hacerla manualmente mediante este comando:

sudo service minidlna force-reload

Como es habitual en cualquier servicio, el servidor DLNA admite distintos parámetros: podemos detenerlo (stop), iniciarlo (start), conocer su estado (status) o reiniciarlo después de haber hecho alguna modificación en la configuración (restart):

sudo service minidlna parámetro

Podremos ver el número y el tipo de archivos que tenemos indexados, así como los clientes conectados, accediendo mediante un navegador a la IP local de la Raspberry seguida del puerto:

192.168.1.33:8200

Es posible utilizar una gran cantidad de clientes para acceder al servidor DLNA que acabamos de instalar en nuestra Raspberry Pi. En Windows podríamos usar Windows Media Center o el propio Reproductor multimedia del sistema; en el caso de Android, DLNA Player o bien MediaHouse UPnP / DLNA Browser, por poner un par de ejemplos. Y si tenemos una Smart TV también podremos acceder desde ella a los contenidos del servidor.

Finalmente, no hay que olvidar abrir el puerto 8200/TCP si estamos usando un cortafuegos.




Pi-hole

Pi-hole es un sistema para convertir la Raspberry Pi en un servidor de DNS capaz de filtrar y bloquear la publicidad a nivel de red. Una vez instalado y configurado, sólo tendremos que poner la IP local de la RasPi como servidor de DNS en el router o bien ponerla manualmente en cada dispositivo de nuestra red local. Las peticiones DNS pasarán entonces por la Raspberry y esta actuará como un filtro antipublicidad, al estilo de las extensiones "adblock" de los navegadores, pero con varias ventajas añadidas sobre estos:

  1. 1ª) Servirá para todos los dispositivos que tengamos conectados a nuestra LAN, sin necesidad de instalar nada extra en ellos.
  2. 2ª) Las webs que visitemos no serán capaces de detectar que estamos bloqueando su publicidad.
  3. 3ª) También sirve para detener algunos intentos de instalar malware que realizan ciertas webs maliciosas.
  4. 4ª) Ofrece la posiblidad de bloquear aquellas páginas web que no queramos que visiten nuestros hijos o la gente que esté conectada a nuestra red local.
  5. 5ª) Incluso bloquea la publicidad de las apps gratuitas que tengamos instaladas en el smartphone o la tableta digital.


Requisitos previos

Antes de instalar Pi-hole tenemos que cumplir estos dos requisitos:

  1. 1.) Instalar y configurar el Sistema Operativo. Necesitamos tener instalado un SO, como puede ser Raspberry Pi OS (preferiblemente, aunque se pueden usar también otros sistemas). Para los que no tengan experiencia previa con la RasPi, en los primeros apartados del menú Sistema explicamos cómo hacer todo el proceso: instalar el SO, acceder por SSH a la Raspberry y realizar una configuración básica del sistema.
  2. 2.) Asignarle a la Raspberry Pi una IP estática, tal y como se detalla en este apartado de nuestra web.

Instalación

El proceso de instalación y configuración consta de dos pasos:

  1. 1.) Instalar Pi-hole. En el caso de que usemos la Raspberry Pi 2/3/4 ejecutaremos este script desde la línea de comandos:
    curl -sSL https://install.pi-hole.net | bash
    Si en lugar de una Raspberry 2/3/4 estamos usando un modelo más antiguo (la versión 1 ó 1+), entonces modificamos ligeramente el comando anterior:
    curl -L https://install.pi-hole.net | bash
  1. [a] Inicialmente se harán ciertas comprobaciones y se instalarán varios paquetes. Después simplemente se nos informará de algunos detalles, con lo que basta con Aceptar, y luego se nos avisará de que debemos tener configurada una IP estática. Pulsamos en Continuar.
  2. [b] En caso de que tengamos varias interfaces de red, lo primero que se nos preguntará es la interfaz que deseamos usar (por defecto será eth0).
  3. [c] Si queremos usar la IP estática previamente configurada y el Gateway (indicamos Continuar).
  4. [d] El servidor de DNS que prefiramos (Google, OpenDNS, Comodo, Quad9, CloudFlare...). Lo elegimos y pulsamos Aceptar.
  5. [e] Si queremos instalar una lista de bloqueo que ya se incluye por defecto (pulsamos en ).
  6. [f] También si deseamos instalar la interfaz de administración web (de nuevo pulsamos en ).
  7. [g] O si se instala el servidor web lighttpd y los módulos PHP (elegimos ).
  8. [h] Si queremos activar el fichero log de peticiones (una vez más se recomienda ).
  9. [i] Finalmente, el modo de privacidad para FTL (0 Show everything y luego Continuar).
  10. [j] Comenzará la instalación de los paquetes, y tras ello, se nos indicarán las IPs (IPv4/IPv6) que debemos usar en nuestros dispositivos como servidor DNS y también la contraseña de acceso a la interfaz web de administración. Pulsamos en Aceptar y salimos de la instalación.

  1. Posible error de FTL. Puede que al final de la instalación nos dé un error relativo al motor de FTL y no aparezca la ventana con la contraseña de acceso (lo que indicaría que Pi-hole no se ha instalado correctamente):
    [i] Checking for existing FTL binary...  
    [x] Downloading and Instaling FTL 
    Error: Unable to get latest release location from GitHub 
    [x] FTL Engine not installed 
    
    Para solucionar esto hay que desinstalar (pihole uninstall), reiniciar la Raspberry e instalar de nuevo. Pero si no funciona el comando de desinstalación, entonces simplemente reiniciamos el sistema y reinstalamos nuevamente. Esto debería de solucionar el problema.

    Si a pesar de todo el error persiste, entonces es muy probable que el fallo se deba a que la instalación de Pi-hole ha desconfigurado el servidor de DNS. En este caso habrá que editar el fichero
    sudo nano /etc/resolv.conf
    y ponemos unos servidores de DNS válidos; por ejemplo:
    nameserver 8.8.8.8
    nameserver 8.8.4.4
    Y ya podremos proceder con la reinstalación.

  1. 2.) Usar Pi-hole como servidor DNS predeterminado, lo que podremos hacer, como dijimos al principio, de dos maneras: o bien poniendo la IP de la Raspberry Pi como servidor de DNS en el router (en lugar de las DNS que suele traer por defecto, que serán las de nuestro ISP) o bien poner dicha IP manualmente como servidor DNS en cada uno de los dispositivos conectados a nuestra red local (PCs, portátiles, Smart TV, smartphones, tabletas digitales...).

Interfaz web y contraseña

Para comprobar que el sistema está en marcha, accederemos a la interfaz web de administración escribiendo la dirección IP local de la Raspberry en el navegador de cualquier dispositivo conectado a nuestra LAN:

192.168.1.33/admin

Aquí podremos iniciar sesión escribiendo la contraseña que creamos al final del paso 1.) y tener acceso a un menú con las distintas posibilidades que nos ofrece Pi-hole:

Para cambiar la contraseña de inicio de sesión de la interfaz web usaremos este comando desde la terminal:

pihole -a -p contraseña

Podemos hacer clic en Settings - pestaña DNS - Interface settings y comprobar que estén marcadas las peticions de red local (Allow only local requests), que es la configuración recomendada, tal y como se muestra en esta imagen:

Si hemos hecho algún cambio, no debemos olvidar guardar los cambios pulsando en el botón Save que se encuentra en la parte inferior derecha.


Pi-hole y el cortafuegos ufw

Según se indica en su página web, si estamos usando el cortafuegos ufw, debemos abrir los siguientes puertos: el puerto 53 TCP/UDP, para que dnsmasq resuelva las peticiones DNS y el puerto 80 TCP para poder acceder a la interfaz web mediante lighttpd:

sudo ufw allow 53/tcp
sudo ufw allow 53/udp
sudo ufw allow 80/tcp

Además, si vamos a usar Pi-hole como servidor DHCP (sólo en este caso), tendremos que abrir en el cortafuegos varios puertos más:

sudo ufw allow 67/tcp                              [para IPv4]
sudo ufw allow 67/udp                             [para IPv4]
sudo ufw allow 546:547/udp                    [para IPv6]

Es necesario deshabilitar y volver a habilitar ufw para que surtan efecto los cambios que hemos realizado en los archivos anteriores:

sudo ufw disable
sudo ufw enable

Puede darse el caso de que el cortafuegos no se active en los sucesivos arranques o reinicios de la Raspberry, en cuyo caso será necesario ejecutar este comando para solucionar el problema:

sudo systemctl disable netfilter-persistent

Comprobación

Es posible conprobar fácilmente su correcto funcionamiento si visitamos esta web de prueba desde alguno de los dispositivos de nuestra red local, cuyo resultado debería ser este:


Actualizar, desinstalar, reinstalar

Cuando exista una nueva versión de Pi-hole, nos será posible actualizar, también desde la terminal, mediante la siguiente orden:

pihole -up

Y si por algún motivo tenemos la necesidad de desinstalar, usaremos este comando:

pihole uninstall

Durante la desinstalación, cuando se nos pregunte "Do you wish to go through each dependency for removal?... [Y/n]", contestaremos negativamente (n) y una vez acabado el proceso, reiniciamos el sistema.

Si tras la desinstalacción queremos volver a reinstalar, sólo tenemos que ejecutar de nuevo el script que indicamos al principio:

curl -sSL https://install.pi-hole.net | bash