Some of the links shared in this post are affiliate links. If you click on the link and make a purchase, we will receive an affiliate commission at no additional cost to you.
Pi-hole es un bloqueador de anuncios para toda la red que actúa como un sumidero DNS para bloquear los anuncios y el seguimiento en todos los dispositivos de una red. Pi-hole funciona a nivel de DNS y puede instalarse en un pequeño ordenador como la Raspberry Pi u otro servidor Linux.
El problema: falsos positivos con otros miembros de la familia
Si utilizas las listas de bloqueo oficiales, sólo debería haber unos pocos falsos positivos. Sin embargo, si utilizas más listas de bloqueo para Pihole, puede ocurrir rápidamente que algunos sitios web no funcionen correctamente o no sean accesibles en absoluto. Como administrador de Pihole, sólo tienes que poner el dominio en la lista blanca; las demás personas de la casa que utilizan Pihole tienen que esperar a que el administrador lo haga por ellas. Afortunadamente, existe una solución para esto:
Lista blanca simple de Pihole
Instalar Pihole Simple Whitelist
sudo su
cd /var/www/html/
mkdir whitelist
cd whitelist
curl -O https://raw.githubusercontent.com/zigzag1001/pihole-Simple-Whitelist/main/whitelist-add.php \
-O https://raw.githubusercontent.com/zigzag1001/pihole-Simple-Whitelist/main/style.css \
-O https://raw.githubusercontent.com/zigzag1001/pihole-Simple-Whitelist/main/index.html
Determina y copia el valor hash de tu contraseña de Pihole Webui:
cat /etc/pihole/setupVars.conf | grep WEBPASSWORD
Establece $auth en la línea 16 al hash de la contraseña.
nano whitelist-add.php
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_POST['action']) && $_POST['action'] === 'list') {
// List whitelisted domains
$command = "sudo pihole -w -l | awk '{print $1, $2}'";
$output = [];
exec("$command 2>&1", $output);
echo "<pre>" . implode("\n", $output) . "</pre>";
} elseif (isset($_POST['action']) && $_POST['action'] === 'disable') {
// https://www.crosstalksolutions.com/the-worlds-greatest-pi-hole-and-unbound-tutorial-2023/
$XMin = 5; // Minutes to disable blocking
$XSec = $XMin * 60;
$auth = "YOUR_PASSWORD_HASH"; // `cat /etc/pihole/setupVars.conf | grep WEBPASSWORD`
$command = "curl -s \"http://localhost/admin/api.php?disable={$XSec}&auth={$auth}\"";
$output = [];
$returnVar = 0;
exec("$command 2>&1", $output, $returnVar);
if ($returnVar === 0) {
echo "Disabled blocking for $XMin minutes. ". implode(' ', $output);
$t=time();
$d=date("M-d H:i e",$t);
error_log("Disabled by {$_SERVER['REMOTE_ADDR']} - {$d}\n", 3, "/var/log/pihole_disabled.log");
} else {
echo "Failed. Blocking not disabled. Output: " . implode(' ', $output);
}
} else {
// Whitelist a domain
$t=time();
$d=date("M-d H:i e",$t);
$domain = escapeshellarg($_POST['domain']);
$regex_domain = "/[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z]{2,6}/";
$is_match = preg_match($regex_domain, $domain);
if ($is_match == 1) {
$command = "sudo pihole -w $domain --comment \"{$_SERVER['REMOTE_ADDR']} - {$d}\"";
$output = [];
$returnVar = 0;
exec("$command 2>&1", $output, $returnVar);
if ($returnVar === 0) {
echo "Domain $domain has been successfully whitelisted.";
} else {
echo "Failed to whitelist domain $domain. Output: " . implode(' ', $output);
}
} else {
echo "Domain input is wrong.";
}
}
}
?>
Guardar: CTRL + O y Cerrar: CTRL + X
Ahora puedes acceder a http://pi.hole/whitelist/ en tu navegador.
Pihole: Simple Whitelist es un proyecto de zigzag1001 en Github.