Configuración de la tolerancia a fallas de Pi-Hole junto con Mikrotik

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

  1. 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.





  2. 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. , .





:





  1. DNS





  2. Pi-Hole VRRP 100 90 Pi-Hole





  3. Pi-Hole , DNS Pi-Hole 110





  4. 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. .





, , , , , . , , - .





, , .








All Articles