Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • Changelogs
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    RouterOS
    Как настроить Mikrotik для Pi-Hole с автоматическим переключением при сбое

    Как настроить Mikrotik для Pi-Hole с автоматическим переключением при сбое

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Как настроить Mikrotik для Pi-Hole с автоматическим переключением при сбое, RouterOS
     
    erkexzcx
    Guest
    #1
    0
    25.04.2024 08:13:00
    Проблема  
    У вас есть роутер Mikrotik и домашний сервер. Ваша семья ожидает 100% доступности интернета, но вы хотите пойти дальше и поставить Pi-Hole или что-то подобное (я предпочитаю Blocky) на домашний сервер. Однако этот сервер сломался, и DNS больше не работает для всех дома! Либо вы хотели его перезагрузить, либо обновить что-то, и Pi-Hole стал недоступен. Идея с вторым сервером для Pi-Hole есть, но это уже перебор... Естественно, вы выбираете один из двух вариантов:  

    - Настроить DHCP-сервер так, чтобы он выдавал DHCP-лейсинг с DNS-адресом, указывающим напрямую на Pi-Hole.  
    - Настроить DNS-сервер Mikrotik на Pi-Hole и DHCP-сервер так, чтобы он выдавал DNS-адрес, указывающий на сам Mikrotik.  

    Второй вариант несколько «так себе» — вы используете два DNS-перенаправляющих сервера, и запросы DNS будут работать медленнее, чем если бы был один сервер. В любом случае, если Pi-Hole упадет — будет (хотя бы частичное) недоступность!  

    Решение  
    Благодаря скриптовым возможностям Mikrotik и свободе настройки можно реализовать автоматическое переключение на резерв, при этом всё равно используя Pi-Hole напрямую.  

    Вот идея:  
    - Mikrotik «порт-форвардит» DNS-запросы к Pi-Hole, если он работает.  
    - Если Pi-Hole не работает — Mikrotik самостоятельно обрабатывает DNS-запросы (например, через 1.1.1.2,1.0.0.2).  

    Это позволяет совмещать лучшее из двух миров: использовать Pi-Hole, если он доступен, или временно DNS-сервер Mikrotik, пока Pi-Hole не запустится.  

    Инструкция  
    Для справки: в приведённых ниже шагах я использую «Blocky», поэтому в комментариях есть это ключевое слово.  

    1. Настройка роутера  
    Сначала укажите каждому устройству в сети использовать роутер как DNS-сервер. Затем отключите DNS-сервер Mikrotik:  

    /ip/dns/set allow-remote-requests=no  

    Теперь создайте NAT-правила, чтобы трафик tcp/udp на порт 53 направлялся на сервер с pi-hole (у меня это 192.168.72.10):  

    /ip firewall nat add action=dst-nat chain=dstnat comment=Blocky dst-port=53 protocol=tcp src-address-list=LANs dst-address-list=LANs to-addresses=192.168.72.10  
    /ip firewall nat add action=dst-nat chain=dstnat comment=Blocky dst-port=53 protocol=udp src-address-list=LANs dst-address-list=LANs to-addresses=192.168.72.10  

    Проверьте, работает ли DNS:  

    $ nslookup mikrotik.com 192.168.72.1  
    Server:         192.168.72.1  
    Address:        192.168.72.1#53  

    Non-authoritative answer:  
    ...  

    Если не работает (таймаут или отказ) — скорее всего, у вас нет правил hairpin NAT. Вот что у меня:  

    /ip firewall mangle add action=mark-connection chain=prerouting comment="Отметить соединения для hairpin NAT - LAN IP" dst-address-list=LANs new-connection-mark="Hairpin NAT" passthrough=yes src-address-list=LANs  
    /ip firewall nat add action=masquerade chain=srcnat comment="Hairpin NAT" connection-mark="Hairpin NAT"  

    Попробуйте снова — теперь должно работать. При попытке резолва через DNS роутера вы на самом деле используете Pi-Hole, а не сам роутер. Если всё ок, включите обратно DNS-сервер на роутере:  

    /ip/dns/set allow-remote-requests=yes  

    И переходите к следующему разделу…  

    2. Добавление запланированного скрипта  
    Добавьте этот скрипт в /system/scheduler (через GUI). Отредактируйте его при необходимости:  

    # Указать фильтры для NAT-правил  
    :local tcpRuleId [/ip firewall nat find comment="Blocky" protocol="tcp"]
    :local udpRuleId [/ip firewall nat find comment="Blocky" protocol="udp"]

    # Найти IP Blocky из NAT-правила  
    :local toAddresses [/ip firewall nat get $tcpRuleId to-addresses]

    # Указать домен для проверки  
    :local queryDomain "www.google.com"  

    :if ([/ip firewall nat get $tcpRuleId disabled] = false) do={
       :do {  
           :resolve $queryDomain server=$toAddresses  
       } on-error={  
           /ip firewall nat set $tcpRuleId disabled=yes  
           /ip firewall nat set $udpRuleId disabled=yes  
       }  
    } else={  
       :do {  
           :resolve $queryDomain server=$toAddresses  
           /ip firewall nat set $tcpRuleId disabled=no  
           /ip firewall nat set $udpRuleId disabled=no  
       } on-error={}  
    }  

    Обратите внимание на логику — если NAT-правила отключены, используется DNS-сервер Mikrotik. Если NAT-правила включены — трафик перенаправляется на Pi-Hole.  

    Запланируйте запуск скрипта каждые 10-30 секунд и забудьте о жалобах, когда Pi-Hole временно не работает.
     
     
     
    gasbie22
    Guest
    #2
    0
    24.05.2024 17:34:00
    Эта конфигурация автоматически переключится обратно на pi-hole при запуске, или мне нужно вручную менять DNS обратно на pihole?
     
     
     
    IV0nka
    Guest
    #3
    0
    28.09.2024 13:45:00
    Конфигурация автоматически переключается обратно на pihole, когда устройство с pihole способно разрешить тестовый домен. @erkexzcx Ты забыл упомянуть недостатки этого решения, например, все устройства будут отображаться на pihole как mikrotik, потому что используемое маскирование подставляет IP-адрес роутера. Из-за этого не получится создавать отдельную статистику для конкретного IP, не подготовить отдельные фильтры и так далее.
     
     
     
    ept
    Guest
    #4
    0
    26.02.2025 09:42:00
    И как вообще можно одновременно достичь того, что описано в первом посте, и при этом не столкнуться с проблемами, о которых говоришь ты? Наконец-то запустил свой старый сервер pi-hole на новом роутере, но кажется, я прямо в той же самой дилемме, которую ты описал — всё отображается как трафик роутера. Спасибо.
     
     
     
    rextended
    Guest
    #5
    0
    26.02.2025 09:59:00
    Это просто. На DHCP-сервере указывайте в качестве DNS-сервера только PiHole. На файрволе блокируйте любой другой DNS / DoT / (и DoH, если сможете...). Если по netwatch (или другим методам) PiHole перестанет работать, перенаправляйте все DNS-запросы к PiHole на сам RouterBOARD и используйте внутренний DNS-сервис RouterBOARD. Однако, скорее всего, блокировка не сработает, и PiHole не будет использоваться, если DoH не заблокировать. Новые устройства автоматически используют DoH, и стандартный DNS, включая PiHole, не применяются...
     
     
     
    zzing123
    Guest
    #6
    0
    04.03.2025 13:40:00
    Почему бы просто не использовать anycast для DNS? Настроить ещё 2 общих IP-адреса на DNS-серверах, а затем с помощью OSPF направлять трафик к тому, который самый «дешёвый» по маршруту. Если он упадёт, OSPF просто направит к другому.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры