Configurando a tolerância a falhas Pi-Hole em conjunto com Mikrotik

No último artigo, implementamos um servidor DoH doméstico usando Pi-Hole, que não apenas filtrou um grande número de anúncios, mas também encapsulou nossas solicitações de DNS em HTTPS, o que as tirou do campo de solicitações de filtragem da operadora de telecomunicações .





Essa solução é ótima para todos, mas tem uma ressalva. Se de repente ficarmos sem dinheiro na conta com a operadora de telecomunicações ou por algum outro motivo o canal de comunicação com o mundo exterior sumir, não conseguiremos nem repor a conta para restaurar o serviço, pois o DNS não funcionará . Ou, por exemplo, se nosso Pi-Hole parou de funcionar por algum motivo, parece que toda a rede está funcionando, e o Google responde, e até que você registre outro servidor DNS, não haverá felicidade. E se neste momento você ainda está ocupado com outra coisa e não pode começar a se recuperar imediatamente - os familiares ficam indignados, estragam a alegre existência com suas reclamações, e até os gatos, sentindo um nervosismo generalizado, tendem a cagar nas suas pantufas.





Incomodar os gatos é a última coisa, portanto, neste artigo, descreverei como você pode implementar a troca automática de usar Pi-Hole para usar operador (como, de fato, qualquer outro) DNS em caso de problemas no Pi-Hole.





TL; DR

Configuramos a comutação automática do serviço DNS entre Pi-Hole e Mikrotik usando o protocolo VRRP na implementação do daemon keepalived.

Nenhum know-how mágico é revelado, uma instrução simples passo a passo para aqueles que não querem entender todos os meandros sozinhos.





O que você precisa para isso

  1. Implementou a solução Pi-Hole do artigo anterior. É claro que a solução descrita pode ser usada para tolerância a falhas, em princípio, qualquer coisa, mas neste caso particular, vamos nos concentrar nesta implementação particular. A solução básica do Linux é o 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