Mikrotik router: Является Рекурсивным DNS и использует несколько DNS серверов для апстрима, там же есть локальная зона для DDNS и там же есть свой аналог split dns
Adguard на одноплатнике: он использует в качестве апстрим сервера роутер, у него загружаются списки блокировки рекламы и могут быть локальные настройки под конкретного клиента
VRRP, который указвает на adguard если он работает и роутер в противном случае
Что это дало:
DNS всегда работает, но если одноплатник отвалился, то просто перестает блокироваться реклама
В микротике раньше не было встроенных списков рекламы, надо было грузить их скриптами, потом чистить, а это потребляло много ресурсов и мусорило статический список
Более сложные правила блокировки, которых нет в микротике, например, переключатель режима блокировки контента для каждого клиента
С чем сейчас столкнулся:
После апгрейда сетевой лабы перенес adguard на N4000, а потом и на R7 5825U, но 2 ядра adguard все равно не теряют пакеты, adguard не вытягивает
Вот график загрузки DNS интерфейса, видно, что роутер обрабатывает от 40 до 100 DNS запросов в секунду
Adguard вроде и не грузит на 100%, но перестает отвечать на запросы, что приводит к тому, что хомлаба начинает рассыпаться (reverse proxy помечает бэкенды как неживые, часто ловлю 503 ошибку), деплой тоже не с первой попытки проходит
Сейчас рассматриваю вариант добавления списка блокировок в сам Mikrotik, чтобы закрыть полностью задачу
Думал над тем, чтобы поднять 2 инстанса adguard и синхронизировать их между собой при помощи специальной тулзы.
Но сейчас уже склоняюсь к тому, чтобы просто поднять BIND для кэширования или другие варианты.
А что сообщество может предложить для решения данной проблемы?
Локально стоит pihole в lxc.
На впс в Финляндии стоит pihole в контейнере микротика.
Конфиги одинаковые, меняются очень редко и синзронизируются вручную файлом teleporter.
Клиенты ходят на них напрямую как обычный нешифрованый udp внутри туннеля через обычную l3 маршрутизацию.
Дополнительно на всех микротиках весь трафик из локальной сети udp 53 принудительно перекидывается на “ближайшую” pihole. Если она недоступна - Netwatch меняет в правилах адреса на 2ю pihole (и потом сам возвращает обратно при поднятии)
Суммарно в списках 2.2м адресов, в работе не лагает, только при старте несколько секунд висит интерфейс.
Не должно при такой загрузке лагать.
Могу предположить проблемы с апстрим днс или с файловой системой виртуалки (у меня задержка ответа поднималась до нескольких минут, когда один из ссд в raidz1 подыхал не полностью - из-за постоянных записей логов)
И опция Valiadate DNSSEC тоже ломала резолвинг (пока оно проверяло - у клиентов локально выходил таймаут запроса).
DNS TTL нигде не занижается?
Со стороны инета не ломятся (классическая проблема на микротиках)?
Ломятся все одинаково или какой-то конкретный IP?
В моем случае такое количество запросов из-за списков хостов на микротике (400-500).
Если в эти списки попадает хост, который не резолвится в апстриме или заблочен в pihole - микротик получает nxdomain и сразу пытается резолвить заново
У меня идеи закончились.
Для эксперимента можно погасить этот инстанс с adguard и на его Ip поднять виртуалку с чистой установкой adguard/pihole.
Нечто похожее поведение у меня было с librespeed в докере.
Образ с docker registry лагал и зависал на скоростях 100-300м
Образ с ghcr.io не напрягаясь выдает 10/10г.
Ради прикола решил поставить китайский Mikrotik CHR и он завелся в 2 клика.
Не скажу, что удовлетворяет требованиям по мониторингу, но работает отлично
Микротик хорош как раз тем, что вообще все отдает через snmp.
А что не отдает - можно выполнить скрипт микротика через snmpget, там под каждый скрипт создаётся свой oid.
Только нельзя работать с переменными - саппорт сказал, что “для безопасности”.
И скрипт должен отдавать string или int значение.
У меня так собирается информация по wifi клиентам, потом отдается в виде json строки. HA по snmp получает json значение и заполняет сенсоры нужными значениями