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
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.