Instalación de wireguard, pihole y dnscrypt en nuestro nas por docker (válido para dsm 6.2, 7.1 y 7.2)

Instalación de wireguard, pihole y dnscrypt en nuestro nas por docker (válido para dsm 6.2, 7.1 y 7.2)

Lo primero de todo es entrar en la web https://kb.synology.com/en-me/DSM/tutorial/What_kind_of_CPU_does_my_NAS_have para ver que procesador lleva mi NAS y cual es el archivo compilado de Wireguard que tengo que utilizar que tengo que usar.

Si no tienes un NAS capaz de ejecutar docker no podrás hacer este tutorial. Si tu proveedor de internet te tiene tras un CGNAT, no podrás abrir puertos y por lo tanto no podrás realizar este tutorial.

¿Cómo saber si estoy detrás de CGNAT?

Vas a un navegador y escribes ipchicken.com el valor que te muestra en la pantalla lo copias.

Si estas en mac como es mi caso, desde el terminal escribes traceroute tuip y si te muestra un datos que solo es de una linea, tienes IP Pública y podrás abrir puertos. En caso que muestre dos, estás bajo CGNAT y no podrás abrir puertos.

En windows le das a la lupa, escribes cmd y pulsas intro. Luego escribes el comando tracert tuip y mira los saltos. 1 es ip pública 2 es CGNAT

Estos archivos así como los stacks estarán en la carpeta compartida que está para el video de youtube y que tiene el siguiente enlace http://dropbox.bilito.es/s/ZJwm8MscYfCNf6m (ya están actualizados los spk a la versión 7.2) Si aun tienes la version 6.2 tambien tienes los paquetes en esta carpeta)

Si no tienes instalado Docker

Entramos al NAS por interfaz gráfica, vamos al centro de paquetes y buscamos docker en la barra de tareas. Pulsamos en instalar

Si no tienes instalado Portainer

Lo primero es ir a FILE STATION ir a la carpeta de docker y crearemos una carpeta que se llame portainer

Instalamos portainer. Dentro de la interfaz gráfica del nas nos vamos a panel de control, terminal y snmp y marcamos el check de habilitar acceso SSH y en el puerto podemos cambiarlo o dejar por defecto el que estaba.

Luego nos vamos a putty o un terminal en nuestro NAS e introducimos el comando siguiente si estamos en Terminal ssh nombredeusuario@ipdelnas -p puertoelegido pulsamos enter y nos pide nuestra contraseña, que introduciremos. No se ve pero estará ahí. Pulsamos intro cuando acabemos y ya debemos estar dentro del nas.

Ahora introducimos el siguiente comando si no lo teniamos instalado sudo docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /volume1/docker/portainer:/data portainer/portainer-ce:latest

Dejamos la terminal abierta

Vamos a un navegador e introducimos la iplocaldelnas:9000 y nos mostrará la siguiente imagen

Configuramos el usuario, la contraseña, confirmamos la contraseña y pulsamos en crear usuario.

En la siguiente pantalla

Pulsamos en docker y le damos al botón connect.

Instalamos el spk de wireguard

Entramos a nuestro NAS por interfaz gráfica y vamos al centro de paquetes. Pulsamos en instalación manual y cargamos el archivo que corresponda a nuestro NAS, lo instalamos pero despicamos la opción de ejecutar porque nos dará problemas y error.

Volveremos a la terminal y metemos el comando sudo /var/packages/WireGuard/scripts/start e introducimos nuestra clave si nos la pidey vemos como cambia el estado de iniciar a en ejecución.

Luego introduciremos el comando sudo wg-autostart enable wg0 para que se ejecute de forma automática al arrancar nuestro nas.

Volvemos a File Station y vamos a la carpeta docker.

Ahora creamos una carpeta que la vamos a llamar wg-easy

Si estamos en windows hay que bajar el programa notepad ++ si estamos en MAC, recomiendo ATOM porque vamos a abrir el archivo necesario y vamos a editarlo.

Vamos a la carpeta compartida y cogemos una copia del archivo wg-easy.yaml

La abrimos con ATOM y pasamos a editarlo.

version: "3.8"
services:
  wg-easy:
    environment:
      # ⚠️ Required:
      # Change this to your host's public address
      - WG_HOST=tuddns #ponemos nuestro DDNS sin puerto

      # Optional:
      - PASSWORD=tuPassword #la password superefectiva
      - WG_PORT=51820
      - WG_DEFAULT_ADDRESS=10.9.1.x # Puedes cambiar el rango, pero deja el ultimo como x
      - WG_DEFAULT_DNS=IPdetuNAS #IP de tu nas para que actue Pihole
      - WG_MTU=1420
      - WG_ALLOWED_IPS=0.0.0.0/0, #192.168.x.x/24 el valor de tu red local. Sustituye "x.x" por tu rango. 192.168.x.x es opcional, ponlo si no puedes acceder a tus direcciones internas
      - WG_PERSISTENT_KEEPALIVE=25

    image: weejewel/wg-easy
    container_name: wg-easy
    volumes:
      - /volume1/docker/wg-easy:/etc/wireguard
    ports:
      - "51820:51820/udp"
      - "51821:51821/tcp"
    restart: always
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.ip_forward=1
      - net.ipv4.conf.all.src_valid_mark=1


Editamos el archivo wg-easy.yaml

Vamos a portainer, vamos a stack, añadimos stack.

Daremos nombre en minúsculas y sin guiones.

Pegamos el compose y editamos información y pulsamos en deploy the stack.

Vamos a iplocaldelnas:puertoelegido y entramos a la interfaz.

Creamos un peer

y lo metemos en ios, desde la app de wireguard, escaneando el código QR.

Instalamos Pi-hole

Vamos a File Station y creamos la carpeta para pihole.

Dentro de esta carpeta, crearemos tres subcarpetas.

Estas tienen que llamarse dns dentro de esta otra subcarpeta llamada config y crearemos un archivo vacío con el nombre resolv.conf, dnsmasq.d-configs y otra que se llamará pihole-configs.

Vamos a portainer y stacks, añadimos nuevo stack, le damos el nombre, pegamos el compose y lo vamos rellenando con los datos necesarios.

version: '3.7'

#volumes:
#  etc_pihole-unbound:
#  etc_pihole_dnsmasq-unbound:

services:
  pihole:
    container_name: pihole_oficial
    image: pihole/pihole:latest
    network_mode: host
    hostname: pihole_oficial
    dns:
      -  # IP DEL NAS
    ports:
      - 443:443/tcp
      - 54:54/tcp
      - 54:54/udp
      - 80:80/tcp
    environment:
      ServerIP:  #IP DEL NAS
      TZ: Europe/Madrid # la zona horaria donde vivas
      WEBPASSWORD:  # LA PASSWORD Q QUIERAS
      WEB_PORT: 4321
      DNS1: 1.1.1.1  # Hardcoded to our Unbound server
      DNS2: 9.9.9.9 # Hardcoded to our Unbound server
      DNSSEC: "true" # Enable DNSSEC
    volumes:
      - /volume1/docker/pihole-unbound/dnsmasq.d-configs:/etc/dnsmasq.d:rw
      - /volume1/docker/pihole-unbound/pihole-configs:/etc/pihole:rw
      - /volume1/docker/pihole-unbound/dns/config/resolv.conf:/etc/resolv.conf:rw
    restart: always

Pulsamos sobre deploy the stack.

Entramos a la ipdelnas:puertoelegido/admin y entramos en la interfaz de pihole. Hacemos login con la contraseña que hemos puesto.

Configuramos desde settings el DNS server, elegimos cloudflared

En interface settings, elegiremos permitir todos los orígenes.

En use conditional fordward ponemos el rango de nuestro red en mi caso 192.168.0.0/24, después la IP del router y guardamos.

instalamos synocli file tools

Nos iremos a centro de Paquetes, configuración.

En la ventana que se abre iremos a orígenes del paquete y pulsamos en agregar.

Le damos el nombre de Synocomunity y en ubicación, ponemos la siguiente web https://packages.synocommunity.com/

Nos vamos al buscador y escribimos SynoCli File Tools e instalamos.

Con esta acción ya tenemos editor nano en nuestro NAS.

Editamos el archivo hosts

Para no ver las ip locales en pihole sino el nombre del equipo, editamos el archivo hosts por terminal.

Para ello entramos en el nas por teminal y nos vamos a la ruta cd /etc ahí hacemos un ls para listar los archivos que haya en esa carpeta y buscamos el archivo hosts

Hacemos un sudo nano hosts para entrar en su edición.

Tendremos que meter los dispositivos, conociendo su IP y conociendo la Ip del docker que hemos montado wireguard (lo vemos desde portainer).

ponemos la IPlocal del dispositivo en cuestión, pulsamos en tabulador y damos un nombre sin espacios en blanco.

Luego escribimos la Ip del docker de wireguard, tabulamos y le damos un nombre a esa conexión sin espacios.

Guardamos pulsando ctrl + o, enter y control + x para salir del modo edición del archivo.

Reiniciamos el contenedor de pihole.

Ya nos deben salir los nombres.

Plus de privacidad Ofuscar nuestra DNS al estilo Apple Relay Server.

¿Conocéis este servicio? Eso de poner un servidor entre medio en el que nosotros sabemos hacia donde vamos pero hay un servidor intermedio que funciona con encriptador del dns consultado y le muestra al operador otra dirección que va encriptada.

¿Sabéis que podemos tener algo similar en nuestra red?

Entramos en la siguiente web https://www.cloudflare.com/es-es/ssl/encrypted-sni/

Pulsamos en check my browser y nos deben de salir algunas de las 4 opciones con la X. Cada apartado es un apartado de seguridad distinto que hace

Para ello vamos a https://github.com/publicarray/spksrc/releases/tag/dnscrypt-proxy-2.0.45_1

y descargamos este paquete https://github.com/publicarray/spksrc/releases/download/dnscrypt-proxy-2.0.45_1/dnscrypt-proxy_x64-7.0_2.0.45-6.spk

Luego vamos a https://github.com/publicarray/synoedit/releases/tag/v0.0.8 y descargamos https://github.com/publicarray/synoedit/releases/download/v0.0.8/synoedit-amd64-7.0-4000.spk

Vamos al NAS al centro de paquetes e instalamos de forma manual el primer spk que hemos descargado, el DNSCrypt.

Una vez instalado y puesto en marcha, repetimos procedimiento manual con SynoEdit, el segundo spk que hemos descargado.

Una vez instalado y ejecutado, lo abrimos.

En la primera pestaña, seleccionamos dnscrypt-proxy, en la segunda pestaña, dnscrypt-proxy.toml y veréis que se nos abre la configuración de un archivo.

Hay que hacer tres cosas por aqui:

  • Descomentar la línea de server names y dejar el de cloudflared
  • mirar el listen_addresses y copiar el puerto, nos hará falta para pihole
  • cambiar el valor de require_dnssec a true. Pulsamos en save.

Nos vamos a portainer y paramos el docker de pihole

vamos al editor dentro de stack y cambiamos los siguientes valores

En DNS1 cambiamos el puerto del 5335 al que hemos copiado del archivo dnscrypt-proxy.toml Lo modificamos también en DNS 2 En DNSSEC, cambiamos de true a false

Iniciamos el docker y nos vamos a settings dentro de pihole

Despicamos DNSServer hasta dejarlo en blanco

Marcamos las dos primeras opciones de ADVANCED DNS SETTINGS si no estaban marcadas y la tercera debería salir despicada.

Guardamos

Reiniciamos DNSCrypt.

Volvemos a entrar en la siguiente web https://www.cloudflare.com/es-es/ssl/encrypted-sni/ y ya nos deben de salir marcados los tres primeros checks.