Tutorial: Creando una VPN con Wireguard + Pihole. Porque como en casa, en ningún sitio

8 messages, 1 pages:  1 ↖ Go back to topic list

Score: +2

1. Dherhion,

Vamos con otro tutorial. Esta vez sobre cómo montar una VPN más Pihole para eliminar los anuncios de la red.

¿Cuál es el punto?

Odio los anuncios. De verdad, me ponen de una mala leche increíble, tengo una guerra eterna contra ellos. Desde que instalé Pihole los hice medio desaparecer, pero no es suficiente.
Cuando salgo de casa vuelven a aparecer, y no es justo porque los odio.
Bromas a parte, conseguimos dos cosas con esto:
La primera y es la más inesperada, por alguna razón ahorramos datos. Puede que esto sea efecto placevo, pero según lo que muestra la app de vpn desde que la uso, los datos descargados son menos.
La segunda es que siempre estamos conectados a la misma red con conexión cifrada, con todo lo que eso implica. Chao, anuncios, hola, contenido de dispositivos locales desde la Conchinchina.

¡Eh, yo también quiero! ¿qué necesito?

Apunta, necesitarás lo siguiente:

  • Un ordenador fijo con Linux. Una raspberry pi te hace el apaño si no tienes uno. Una máquina virtual en un portátil, que os veo venir, no sirve. Necesitamos algo conectado 24/7 al router de casa. Un vps también puede valer si tienes suficiente tráfico.
  • Una velocidad medio en condiciones.
  • Abrir puertos en el router si no usas vps.
  • Vale, tengo todo, ¡al lío!

    Venga, vamos. Lo primero, necesitamos Debian o Ubuntu.
    Yo prefiero Debian, Raspbian en mi caso.
    Tras instalarlo, usaremos Raspbian como referencia, pero sirve igual para otros sistemas, configuraremos la ip estática de la máquina.
    Necesitamos asegurarnos de que no nos da la lata el cambio de ip, así que comprobamos en nuestro router cuál es el rango de dhcp y le metemos una que esté fuera del rango.
    En mi caso, como 192.168.1.1 es una ip muy común y al acceder a cacharros desde fuera me daba conflicto porque fuera también hay 192.168.1.1, decidí cambiarla a 10.0.0.1 y tener el dhcp empezando en 10.0.0.33. Con esto me aseguro de que los cacharros conectados a la red tengan 10.0.0.34,35 ETC ETC y que todo lo que meta por debajo de 33 no va a entrar en conflicto.
    Wireguard nos configura la ip estática el solito cuando se instala.
    Una vez nuestro sistema está instalado y configurado haremos lo siguiente:

    1. entrar como root. Si no podemos,
    2. sudo su
    3. Actualizar repositorios.
    4. apt update
    5. Actualizar el sistema.
    6. apt upgrade
    7. Instalamos curl si no lo tenemos.
    8. apt install curl
    9. Instalamos PiHole.
    10. curl -sSL https://install.pi-hole.net | bash
      Nos saldrá un asistente muy chulo. Si usais dhcp en el router, decidle que no lo active.
      Nos preguntará varias cosas, entre ellas si queremos dejar la ip actual como estática. Decidle que sí.
      También nos dejará escoger dns, es un instalador intuitivo.
      Cuando os pida dns podeis decirle que 8.8.8.8 y 1.1.1.1 o algún otro servicio de esos chulos de dns.
      Os dará los datos de acceso por web para que podáis tocar cosas. aunque ya por como viene por defecto se cepilla suficientes anuncios, yo he metido alguna lista más. Google puede ayudar en este caso.
    11. si queremos, cambiamos la contraseña de PiHole:
    12. pihole -a -p
    13. Cambiamos las dns del router a la ip de nuestro cacharro. Cada Router es un mundo, así que... Ahí no me meto.
    14. Reiniciamos el cacharro con sudo reboot y nos mentalizamos para instalar Wireguard.
    15. Para ello usaremos pivpn, un script que nos facilita mucho el trabajo.
      Asumiremos que tenemos un usuario llamado dherhion.
      en primer lugar nos vamos a su home, Para ello teclearemos lo siguiente:
      cd
      o lo que es lo mismo,
      cd /home/dherhion/
      Ahora procedemos a actualizar los repositorios, sé que lo hemos hecho antes, pero bueno.
      sudo apt update
      Continuamos por fin instalando Wireguard:
      sudo curl -L https://install.pivpn.io | bash
      Cuando pregunte que vpn queremos, escogemos Wireguard.
      Cuando nos pregunte si queremos usar ip o dns, escogemos dns. Sé que no hemos configurado nada todavía, pero eso se hace luego.
      Nos pedirá un dominio. Yo uso duckdns con un cron y lo explicaré más adelante, así que dherhion.duckdns.org
      Podeis usar noip, zapto o cualquiera de los gratuitos. Hay routers que permiten actualizar la ip automáticamente.
      El instalador ahora detectará que tenemos PiHole instalado y nos preguntará que si queremos usarla en la VPN. Le decimos que sí, obviamente.
      Una vez el asistente finalice, tenemos que hacer que la vpn se inicie con el sistema:
      sudo systemctl enable wg-quick@wg0.service
      sudo systemctl start wg-quick@wg0.service

Casi terminamos. Lo siguiente que tenemos que hacer es abrir el puerto 51820 en el router.

Crear usuarios y conectar

Para continuar, crearemos dos usuarios y nos conectaremos a la vpn, vayamos pasito a pasito.
en primer lugar con el comando pivpn -a crearemos un usuario pepeordenador y otro pepemovil.
No tengáis miedo y probadlo, es intuitivo. Yo, como soy vago, hago un pivpn -a -n pepeordenador y me ahorro preguntas.
Esto nos creará dentro del directorio configs un perfil de usuario.
si todo va bien, deberíamos tener pepeordenador.conf y pepemovil.conf listos para usar.
Nos llevaremos a nuestro ordenador pepeordenador.conf y generaremos un qr para pepemovil. Pero antes configuraremos el dns.
entramos a duckdns.org y nos creamos una cuenta. Luego añadimos un dominio. Cuando lo tengamos, la ip la pillará automáticamente, pero hay que hacer un paso extra. Hacer que la raspberry la actualice cada x.
Así que añadimos al crontab esta línea. Para ello usaremos crontab -e:

*/1 * * * * /home/dherhion/actualizarip.sh >/dev/null 2>&1
Esto ejecutará un script llamado actualizarip.sh cada minuto. Vamos a crearlo.
nano /home/dherhion/actualizarip.sh
El contenido es el siguiente:

echo url="https://www.duckdns.org/update?domains=dherhion&token=tu_token&ip=" | curl -k -o ~/duckdns/duck.log -K -
Cambiamos dherhion y tu_token por lo que corresponda.
¡Listo!
chmod +x actualizarip.sh
y nos olvidamos del tema.
¿Recordais el archivo .conf que nos hemos llevado? Pues olvidaos de él, porque os lo dejo como ejercicio.
Usando la app Wireguard, descargable para Windows, Mac o Linux, conectaos a la vpn desde otra red usando el archivo pepeordenador.conf
A ver quien es el primero que me explica el proceso.
Os enseñaré otra cosa en su lugar.
A conectar móviles de forma rápida.

  1. Descargamos la app Wireguard, sea desde Google play Store o AppStore.
  2. la abrimos y escogemos la opción de escanear un qr.
  3. Maximizamos la pantalla de la terminal.
  4. Escribimos:
  5. pivpn -qr
  6. Seleccionamos el perfil para el móvil.
  7. en el móvil pulsamos en agregar túnel.
  8. ¡Listo! Desconectamos la wi-fi y activamos el túnel recién creado. Navegamos unos minutos y luego usamos pivpn -c en la terminal del ordenador para ver los dispositivos conectados.
  9. Deberíamos poder acceder cuando nos conectemos a la vpn a la web de PiHole si lo hemos configurado bien.

    Bonus: Acceder a los cacharros de la red como si estuvieras conectado localmente

    Esto a mi me dio bastante guerra, pero es fácil: Solo tenemos que hacer lo siguiente:
    sudo nano /etc/sysctl.conf
    Ahí descomentamos:

    net.ipv4.ip_forward =1

    para que quede
    net.ipv4.ip_forward =1
    Guardamos con ctrl x.
    ahora necesitamos saber cuál es nuestra interfaz de red. en mi caso sé que es eth0, pero por si las dudas ejecutamos el comando
    ip route list default
    Nos mostrará algo como esto:
    $ ip route list default
    default via 10.0.0.1 dev eth0 src 10.0.0.10 metric 202
    Tenemos que añadir reglas a la interfaz, así que volvemos a editar archivos:
    sudo nano /etc/wireguard/wg0.conf
    Debajo de ListenPort añadimos, teniendo en cuenta que si alguna línea ya está, no hay que duplicarla:
    SaveConfig = true
    PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
    PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
    Guardamos con ctrl +x
    solo nos falta una última cosa:
    sudo reboot
    Listo, ya podemos acceder a nuestras cosas como si estuviéramos físicamente conectados a ellas por red.
    P.D: Dherhion.duckdns.org no existe.
    P.D2: Estoy abierto a dudas y correcciones.
    P.D3: Rogamos disfruten las molestias.

Score: +1

2. Rayo,

me acabas de dar tareíta para el finde largo, y, en cima una posible solución para saltar las protecciones de mi universidad; gracias, dherion!

Score: +0

3. Dherhion,

¿La probaste?
¿Te sirvió?

Score: +0

4. kirito,

dios que pastón que cuesta una de estas cosas rast berry pi xd.

Score: +0

5. Rayo,

al final lo intenté, resultado? fallos por todos lados. siceramente mentiría si digo el qué. lo dejaré hasta terminar semestre en la universidad y luego si me pondré al lío otra vez.

Score: +0

6. Dherhion,

En jesuspavonabian.es tienes el tutorial con formato correcti, aquí en la sala se ve raro.

Score: +0

7. unicornioAzul ,

en vps como es el tema?

Score: +0

8. Dherhion,

Exactamente igual.
Lo único que si tienes dominio puedes saltarte el paso de duckdns.

Score: +0

8 messages, 1 pages:  1 ↖ Go back to topic list

Answer to topic

You must be connected in order to be allowed to post.

Lost password ? Create account