En el último artículo, implementamos un servidor de DoH doméstico utilizando Pi-Hole, que no solo filtró una gran cantidad de anuncios, sino que también encapsuló nuestras solicitudes de DNS en HTTPS, lo que las sacó del campo de las solicitudes de filtrado por parte del operador de telecomunicaciones. .
Esta solución es ideal para todos, pero tiene una salvedad. Si de repente nos quedamos sin dinero en la cuenta con el operador de telecomunicaciones o por algún otro motivo ha desaparecido el canal de comunicación con el mundo exterior, ni siquiera podremos reponer la cuenta para restaurar el servicio, porque el DNS no funcionará. . O, por ejemplo, si nuestro Pi-Hole deja de funcionar por algún motivo, parece que toda la red está funcionando, y Google responde, y hasta que registres otro servidor DNS, no habrá felicidad. Y si en este momento todavía está ocupado con otra cosa y no puede comenzar la recuperación de inmediato, los miembros de la familia están indignados, estropean la existencia alegre con sus quejas, e incluso los gatos, sintiendo el nerviosismo general, tienden a cagarse en sus pantuflas.
Molestar a los gatos es lo último, por lo que en este artículo describiré cómo puede implementar el cambio automático de usar Pi-Hole a usar el DNS del operador (como, de hecho, cualquier otro) en caso de problemas en Pi-Hole.
TL; DR
Configuramos la conmutación automática del servicio DNS entre Pi-Hole y Mikrotik usando el protocolo VRRP en la implementación del demonio keepalived.
No se revela ningún conocimiento mágico, una simple instrucción paso a paso para aquellos que no quieren comprender todas las complejidades en sí mismos.
Que necesitas para esto
Implementación de la solución Pi-Hole del artículo anterior. Está claro que la solución descrita puede usarse para tolerancia a fallas, en principio, cualquier cosa, pero en este caso particular, nos enfocaremos en esta implementación en particular. La solución básica de Linux es Ubuntu.
Mikrotik . , OpenWRT, EdgeRouter, - PC, . VRRP - , , , . , VRRP - Pi-Hole Pi-Hole DNS-.
IPv4- Pi-Hole : 192.168.1.10 .
IPv4- : 192.168.1.1 bridge .
IPv4- DNS: 192.168.1.9
Linux root (.. sudo -i).
" W", , .
, VRRP Virtual Router Redundancy Protocol NHRP (Next-Hop Resolution Protocol). - , , , , . , , ISO/OSI IP-, , VRRP-, . , , , , VRRP ( ). , , , , Cisco GLBP, , ARP-. GLBP CARP.
VRRP , , - 224.0.0.18, . - . - , , , , IP . , ( ), . - IP-, .
. Cisco , , Enhanced Object Tracking. , .
:
DNS
Pi-Hole VRRP 100 90 Pi-Hole
Pi-Hole , DNS Pi-Hole 110
DHCP IP- DNS.
1. DNS Mikrotik
, , DNS . DNS- - , . DNS DHCP, Winbox IP - DNS Servers DNS- .
2. VRRP Mikrotik
VRRP Bridge . Winbox, :
/interface vrrp add interface=bridge name=vrrp-dns version=2 vrid=10
/ip address add address=192.168.1.9/24 interface=vrrp-dns network=192.168.1.0
vrrp-dns - ( , ), vrid - ID , 1-255, . bridge IPv4- .
192.168.1.9 - , .
3. VRRP Pi-Hole
keepalived:
apt install keepalived
/etc/keepalived/keepalived.conf:
! Configuration File for keepalived
vrrp_script check_dns {
script "/etc/keepalived/check_dns.sh"
interval 5 # every 5 seconds
weight 20 # add 20 points if OK
timeout 5 #
rise 2 # avoid flapping
fall 2 # avoid flapping
}
vrrp_instance VI_1 {
state MASTER
interface ens160
virtual_router_id 10
priority 90
advert_int 1
virtual_ipaddress {
192.168.1.9/24
}
track_script {
check_dns
}
}
, Pi-Hole - ens160, ( , , ifconfig).
DNS /etc/keepalived/check_dns.sh:
#!/bin/bash
host -s -4 amazon.com 127.0.0.1 > /dev/null 2>&1
:
chmod +x /etc/keepalived/check_dns.sh
DNS . amazon.com. , TTL - 1 , Pi-Hole , , . , - 0 error code, keepalived , , . error code - Mikrotik.
:
systemctl restart keepalived
. Mikrotik , :
vrrp-dns now BACKUP, got higher priority 110 from 192.168.1.10
, 192.168.1.9 Pi-Hole, - pi.hole:
nslookup pi.hole 192.168.1.9
Server: 192.168.1.9
Address: 192.168.1.9#53
Name: pi.hole
Address: 192.168.1.10
, Pi-Hole, IP - .
4. DHCP Mikrotik
DHCP- Mikrotik DNS. WinBox - . IP - Networks, , Pi-Hole DNS Servers Pi-Hole 192.168.1.10 192.168.1.9.
, , DNS, , (, nslookup pi.hole - ). .
- DNS- , Mikrotik. .
, , , , , . , , - .
, , .