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