65 - Navegar sin publicidad gracias a tu Raspberry
Es posible navegar sin publicidad en todos tus dispositivos, ya sea en casa o en cualquier lugar. Tan solo con tu Rasbperry Pi y seguiendo las indicaciones.
Antes de explicarte que es esto de navegar sin publicidad gracias a tu Raspberry, aclararte que estoy a favor de los anuncios. Si, cada uno en su página y con su contenido que haga lo que quiera. Al fin y al cabo es una forma lícita de llevar adelante un negocio. Sin embargo, en determinadas páginas, navegar es casi imposible. Se hace algo realmente insufrible. La cantidad de anuncios, tanto estáticos como dinámicos, hace la navegación se convierta en una experiencia desagradable. Y eso a pesar de que actualmente ya padecemos, tanto tu como yo, lo que se conoce como ceguera publicitaria. De hecho, te puedo asegurar que salvo en contadas páginas donde la navegación es insufrible, prácticamente no veo esa publicidad.
De esta forma, y después de leer y escuchar diferentes opiniones, he decidido probar a navegar sin anuncios.
En mi caso, como ya he comentado en mas de una ocasión, no quiero poner anuncios en la página porque a mi no me gusta. Para mi navegar con tanto anuncio realmente me parece molesto, y en ese sentido tampoco quiero transmitir esa experiencia de uso que, como digo, me parece tan sumamente molesta. Por eso, hace ya algún tiempo me decanté por la donación… Aunque al fin y al cabo, es un anuncio que aparece en la página, pero creo que no es molesto, o al menos a mi no me lo parece. Sin embargo, lo cierto es que navegar por, según que páginas, se ha convertido en una experiencia horrible.
Navegar sin publicidad gracias a tu Raspberry Pi
Existen multitud de soluciones para esto de navegar sin publicidad. Es decir, navegar por internet bloqueando anuncios. Sin embargo, una solución muy, pero que muy interesante es utilizar tu Raspberry Pi, también para realizar esta operación.
¿Porque utilizar la Raspberry Pi para navegar sin publicidad? Sin lugar a dudas a la Raspberry se le puede sacar mucho pero que mucho jugo. En el episodio 52 del podcast, te comenté sobre la posiblidad de tener tu propia red virtual por tres euros al año. Si a esta red virtual, le añades el filtrado de anuncios, lo tienes perfecto. Simplemente te tienes que conectar a la red virtual, y ya puedes navegar sin publicidad, y todo ello gracias a la Rasbperry Pi.
¿Que herramienta utilizar para el filtado de anuncios? Para ello, tienes a tu disposición Pi-hole. Una increíble herramienta que te hace las cosas muy pero que muy fáciles.
Sobre Pi-Hole y como navegar sin publicidad
Pi-Hole es una aplicación que te permite navegar sin publicidad, y para ello bloquea tanto anuncios como rastreadores. El funcionamiento es sencillo, porque Pi-Hole se comporta como un sumidero de DNS, también conocido como sumidero servidor o agujero negro de DNS (de ahí la imagen de portada del podcast).
Pi Hole utiliza diferentes servicios para bloquear las peticiones DNS para los dominios que hayas elegido. De hecho, Pi Hole, te ofrece un importante abanico de posibilidades para indicar que dominios quieres bloquear y cuales no.
A diferencia de un bloqueador para tu navegador, Pi Hole, bloqueará todo lo que llegue a tu Raspberry en este caso, y desde tu Raspberry en adelante, no pasará nada de nada, de lo que esté bloqueado.
Pi Hole, mantiene actualizado un listado de dominios que se caracterizan por estar clasificados como publicitarios y/o de seguimiento. Así cuando haces cualquier consulta, Pi Hole, compara con sus datos y si existe coincidencia bloquerá la resolución del dominio, y en lugar de devolver el recurso esperado te devolverá una página en blanco.
Como ya te puedes imaginar, esto no solo funciona en tu ordenador, sino que también va a funcionar en tu móvil, y en cualquier dispositivo que utilice Pi Hole como resolutor de DNS.
Características de Pi Hole
Pi Hole trae una serie de características que lo hacen ideal para instalarlo en tu Raspberry. Bueno, en una Rasbperry Pi, o en donde quieras, porque sinceramente, es verdaderamente sencillo de instalar. Así, algunas de las características de este servicio son las siguientes,
- Fácil de instalar. Pi Hole viene con un instalador, que hace que el trabajo de instalación, sea un camino de rosas. Es verdaderamente fácil ponerlo en funcionamiento. Incluso en el caso, de que hagas una instalación algo mas compleja añadiendo una VPN, como te voy explico en el podcast.
- Como he mencionado anteriormente, al bloquear en la Raspberry se bloquea para todos los dispositivos conectados a la misma. No tienes que activarlo en cada uno de ellos, como sucede por ejemplo con un bloquedor de navegador.
- Velocidad. Dado que cachea las consultas de DNS, notarás una mayor velocidad de navegación.
- Pi Hole, tiene unos bajos requerimientos de hardware y software. De hecho lo que indican los desarrolladores de Pi Hole en cuanto a requisitos de hardware son 512 MB de RAM y 52 MB de espacio. Así, en el momento de preparar este podcast, la Raspberry está consumiendo no llega a un 2% de CPU y 100 MB de RAM. Y esto a pesar de que, como te explicaré mas adelante la configuración que he elegido tiene alguna cosilla mas.
- Pi Hole es tremendamente robusto. Esta herramienta utiliza un comando de terminal que es realmente sencilla de utilizar y que, sin necesidad de recurrir a la web de administración te permitirá realizar todas las operaciones necesarias.
- Como comentaba en el punto anterior, para la administración de Pi Hole, además de la línea de terminal, también puedes utilizar una web, que es realmente espectacular. No solo por lo fácil que te pone las cosas, sino porque te da una cantidad de información espectacular, de forma completamente visual y práctica. De un solo vistazo tienes a tu disposición desde el número de consultas realizadas, la bloqueadas, los dominios mas bloqueados, las consultas mas habituales… En fin, es como para pasar toda una tarde de domingo viendo que es lo que haces.
- Puede funcionar como servidor DHCP, de forma que todos tus dispositivos estarán protegidos de forma automática. Esto va a depender de tu proveedor de internet, porque en algunos casos, la configuración del DHCP no está disponible como es mi caso particular.
- Por software no será… si Pi Hole lo pones en un buen servidor, será capaz de gestionar cientos de millos de consultas…
- Es libre y te da la libertad, en tanto en cuanto tu eres la única persona que controla tu privacidad–
Soporte
Pi Hole no vive del aire, ni los desarrolladores que la mantienen tampoco. Como te puedes imaginar, este software, tiene un coste mantenimiento que hay que sufragar. Así, puedes contribuir a su mantenimiento donando a Pi Hole.
Instalando Pi Hole para navegar sin publicidad
Como he comentado a lo largo del podcast, mi objetivo no es instalar Pi Hole y punto. Ultimamente que viajo mas y que me conecto a diferentes redes, lo mejor es utilizar una VPN para estar mas seguro. Así, voy a combinar, Pi Hole con PiVPN tal y como expliqué en el episodio 52 del podcast. En ese podcast, te comenté como podías tener tu propia red virtual por tres euros al año, y en este nuevo episodio del podcast le pondrás la guinda al pastel.
Por otro lado, Pi Hole, utiliza lighttpd como servidor web. Sin embargo, estoy mas habituado a Nginx. Y para el certificado Let’s Encrypt está todo resuelto, con lo que he optado también por este servidor.
Instalar PiVPN
Así lo primero ha sido instalar PiVPN. Y esto es tan sencillo como ejecutar la siguiente línea en un terminal,
curl -L https://install.pivpn.io | bash
La instalación es tremendamente sencilla, no tienes mas que seguir los pasos que te indica. Si tienes dudas, puedes recurrir a alguno de los cientos de sitios, donde te explican como hacerlo. En cuanto a las opciones a elegir,
eth0
owlan0
dependiendo de la conexión de tu Raspberry- en cuanto a protocolo elige
UDP
- el puerto deja el que viene por defecto
1194
- clave de cifrado de 2048 bit
- conexión por
DNS
en el caso de que tengas una IP dinámica (como es mi caso, y casi seguro el tuyo también)
Instalar Pi Hole
La instalación de Pi Hole es tan sencilla como la de PiVPN o mas. Igual que en el caso anterior, abre un terminal y ejecuta,
curl -sSL https://install.pi-hole.net | bash
Cambiar el resolutor de OpenVPN
Ejecuta ifconfig
para obtener la IP de tu interfaz tun0
. Así en mi caso tiene el siguiente aspecto,
tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
inet 10.8.0.1 netmask 255.255.255.0 destination 10.8.0.1
...
Lo importante el 10.8.0.1
. Ahora tienes que editar el archivo /etc/openvpn/server.conf
. Añadir la línea
push "dhcp-option DNS 10.8.0.1"
y comentar el resto, si es que existen,
#push "dhcp-option DNS 8.8.8.8"
#push "dhcp-option DNS 8.8.4.4"
Hecho esto, reinicia la VPN,
sudo systemctl restart openvpn
Utilizar Nginx como servidor web
Para sustituir lighttpd
por Nginx
. ejecuta las siguientes instrucciones en un terminal,
sudo systemctl stop lighttpd
sudo systemctl disable lighttpd
sudo apt install nginx php7.0-fpm php7.0-zip apache2-utils
sudo systemctl enable php7.0-fpm
sudo systemctl enable nginx
Editar /etc/nginx/sites-available/default
y sustituir por lo siguiente,
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name tusitio.duckdns.org;
autoindex off;
index pihole/index.php index.php index.html index.htm;
location / {
expires max;
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_param FQDN true;
auth_basic "Restricted"; #For Basic Auth
auth_basic_user_file /etc/nginx/.htpasswd; #For Basic Auth
}
location /*.js {
index pihole/index.js;
auth_basic "Restricted"; #For Basic Auth
auth_basic_user_file /etc/nginx/.htpasswd; #For Basic Auth
}
location /admin {
root /var/www/html;
index index.php index.html index.htm;
auth_basic "Restricted"; #For Basic Auth
auth_basic_user_file /etc/nginx/.htpasswd; #For Basic Auth
}
location ~ /\.ht {
deny all;
}
}
Una vez realizadas las modificaciones indicadas, comprueba que todo es correcto. Para ello, solo tienes que ejecutar la siguiente línea en un terminal,
nginx -t
Crea un nombre de usuario para la autenticación. Para ello, ejecuta la siguiente instrucción,
htpasswd -c /etc/nginx/.htpasswd exampleuser
Cambia los permisos y propietarios de los diferentes directorios,
sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;
Y por último inicia los servicios
sudo systemctl start php7.0-fpm
sudo systemctl start nginx
Atento al nombre del servidor tusitio.duckdns.org
. Esto lo tendrás que modificar, ya sea que tengas un IP dinámica, o IP fija y hayas contratado un dominio.
Configurando IP Dinámica
En el caso de que tengas una IP dinámica, que por otro lado, es lo mas normal, necesitas realizar algunos pasos adicionales. Siguiendo las indicaciones que te doy en el artículo sobre IP dinámica del tutorial sobre la tu nube en la Raspberry Pi, podrás acceder desde cualquier parte del mundo a tu pequeño dispositivo. Así, no solo acceder al contenido de la Rasbperry, si no que también podrás hacer uso de la VPN y por supuesto de Pi Hole.
Configurando Let’s Encrypt
Un paso fundamental para tener una mayor seguridad es cifrar las comunicaciones. Para ello la solución se encuentra en utilizar Let’s Encrypt. En este caso, tenerlo en funcionamiento es terriblemente sencillo. Tan solo tienes que seguir las indicaciones que te doy en el tutorial sobre primeros pasos con la Rasbperry Pi en particular en el capítulo sobre cifrar las comunicaciones con tu Rasbperry Pi.
últimos pasos
Para concluir, es necesario que configures la VPN en los diferentes equipos que quieras utilizarla. Yo en particular la tengo disponible tanto para el móvil como para el portátil. Para ello, tan solo tienes que generar los correspondientes archivos de configuración. Para ello, en tu Rasbperry, tan solo tienes que ejecutar la siguiente instrucción,
pivpn -a
Luego, el archivo de configuración, tan solo lo tienes que llevar a tu dispositivo e importarlo.
Así, por ejemplo, en mi caso estoy utilizando OpenVPN Connect para realizar la conexión, y te puedo asegurar que va fantásticamente bien.
Más información,