Comments 19
Спасибо огромное, очень интересно. Я для себя решил проблему high availability с помощью дополнительных инстансов pi-hole у родителей. Они доступны через VPN, соответственно, от DNS не зависят никак.
Я может чего-то не понимаю, но в чём проблема отдать в DHCP два адреса - Pi-Hole и провайдерский? Пока жив Pi-Hole будет использоваться он, иначе - провайдерский. Если не работает DoH (отключили интернет), то в настройках ресолвера на пишке прописываем вторым провайдерский DNS, запросы идут на него.
Чтобы поведение было предсказуемым — лучше управлять им самостоятельно.
аналогично переключать на другой днс можно встроенными средствами. например таким скриптом в шедулере
:local mydns [/ip dns get servers]
:do {
/resolve ya.ru server=10.10.5.110
:if ( $mydns ~ "8.8.8.8" ) do={
/ip dns set servers=10.10.5.110
:log info dns_come_back_check
}
} on-error={
:log info error_dns_check
/ip dns set servers=8.8.8.8
/ip dns cache flush
}
Опять же, подойдет и OpenWRT
Если у вас OpenWRT, то для блокировки рекламы можно пользоваться adblock
из opkg, и точек отказа сразу станет меньше
Но ночью получил в логе микротика
vrrp-dns now MASTER, master down timer
и днс перестал резолвиться
Хотя всё было онлайн и живое.
Есть предположения, что могло пойти не так?
Ок, я разобрался почему сам микротик не резолвил когда отъехал мастер с малинки, но почему он отъехал, пока не разобрался.
На микротике в фаерволе надо было разрешить траффик с vrrp-dns интерфейса
Ну если всё было реализовано по статье - то, возможно, что-то случилось с резолвером. Можно поиграть с rise - fall, чтобы таймаут стал побольше.
DNS на основном IP майкротика работал.
добавил udp/53 для входящих/выходящих для нового dns адреса.
Тоже столкнулся с тем, что произошло:
vrrp-dns now MASTER, master down timer
после расследования до 4 утра выяснил, что глюк в keepalived, который предоставляется в репо (в моем случае raspbian buster). Глюк заключается в том, что спустя рандомное время keepalived перестает выполнять скрипт проверки доступности домена (check_dns.sh) ну и на микрот улетает инфа что я не резолвлю, давай ты мастером будь.
Был пофикшен в рамках https://github.com/acassen/keepalived/issues/1364
Лечение:
удаляем тот keepalived что мы установили и делаем:
sudo apt update
sudo apt install snapd
sudo snap install core
sudo snap install keepalived --classic
Ребутаемся и радуемся жизни :)
Буду очень признателен если дали бы инструкцию как это реализовать на synology NAS
На данный момент у меня установлен Pi-Hole+CloudFlare в Dockere, как прикрутить keepalived
Настраиваем отказоустойчивость Pi-Hole в связке с Mikrotik