Hemos visto en anteriores tutoriales cómo instalar un sistema operativo ligero a una raspberry y posteriormente cómo instalarle y configurarle Pi-Hole para eliminar la publicidad en nuestra red doméstica, todo explicado de forma que cualquier persona pueda montarlo en su casa. Ahora veremos cómo montar un servidor VPN en la misma raspberry para bloquear la publicidad cuando estemos fuera de casa (Sobre 3G o sobre una Wifi que no sea la nuestra) y que además nos permita acceder desde cualquier lado a los dispositivos de nuestro hogar.
Por cierto. En este tutorial veremos cómo instalar OpenVPN en vuestra raspberry. Si lo que queréis es instalar Wireguard (que es otro tipo de VPN con características distintas) he hecho otro tutorial de cómo montarlo en esta dirección.
1) Requisitos.
Para poder seguir este tutorial necesitamos que tengáis una Raspberry con Raspbian instalado. Si habéis seguido el tutorial para instalar Raspbian Lite que hemos publicado, entonces ya tenéis la base preparada.
Necesitamos también que el proveedor de internet os dé una dirección IP pública. No es necesario que tengáis una IP fija, pero sí una que sea públicamente accesible por internet. Está muy de moda que los proveedores de internet compartan una única dirección IP pública con varios clientes, y si tú eres uno de los afectados por esta práctica, este tutorial no te va a funcionar hasta que no os cambien a una IP pública sólo para vosotros. Con algunos proveedores (me viene a la cabeza Pepephone) esto se soluciona llamando a su servicio técnico y solicitando una dirección IP privada, pero no tengo nada claro que sea algo tan sencillo con algunos otros (y me viene a la cabeza Vodafone). Tendréis que averiguar qué tipo de conexión os da vuestro proveedor, y en caso de tener ip privada mirar si podéis realizar alguna gestión para que os den una IP pública.
Por cierto… si únicamente necesitáis un VPN para acceder remotamente a vuestros equipos, entonces podéis ir directamente al punto 2 del tutorial. Pero si además queréis quitar la publicidad en vuestros dispositivos móviles, entonces necesitamos que la Raspberry tenga instalado Pi-Hole. Hemos explicado cómo hacerlo en este tutorial.
2) Vamos a registrarnos en un servicio de DNS dinámico.
Supongamos que ya habéis comprobado que vuestra conexión disfruta de una IP accesible públicamente. Si tienes una conexión a internet doméstica, lo más probable es que la IP que te otorga tu ISP sea dinámica. Las direcciones IP fijas suponen un coste mayor en la conexión (tendrías que pagar más cada mes a tu ISP por disfrutar de una IP Fija) y suelen estar destinadas a usos empresariales.
El tener una IP dinámica tiene una gran desventaja, y es que cada vez que enciendes y apagas el router, tu dirección IP cambia. Desde fuera de nuestra casa necesitamos conectarnos a algo «fijo», puesto que si ha habido algún apagón momentáneo en nuestro hogar la IP pudo haber cambiado. Por poner un simil, es como si tienes que llamar a un amigo pero cada poco tiempo está cambiando de número de teléfono. Si no tienes algún servicio que te diga en cada momento qué número tiene, va a ser difícil contactar con él. Para resolver este problema están los servicios de DNS dinámico. Vamos a usar uno de ellos para que un programa en la raspberry esté diciéndole contínuamente a sus servidores cuál es nuestra IP en cada momento. De esta forma, este servicio nos permitirá tener una dirección web que apunta siempre a nuestra raspberry, aunque nuestra IP esté cambiando contínuamente.
¿Cuál usar? Pues hay varios y esto ya es cuestión de gustos, pero como tengo que centrarme en alguno vamos a usar DNS Exit, que suele funcionar bastante bien.
Primero nos registramos en el servicio en esta página, poniendo nuestros datos.
Una vez registrados, nos vamos a «Sign up services» en la columna de la izquierda.
Entre las opciones que hay, debajo de todo nos vamos a «free second level domains».
Y ahí completamos las distintas opciones. Ponemos un nombre de dominio (será algo del tipo «loquesea@linkpc.net»), la dirección ip nos viene ya cubierta (la que tenemos en este momento) y dejamos marcada la casilla de ip dinámica.
En el siguiente paso nos dice que se ha creado correctamente el dominio de segundo nivel. Debemos pulsar el botón de «Download Dynamic DNS Clients» para descargarnos un programa que nos permita actualizar ese nombre de dominio cada vez que cambie nuestra dirección IP.
En la pantalla que nos aparece, en la zona de «Linux/Unix/MacOSX» debemos pulsar con el botón derecho del ratón en el archivo que tiene la extensión «.tar.gz». Pulsamos en «copiar la ruta del enlace». Así tendremos la ruta del enlace en el portapapeles y la podremos pegar en otro sitio. Si queréis, pegad ese enlace en algún archivo de texto para tenerlo a mano y poder usarlo más adelante.
Ahora debemos acceder al terminal de nuestra raspberry (ya sea mediante Putty o usando el comando SSH desde otro terminal). Antes de empezar con la instalación del cliente de DNSExit vamos a hacer un ajuste (porque la versión actual del cliente tiene un pequeño fallo y si no hacemos esto obtendremos un error más adelante. Si hacemos este pequeño «apaño» nos va a ir todo bordado). Tenemos que ir a la ruta /etc y ahí crear un archivo llamado dnsexit.conf. Para ello teclearemos lo siguiente:
cd /etc sudo nano dnsexit.conf
Vamos a dejar en archivo en blanco. Simplemente tecleamos «Control + O» para guardar cambios y salimos del programa pulsando «Control + X». Ahora vamos a darle permisos a ese archivo para que el programa de instalación pueda escribir en él, con este comando
sudo chmod 777 dnsexit.conf
Con estas dos cosas ya hemos dejado todo preparado para realizar la instalación. Vamos a irnos a la carpeta de nuestro usuario para empezar a realizar la instalación. Lo haremos con este comando.
cd /home/pi
hora vamos a teclear lo siguiente para, primero, crear la carpeta «exitdns» (la llamamos así para diferenciarla de una segunda carpeta que se creará dentro). El segundo comando es para situarnos dentro de esa ruta.
mkdir exitdns cd exitdns
Ahora debemos poner «wget» y pegar la dirección que copiamos antes, con el enlace de descarga del programa que vamos a instalar. Quedará algo así.
wget http://downloads.dnsexit.com/ipUpdate-1.71.tar.gz
Una vez realizada la descarga, debemos descomprimir ese archivo con este comando.
tar xzvf ipUpdate-1.71.tar.gz
De forma que lo que tengamos en la pantalla debería ser algo similar a esto.
Nos metemos dentro de la carpeta que acabamos de descomprimir con este comando
cd dnsexit
Y antes de continuar nada vamos a escribir este comando para instalar unas librerías que necesita el programa para funcionar. Va a instalar bastantes cosas, así que no os asustéis.
sudo apt-get install libwww-perl
y vamos a hacer también un pequeño ajuste para que el programa funcione correctamente, introduciendo este comando:
export PERL5LIB=/home/pi/exitdns/dnsexit/
Ahora ya podemos lanzar el programa de instalación de DNSExit mediante este comando.
./setup.pl
Ese comando nos va a preguntar varias cosas:
- Nuestro usuario de DNSExit (el usuario que hemos creado para logarnos en la página web de DNSExit).
- La contraseña de ese usuario
- El dominio que quieres que se actualice automáticamente (el sistema permite actualizar más de uno). Como sólo tenemos uno, seleccionamos la opción «0».
- Los distintos hosts dentro del dominio. De nuevo volvemos a tener uno sólo, así que seleccionamos la opción «0».
- Nos pregunta si queremos correr este programa como un demonio (lo equivalente a un servicio en Windows). Eso hará que el programa corra siempre en segundo plano actualizando la ip siempre que se cambie. Tecleamos «yes»
- Nos pregunta la frecuencia de las actualizaciones. 10 Minutos entre actualizaciones es más que suficiente, así que ponemos «10».
- Nos pregunta si queremos que este demonio se «autoarranque» cada vez que se reincie la Raspberry. Escribimos «yes».
- Nos pregunta el directorio dónde va a instalar el script. Dejamos puesta la opción «0».
Y con esto queda lista esta parte. Ahora cada vez que cambie nuestra IP, en un intervalo de un máximo de 10 minutos el servicio de DNSExit se enterará y la direccion que hemos creado apuntará a la nueva IP.
3) Instalamos PiVPN en la Raspberry.
Al igual que con Pi-hole, la instalación de PiVPN es muy sencilla y sólo debemos responder a preguntas. Debemos acceder de nuevo al terminal de nuestra raspbery y teclear el siguiente comando:
curl -L https://install.pivpn.io | bash
Este comando nos empezará a abrir pantallas a las que hay que responder. Pimero un mensaje de bienvenida que aceptamos.
En la siguiente pantalla nos advierte de que para que esto funcione, necesita una IP estática. En el primer tutorial le hemos puesto una ip estática a nuestra raspberry, así que todo correcto
Ahora te preguntará si la ip de tu rapberry es estática. Dile que sí.
siguiente pantalla: Advertencia acerca de que puedes liarla si hay un conflicto de IP’s. Vamos a aceptar y esperar que no sea así.
Siguiente pantalla de advertencia: nos dice que en la pantalla que veremos en unos instantes debemos escoger un usuario del equipo en el que estamos instalando PiVPN para guardar las configuraciones. Tenemos sólo uno (pi), así que no va a haber mucha duda.
En esta pantalla seleccionamos el único usuario que tenemos. (¿Por qué no han unido esta pantalla y la anterior?)
Ahora nos recomienda activar actualizaciones desatendidas. Es algo que nos interesa mucho y que deberíamos haber activado ya al instalar la raspberry… pero como lo activa ya PiVPN prefiero que lo haga este programa de forma automática y nos ahorramos una configuración.
Activamos las actualizaciones que nos decían en el punto anterior dándole a «sí» (De nuevo ¿No podían unir estas dos pantallas?).
Ahora nos pide escoger un protocolo de comunicación. Dejamos el que está por defecto (UDP) y aceptamos.
Siguiente pantalla (y esta es importante). Nos pide un puerto para comunicarse. Dejamos el que nos pone por defecto y ANTES DE CONTINUAR LO APUNTAMOS EN ALGÚN SITIO. Cuando terminemos esta instalación hay que mapear ese puerto en el router hacia la IP de la raspberry, así que no lo olvidéis.
La siguiente pantalla es para confirmar la pantalla anterior. A ver… ¿Estamos tontos? ¡Esto está lleno de pantallas duplicadas!
Siguiente pantalla. Nos pregunta si vamos a aplicar una encriptación fuerte y nos advierte que si la usamos puede que alguna versión vieja del cliente no nos fucione. Sin problema. le decimos que sí.
Ahora nos pregunta por el tamaño del certificado. Como en muchas otras cosas, el tamaño no es lo importante. El certificado más básico es suficiente para securizar nuestra VPN (Es más que seguro para lo que se ve por ahí en algunas aplicaciones que usamos a diario). Así que lo dejamos en «256» y aceptamos.
¿Vamos a usar una ip pública para conectarnos desde fuera o una dirección web? Aquí aprovechamos lo que hicimos en el punto 2. Seleccionamos DNS.
En la siguiente pantalla ponemos la dirección que hemos creado en el punto 2
Ahora viene una pregunta crítica. ¿Qué proveedor de dns vamos a usar? Si no queremos unir Pi-hole con PiVPN (queremos usar la VPN sólo para acceder a nuestros dispositivos desde fuera), escoged alguno de la lista (os recomiendo CloudFlare). Si vamos a unirlos (para quitar la publicidad desde fuera de casa) entonces escoged la última opción (Custom). Vamos a hacer una cosa «rara» que os explicaré en el siguiente paso.
Nos pide el servidor de DNS que vamos a usar. En principio deberíamos poner la IP 10.8.0.1 (que sería lo correcto), pero vamos a poner una IP que nos falle. Os explicaré al final del apartado 6 por qué. Por el momento hacedme caso y poned la ip de nuestra Raspberry que en mi caso es la 10.0.1.222, pero tenéis que poner la vuestra.
Pantalla de confirmación. Sí… la ip está mal… pero a la vez está bien porque queremos obtener un fallo en un momento concreto. Luego sabréis por qué.
Ahora nos pregunta si activa una opción para usuarios avanzados. Le decimos que no.
Ahora nos da instrucciones de cómo usar PiVPN una vez instalado. Os las esplicaré luego. Aceptamos.
…y por fin llegamos al final de la instalación. Nos pregunta si reiniciamos el equipo ahora. Le decimos que sí.
Después del reinicio vamos a hacer una comprobación rutinaria. Nos conectamos de nuevo por SSH a la consola de nuestra Raspberry y tecleamos el siguiente comando:
sudo service openvpn status
El resultado nos dirá si PiVPN está funcionando. Si es así, obtendremos algo similar a esto.
Fijaos que en verde nos pone que el servicio está activo y en la última línea vemos que el servicio está iniciado. Así que todo está bien.
4) Mapeamos el puerto en el router.
¿Os acordáis que durante la instalación os dije que debíais anotar el puerto en el que funcionaría PiVPN? Pues ahora es el momento ideal para mapear ese puerto en nuestro router. Tenemos que decirle al router con el que nos conectamos a internet que cualquier petición que venga desde fuera por el puerto 1194 debe dirigirla a la ip de nuestra Raspberry. ¿Cómo? Pues cada router es un mundo y tiene una interfaz distinta. Lo más normal es que tengáis que entrar desde el navegador de internet a la ip del router (192.168.0.1 o 192.168.1.1) y entrando con un usuario y contraseña tengáis alguna opción dónde cambiarlo. En todo caso os voy a explicar cómo tengo que hacerlo yo en mi modelo de router (Time Capsule de Apple), pero vosotros debéis mirar cómo se cambia esa configuración en vuestro modelo de router, porque salvo que sea un router de Apple, vais a tener que hacerlo de forma distinta.
Yo tengo que ir al interface de administración del router e ir al apartado «red». Allí, en ajustes de puerto debo añadir un nuevo puerto
En «Descripción» pongo algo del estilo «Raspberry PiVPN». En los puertos «UDP» pongo el puerto 1194, los puertos TCP los dejo vacíos y en «Dirección IP privada» pongo la ip de nuestra Raspberry.
Una vez hecho esto, acepto todos los cambios, el router se reinicia y listo: puerto mapeado y un problema menos.
5) Creamos un usuario para acceder desde fuera.
Vamos a crear uno (o varios) usuarios con los que podremos conectarnos a nuestra Raspberry. En el terminal tecleamos lo siguiente:
pivpn add
Ahora cubrimos los siguientes datos (y los apuntamos, porque los necesitaremos luego).
- Nombre del cliente: El nombre de usuario que vamos a crear. Yo voy a crear un usuario que se llama «darthvader», pero vosotros poned el usuario que queráis.
- Días que va a durar el certificado: ponemos 3650 (10 años)
- Contraseña: Nos la va a preguntar dos veces. Intentad poner una contraseña segura, por favor. Es importante usar contraseñas seguras y que no habéis usado en ningún otro sitio.
Y listo. Nos generará un fichero llamado «usuario.ovpn» (usuario es vuestro nombre de usuario. En mi caso me crea «darthvader.ovpn). Con este método creamos tantos usuarios como necesitemos, y de hecho lo ideal es crear un usuario diferente para cada dispositivo que se vaya a conectar a la VPN. Una vez creado el usuario el terminal debería ser algo similar a esto:
Ahora debemos mover ese archivo a algún sitio en el que podamos cogerlo, porque lo necesitamos llevar al dispositivo en el que queramos conectarnos. Después de darle muchas vueltas, voy a sugeriros un método para ello que no es el más «elegante», pero sí el más sencillo.
Una opción sería crear una carpeta compartida en la raspberry para acceder a ella desde el ordenador (Eso lo haremos cuando expliquemos cómo instalar aMule en esta misma raspberry, pero ahora no quiero complicaros más el tutorial). Incluso podríamos copiar el archivo en la carpeta dónde se almacena el interface de pi-hole (su página web) y cogerlo accediendo a través del navegador. Pero en un intento por simplificar las cosas voy a sugeriros otro método «poco convencional» pero que va a ser muy sencillo de realizar y con el que no vamos a necesitar instalar ni configurar nada a mayores.
El último mensaje de la raspberry era que el archivo «darthvader.ovpn» estaba en la carpeta /home/pi/ovpns. Pues vámonos a esa carpeta con este comando.
cd /home/pi/ovpns
Lo que haremos será copiar ese fichero en la carpeta /boot (bueno… realmente no es una carpeta, sinó una partición separada). Ahí se pueden almacenar muy pocas cosas porque es una partición pequeñita, pero ese archivo ocupa muy muy poco, así que no habrá problema alguno con el espacio que ocupa. Lo copiamos con este comando.
sudo cp darthvader.ovpn /boot/
Evidentemente, sustituimos el nombre del archivo por el de tu usuario (Espero que no seas tan friki como para tener de nombre de usuario a Darth Vader).
Vale… ya tenemos ese archivo en /boot. ¿Y ahora? Pues simplemente apagamos la raspberry. Para apagarla de forma segura usaremos este comando.
sudo shutdown now
Una vez introducido y después de pulsar «enter», vamos a esperar unos segundos hasta que veamos que en la raspberry sólo hay una luz fija roja (no hay actividad de disco). Entonces le quitamos el cable de corriente, le quitamos la tarjeta y la introducimos en nuestro ordenador, y veremos que podemos acceder a la partición «/boot» sin problemas (está formateada en fat32, por lo que va a poder leerla cualquier equipo). Movemos el archivo a nuestro escritorio (lo movemos, para que quede borrado de la partición «/boot» y expulsamos correctamente la tarjeta del ordenador. Volvemos a poner la tarjeta en la Raspberry y le conectamos de nuevo el cable de corriente.
6) Instalamos el usuario que hemos creado en el cliente VPN de nuestro dispositivo.
Ya tenemos el archivo de configuración en nuestro ordenador. Ahora necesitamos instalar un programa en nuestro dispositivo para poder conectarnos a nuestra recién creada VPN. Estos serán los programas que necesitamos para los distintos dispositivos que podemos tener:
- Windows y Linux: OpenVPN client
- Mac OS: Tunnelblick
- iOS y iPadOS: OpenVPN Connect
- Android: OpenVPN Connect
En cualquiera de estas aplicaciones debemos importar el archivo que hemos generado y que ya tenemos en el ordenador de escritorio, pero os vuelvo a advertir de que no funcionará a la primera debido a una configuración que hemos hecho mal a posta en el paso 3. Os explicaré como corregirlo en el paso 7, pero en todo caso os explico cómo importar el archivo en cada aplicación.
En windows, una vez instalado OpenVPN Client, pulsamos con el botón derecho a su icono en la barra de herramientas, y seleccionamos la opción de «importar».
Importamos el archivo, ponemos la contraseña y marcamos la casilla para que la guarde y no nos la vuelva a pedir. La próxima vez que queramos conectar, desplegamos de nuevo el menú del icono de OpenVPN Client, conectamos con nuestro usuario y nos saldrá la confirmación de que ya estamos conectados.
En un Mac con Tunnelblick instalado, para añadir la configuración simplemente debemos hacer doble click en el archivo con la extensión «.ovpn» y nos saldrá una pantalla similar a ésta. Dependiendo de si queremos que nuestro VPN lo usen todos los usuarios del equipo o sólo nuestro usuario, le damos a «Todos los usuarios» o a «Sólo yo».
Luego nos preguntará por la contraseña de administrador del equipo. La ponemos e inmediatamente nos saldrá esta notificación.
Ahora para conectarnos sólo habría que desplegar el menú de Tunnelblick y pulsar en nuestro usuario de VPN.
En Android, iOS y iPadOS el procedimiento es casi idéntico. Primero debéis enviar el archivo al teléfono (por telegram, correo electrónico, alguna nube como nextcloud, google drive o dropbox…). Una vez que tengáis el archivo localizado en el teléfono tenéis que abrirlo en OpenVPN Connect.
Por ejemplo, en iOS debemos pulsar sobre el archivo y nos aparecerá una opción similar a esta, en la que debemos pulsar en «Copiar en OpenVPN»
Así se abrirá el archivo en el programa adecuado. Nos preguntará si añade ese perfil. Le decimos que lo añada.
Al añadirlo nos pregunta si guarda la clave privada. Pulsamos en la casilla de verificación, ponemos la clave que hemos generado al crear nuestro usuario, y pulsamos arriba a la derecha en el botón «ADD».
Acto seguido se nos pregunta si deseamos añadir una VPN al dispositivo. Le decimos que sí.
Y listo. Ya tenemos lista la VPN en el teléfono para conectarnos. Os recomiendo desconectar el wifi del teléfono. Teniéndo únicamente la conexión 3G activada, pulsad este botón de la aplicación.
Si pulsáis el botón de la aplicación ¡¡¡Ya funciona!!! Espera… ¿Ya funciona? Pues a medias. Aparentemente el botón se pone en verde y estamos conectados, pero si intentamos navegar obtenemos un error diciendo que no podemos acceder a la página ¿Por qué?
Pues sencillo… porque hemos hecho una configuración incorrecta durante la instalación. Si hubiésemos hecho la configuración correctamente estaríamos navegando, pero tendríamos que perder tiempo comprobando si nos funciona todo correctamente o no. Si os podéis conectar a la VPN y os da error cuando intentáis navegar sabemos:
- Que el VPN funciona (al menos conecta).
- Que la navegación se está haciendo a través del VPN (que como está mal configurado nos está dando error).
Si hubiéramos hecho la configuración bien, estaríamos navegando, pero no sabríamos si la página web la estamos cogiendo de nuestra conexión a internet sin pasar por el VPN o estamos cogiéndola por el VPN. Ese error nos garantiza que estamos navegando por el VPN y que vamos bien encaminados.
7) Corregimos la configuración y hacemos los últimos ajustes.
Vamos a entrar de nuevo en la raspberry por SSH (por teminal o Putty). Vamos a ir a la ruta /etc/openvpn y ahí vamos a editar el archivo server.conf, tecleando el siguiente comando.
sudo nano /etc/openvpn/server.conf
A estas alturas seguro que ya sabéis que podemos hacerlo de este otro modo.
Dentro de ese archivo vamos a buscar la línea que pone lo siguiente:
push "dhcp-option DNS 10.0.1.222"
Como habréis supuesto, debe poner la ip de vuestra raspberry. Vamos a cambiar esa línea por esta otra…
push "dhcp-option DNS 10.8.0.1"
Esa IP es la que usa PiVPN siempre como puerta de enlace y servidor de DNS para los clientes que se conecten al servicio. El archivo quedaría de esta forma.
Con este cambio realizado, pulsamos «Control+O» para guardar los cambios y salimos del editor Nano pulsando «Control + X».
Por cierto… si no usáis pi-hole y sólo queríais usar un VPN para conectaros con vuestros dispositivos, esa IP debería ser «1.1.1.1», y además con este cambio este tutorial ya ha acabado para vosotros. El resto vamos a hacer un par de configuraciones a mayores para que Pi-hole nos bloquee la publicidad mediante el VPN.
Para terminar la conexión entre Pi-hole y PiVPN vamos a ir a la ruta /etc/pihole y vamos a editar el archivo «setupVars.conf»
sudo nano /etc/pihole/setupVars.conf
En ese archivo la primera línea debe poner algo como ésto si la raspberry se conecta por WiFi.
PIHOLE_INTERFACE=wlan0
O ésto si la raspberry se conecta mediante cable de red.
PIHOLE_INTERFACE=eth0
Justo debajo de esa línea, debemos añadir otra que ponga esto otro.
PIHOLE_INTERFACE=tun0
Para que el archivo quede de esta forma.
De nuevo pulsamos «Control+O» para guardar cambios y «Control + X» para salir del editor. Esto hará que el Pi-hole permita entregar datos a PiVPN.
Por último vamos a crear un archivo que no existe en nuestra Raspbery. Tenemos que ir a la ruta /etc/dnsmasq.d y crear allí un archivo llamado 02-ovpn.conf de esta forma.
sudo nano /etc/dnsmasq.d/02-ovpn.conf
Dentro de ese archivo debemos escribir una única línea, que será ésta.
interface=tun0
Guardamos cambios con «Control+O» y con esto ya hemos terminado. Reiniciamos la raspberry por precaución con este comando:
sudo shutdown -r now
Una vez reiniciada podéis probar de nuevo la conexión que intentamos en el punto 6. Teniendo sólo 3G activado, intentad conectaros al VPN y abrid alguna página web. Ahora ya deberíamos poder navegar con el VPN conectado y el Pi-hole debería quitarnos toda la publicidad de las páginas web y de todas las aplicaciones del teléfono (o del ordenador).
Por cierto… si estáis pensando que seguramente la raspberry está ahora echando humo, estáis muy equivocados. Aún está muy ociosa, así que podemos usarla para más cosas además de tener un servidor de Pi-Hole y otro de PiVPN. En el próximo tutorial veremos cómo instalarle a esa misma raspberry un cliente de aMule para poder realizar descargas largas sin tener que dejar el ordenador principal encendido y consumiendo muchísima electricidad (os recuerdo que el consumo eléctrico de una Raspberry es casi anecdótico).
Y si queréis probar con una VPN que últimamente está muy de moda, podéis instalar de forma simultánea en vuestra Raspberry un servidor de Wireguard. Tenéis en este enlace un tutorial que hemos hecho acerca de cómo hacer esa instalación.
Buenas,
He seguido todos los pasos (los de los tutoriales anteriores también) y al conectarme con android a la VPN no envía ni recibe paquetes apenas y el teléfono se comporta como si no tuviera conexión.
Además el PC, que sí está en la red local, no filtra los anuncios, pero eso tengo claro por qué es pero no cómo solucionarlo. Un cmd > ipconfig me dice que el DNS asignado por DHCP sigue siendo 1.1.1.1 cuando en el router he configurado la IP de la raspberry. He probado a reiniciar el router, a hacer /release, /renew y /flushdns pero nada, no hay manera.
Sabes por dónde puede andar el problema (aunque sean 2 distintos me temo)?
Gracias. Muy buenos tutoriales por cierto.
Los dos problemas están relacionados, me parece. El VPN no es capaz de asignar el servidor de dns correcto a tu móvil por dhcp y cuando intentas navegar el móvil no navega. Y el PC no filtra los anuncios porque aún sigue usando las DNS antiguas. Todo está relacionado.
haz un ipconfig en el PC y mira a ver qué servidor de dns te está asignando el router. Si el router lo permite, apágale el servidor de DNS y actívalo en el pi-hole para que sea él el que le de las DNS a los aparatos de tu hogar.
Tienes razón, no entiendo por qué no he pensado que el tema de la VPN era también por las DNS.
El ipconfig como te dije me muestra que las DNS depués del /release, /renew y /flushdns siguen siendo las antiguas.
Total, que ya he encontrado el problema. Mi router (el Askey de movistar) tiene 2 lugares para configurar las DNS. Una en el apartado DNS donde se configura el static DNS server (que ahora me pregunto para qué servirá) que es donde yo las he puesto. Luego en el apartado LAN en la sección de DHCP se configuran también las DNS a servir. Total, que ya funciona.
Gracias!
Enhorabuena por el blog, me está gustando mucho!!
He instalado PiVPN en un OSMC y quería compartirlo por si hay personas interesadas.
Hay que realizar dos pasos prévios antes de seguir el manual.
1º Instalar whiptail para el script de instalación de PiVPN, sino lo tienes te da un error tras hacer el curl -L
sudo apt-get install whiptail
2º Instalar Linux Standard Base (lsb) ya que si no lo tienes la primera pantalla del PiVPN te dice que el sistema operativo no es compatible
sudo apt-get install lsb-release
Tras esto ya puedes seguir el manual, eso si, la configuración de IP fija hay que hacerla a posteriori ya que el script te dice que al no ser un raspbian tienes que hacerlo tú.
Espero que os sea últil
Saludos!!!
Muchas gracias por tu consejo.
Hola.
Muchas gracias por el tutorial y por el tiempo que dedicas.
He seguido el tutorial paso a paso pero cuando mi ip publica cambia deja de funcionar la vpn, es decir, no esta renovando la ip en la dns.
¿Alguna idea?
Hola Vicent!
Tengo el mismo problema que tu… lo conseguiste solucionar?
Gracias!
Hola Marcos,
Cómo se podría configurar todo esto (digamos en conjunto de esta serie de tutoriales) para que la raspberry use DNS over HTTPS?
Gracias!
Me respondo a mí mismo. Para el que le interese:
https://www.secjuice.com/encrypting-dns-for-privacy/
¡Hola!. Buenísimo trabajo. Muchas gracias.
Este tutorial no me ha funcionado del todo, pero no se en que me he podido equivocar. ¿Hay alguna forma de desinstalar lo que se ha hecho (en este tutorial, que los anteriores me ha ido a las mil maravillas), de forma que se pueda volver a empezar?.
En el router de Movistar (TRAKSTAR) no he conseguido ver dónde exactamente se puede especificar la redirección. Aparece como opciones configurar varios servicios como «NOIP» y demás, pero claro, de pago. No se si es que este router está limitado para esos proveedores o se puede especificar cualquiera.
Aparte, tengo un dominio comprado, ¿como puedo redirigir mi dominio para que apunte a mi servidor?.
Muchas gracias.
Hola. Perdona por la tardanza en responder pero últimamente ando a mil con otras cosas.
Sobre la desinstalación, creo recordar que se hacía con
sudo pivpn -u
Pero aquí hay un script específico para ello.
https://github.com/pivpn/pivpn/blob/master/scripts/uninstall.sh
Sobre proveedores de dns en el router… muchos routers vienen con proveedores de pago, así que es probable que no tenga el que indico yo en el tutorial. Pero vamos… si vas a dejar la raspberry encendida para conectarte a ella, no veo el problema de instalar en la propia raspberry el que uso yo.
En todo caso dices que tienes un dominio comprado. Eso puede facilitar las cosas si tienes una ip fija. En el proveedor de tu dominio puedes apuntarlo a la ip de tu conexión y listo. Si tienes ip dinámica, entonces dependes de que tu proveedor (al que le hayas comprado el dominio) tenga alguna herramienta que te permita cambiar de forma dinámica a dónde apunta. La verdad es que la mayoría no lo hacen. Pero sí te puedo decir quién lo hace. La web «flopy.es» la tengo alojada en otra raspberry que está conectada a una línea con ip dinámica (Sí, esta web te la acaba de generar una raspberry). El dominio «flopy.es» lo tengo alojado en dondominio.com y te puedo asegurar que ellos sí que tienen herramientas para apuntar el dominio a tu ip (las tengo instaladas en la raspberry que aloja la web). Así que si tu proveedor no tiene nada de eso, una opción es hacer una migración a un proveedor que sí que te lo permita hacer. Ya digo… yo uso ese pero sé que hay más que lo permiten hacer. Por ejemplo, DNSExit te permite trasladar el dominio a ellos y gestionarlo con su herramienta… pero a nivel más profesional me gusta más cómo funciona dondominio (cuestión de gustos).
Hola!
Aqui tienes la pagina donde lo segui yo, esta hecho de una manera algo mas simple.
https://geekland.eu/dns-over-https-doh-pi-hole/
Saludos!
Me refiero al comentario de malcolmXTC
Hola,
Una pregunta, se podría instalando esto en la Raspberry llegar a las webs que se han filtrado ultimamente?
https://cincodias.elpais.com/cincodias/2020/02/25/companias/1582659333_790183.html
La respuesta corta es sí.
La respuesta larga es ¿Por qué liarse tanto? A ver… el filtrado que están aplicando para que no se pueda acceder a esas webs es un filtrado por DNS (parecido al que hacemos con pi-hole). Si en tu casa quieres acceder a esas webs con tu ordenador, si usas windows puedes hacer click con el botón derecho en «red», pulsar en propiedades, te vas a la conexión que estés usando (wifi o ethernet), propiedades, protocolo de internet versión 4 y marcas «usar las siguientes direcciones de servidor DNS» y pones como preferido «1.1.1.1». O si quieres usar las de google pon «8.8.8.8». Sólo con eso ya estarías saltándote ese bloqueo.
Eso sí… en un móvil conectado a una red móvil no podrías hacerlo de esta forma. Por ejemplo, esto es lo que veo en mi móvil con mi línea de datos móviles (en la calle) si intento entrar en una de esas páginas.
https://www.flopy.es/wp-content/uploads/2020/02/20-02-26-12-52-40-5764.png
y esto es lo que veo si enciendo la VPN que tengo en casa que he hecho siguiendo el tutorial.
https://www.flopy.es/wp-content/uploads/2020/02/20-02-26-12-52-54-5765.png
Si te fijas, en la segunda imagen aparece arriba el símbolo de «VPN» indicando que estoy usando una conexión VPN. Pero es que tampoco creo que necesites entrar en esas páginas cuando estás en movilidad, así que sigo sin ver la necesidad de usar un VPN sólo para este caso en concreto. Por supuesto, estoy obligado a decirte que no deberías entrar en esas páginas en ningún caso (Que si están bloqueadas es por algo), pero en caso de necesitar entrar por el motivo que sea (Y quiero creer que es para documentarte para hacer algún artículo sobre el bloqueo de esas webs), a lo mejor es menos lioso cambiar las DNS en tu casa y tirar millas ¿No te parece? A no ser que necesites usarlas sí o sí en la calle y en ese caso sí que sería necesario hacer algo como lo que se indica en el tutorial. En todo caso ten en cuenta que ese tipo de webs no son seguras (son fuente habitual de infecciones en ordenadores), así que no puedo hacer otra cosa que recomendarte no entrar en ellas.
Resumiendo: sí se puede y de múltiples formas pero no deberías usar esas webs (Tanto por seguridad de tu ordenador como por la prohibición de los jueces).
Tienes toda la razón, pero eso suponiendo que la persona sepa algo de dns. Queria hacerlo para que cualquiera que se conecte desde mi red, y de paso, para que mi Kodi pueda acceder a esos «recursos» de manera transparente para poder «consultarlos».
Además tal y como se está poniendo el panorama, mejor tener un extra de seguridad.
Mmmm…necesitamos definir primero qué significa «conectarte desde mi red». ¿Quieres que cualquiera que se conecte a tu red wifi pueda acceder a esas páginas? Si es sólo eso, si tu router te permite entrar para definir el servidor de DNS, puedes definirlo en el router y eso hará que cualquier equipo que se conecte a tu wifi pueda ver esas páginas.
Si tu kodi está conectado al router del que estoy hablando (Sin VPN’s por el medio) también tendría acceso a esos sitios.
Ya digo… si el objetivo es ver esas webs, mejor cambiar sólo las DNS. Si el objetivo es darle más seguridad a la red y filtrar publicidad, implementa el pi-hole. Si quieres acceder desde fuera de casa, sobre el pi-hole implementa el Pi-VPN (recuerda que estás comentando en el artículo sobre pi-vpn y a lo mejor lo que quieres es sólo implementar pi-hole en tu casa).
No puedo crear una cuenta en DNIExit siempre me sale este error:
Account sign up is rejected !!!
Hay alguna web alternativa que pueda utilizar en su lugar?
Pues sí. Hay algunas alternativas, como por ejemplo estas.
Afraid.org Free DNS.
Duck DNS.
No-IP.
Con-IP
Securepoint Dynamic DNS.
EntryDNS.
Dynu Dynamic DNS.
Ya digo… el tutorial está hecho con DNSExit porque había que hacerlo con alguno, pero cualquier otro servicio similar debería servir.
si no me equivoco es porque debes de tener algún adblocker activado en el navegador para ese sitio web, prueba a desactivar y ya debe dejar dar de alta
Me respondo, encontré la solución en
https://blog.yucas.mx/2019/09/10/cant-locate-http_get-pm-in-inc-inc-contains-etc-perl/
el comando es:
pi@raspberrypi:~/exitdns/dnsexit $ sudo cp Http_get.pm /usr/share/perl5
Mi agradecimiento a Marcos por este excelente blog que me devolvió las ganas de trastear con la RPI.
Gracias.
hola antes de nada gracias por tus tutoriales,
cuando intento instalar pivpn (curl -L https://install.pivpn.io | bash) me devuelve este error
curl: (7) Failed to connect to install.pivpn.io port 80
podrias ayudarme?
un saludo
Solo una sugestion: prueba con sudo delante… a mi me ha pasado. :))
Buenas noches.
Refloto el tema por el siguiente mensaje que me da Tunnelblick:
«2021-09-15 00:12:45.046459 *Tunnelblick: Warning: DNS server address 192.168.1.15 is not a public IP address and is not being routed through the VPN.
2021-09-15 00:12:50.319499 *Tunnelblick: This computer’s apparent public IP address (85.68.196.185) was unchanged after the connection was made».
Algo no hice bien, o no puse correctamente. Pero … ¿que? ¿donde? ya empiezo a perderme entre tanto dns y dns dinamico y demás… además en el router en la zona DNS no puedo cambiar los servidores dns que vienen asignados por Orange… ¿hay alguna posibilidad de cambiar dichos mensajes de tunnelblick y «enmascarar» la ip publica a través de el server VPN? o lo dejo todo como está..
Nota: en este momento estoy conectado desde mi LAN con mi mac. todaviá no probé con el móvil en WAN (4G). Influye esto en algo?
Hola. Estoy siguiendo los tutoriales para instalar pihole y pivpn con wireguard pero no consigo que funcione la parte de vpn. Como los pasos son ligeramente distintos en las versiones recientes de estos paquetes respecto a lo que indica el tutorial, no sé si me he equivocado en algún paso. La otra opción, que es lo que vengo a preguntar, es que no sea viable utilizar el modelo 2B para este fin. ¿Alguien lo ha probado?
Seguí el troubleshooting de https://docs.pivpn.io/faq/ y todo salía bien, incluyendo la parte de los paquetes UDP. Si tenéis alguna sugerencia de que otras pruebas hacer, os lo agradezco.