Configuration de la tolérance aux pannes Pi-Hole avec Mikrotik

Dans le dernier article, nous avons implémenté un serveur DoH domestique utilisant Pi-Hole, qui non seulement filtrait un grand nombre d'annonces, mais encapsulait également nos requêtes DNS en HTTPS, ce qui les sortait du champ du filtrage des requêtes par l'opérateur télécom. .





Cette solution est idéale pour tout le monde, mais elle comporte une mise en garde. Si soudainement nous manquons d'argent sur le compte auprès de l'opérateur télécom ou pour une autre raison, le canal de communication vers le monde extérieur a disparu, nous ne pourrons même pas reconstituer le compte pour restaurer le service, car le DNS ne fonctionnera pas. . Ou, par exemple, si notre Pi-Hole a cessé de fonctionner pour une raison quelconque, il semble que tout le réseau fonctionne, et Google répond, et tant que vous n'aurez pas enregistré un autre serveur DNS, il n'y aura pas de bonheur. Et si en ce moment vous êtes encore occupé avec autre chose et que vous ne pouvez pas commencer à vous rétablir immédiatement - les membres de la famille sont indignés, gâchent la joie de vivre avec leurs plaintes, et même les chats, ressentant une nervosité générale, ont tendance à chier dans vos pantoufles.





Bouleverser les chats est la dernière chose, donc dans cet article, je décrirai comment vous pouvez implémenter le passage automatique de l'utilisation de Pi-Hole à l'utilisation de l'opérateur DNS (comme, en fait, tout autre) DNS en cas de problèmes sur Pi-Hole.





TL; DR

Nous configurons la commutation automatique du service DNS entre Pi-Hole et Mikrotik à l'aide du protocole VRRP dans l'implémentation du démon keepalived.

Aucun savoir-faire magique n'est révélé, une simple instruction étape par étape pour ceux qui ne veulent pas comprendre toutes les subtilités eux-mêmes.





De quoi avez-vous besoin pour cela

  1. Implémentation de la solution Pi-Hole de l'article précédent. Il est clair que la solution décrite peut être utilisée pour la tolérance aux pannes, en principe n'importe quoi, mais dans ce cas particulier, nous nous concentrerons sur cette implémentation particulière. La solution Linux de base est 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