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