Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • 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 выступает как DNS-слейв.

    Mikrotik выступает как DNS-слейв.

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Mikrotik выступает как DNS-слейв., RouterOS
     
    eset
    Guest
    #1
    0
    23.12.2017 21:52:00
    Сетевая структура выглядит так:  
    Локация А имеет внутренний DNS-сервер (виртуальный сервер, который работает в режиме кеша и обслуживает внутренние зоны с локальными именами).  
    Все клиенты в этой локации настроены так, чтобы использовать этот внутренний DNS-сервер, поэтому они могут разрешать локальные имена без знания IP-адресов — что вполне логично.  

    Недавно я добавил новую локацию со связью site-to-site VPN на Mikrotik и подключил Локацию В. В Локации В нет внутренних серверов, но я хотел бы, чтобы разрешение внутренних имён осуществлялось через DNS-сервер из Локации А.  

    Да, я знаю, что можно в /ip dhcp-server network прописать dns-server с IP DNS-сервера из Локации А, но если этот сервер какое-то время будет недоступен, клиенты из Локации В не смогут обращаться к локальным именам и придется использовать IP напрямую.  

    Так вот, возможно ли настроить Mikrotik в Локации В как DNS-слейв, чтобы у него были все зоны с DNS-сервера из Локации А?
     
     
     
    pe1chl
    Guest
    #2
    0
    17.05.2018 07:48:00
    Ну, я бы считал случайные ответы NXDOMAIN по локальным именам довольно серьёзной проблемой (ведь это происходит постоянно, а не только когда что-то не работает!), но, конечно, решать вам самим. Всё зависит от того, для чего нужны эти локальные имена.
     
     
     
    eset
    Guest
    #3
    0
    16.05.2018 07:58:00
    Серьёзно? Тогда зачем мы ставим второй и третий сервер в /ip dns? Если мы указываем два сервера в роутере на точке B — один из точки A, а второй может быть любым сервером, например, 1.1.1.1, то если сервер в точке A отключится, пользователи в точке B всё равно смогут пользоваться интернетом благодаря разрешению имён через 1.1.1.1.
     
     
     
    pe1chl
    Guest
    #4
    0
    16.05.2018 09:07:00
    Обратите внимание, что эта настройка не гарантирует правильную работу. DNS в MikroTik по сути — это кеширующий резолвер с возможностью добавления нескольких статических имен для локального использования. Он не может выполнить передачу зоны с вашего локального DNS, если только не заморочиться с помощью скриптов и подходящего формата DNS-зоны. (например, выполнить экспорт на вашем локальном DNS-сервере, конвертировать это в команды MikroTik, потом загрузить и выполнить их на роутере). Но кеширующий резолвер с несколькими DNS-серверами уровня выше, как в MikroTik, обычно не гарантирует использование этих серверов строго в порядке, в каком они указаны в конфиге.

    То есть он не посылает все запросы на первый сервер, а если нет ответа — на второй, и так далее, пока не получит ответ или не закончатся серверы. Такая схема была бы неэффективной, если первый сервер не отвечает, потому что тогда все запросы будут сначала долго ждать таймаута, прежде чем перейти ко второму серверу, и DNS станет очень медленным. Поэтому большинство резолверов поступают так: при возникновении таймаута они переходят к следующему серверу и дальше уже отправляют все запросы сначала этому серверу, пока не случится очередной таймаут. Затем переключаются на третий сервер и так далее по кругу: когда последний сервер не отвечает, активным становится первый.

    Вот в чём ваша проблема: таймауты в DNS — дело довольно частое. Это не из-за вашей инфраструктуры или провайдера, просто на некоторые запросы приходит никаких ответов. DNS-серверы домена могут быть мертвы, могут вообще исчезнуть — что угодно. Каждый раз, когда вы попадаете на такой плохо настроенный домен (а при обратных DNS-запросах это случается ещё чаще), резолвер переключается на следующий сервер. Обычно это не проблема, а даже плюс: нагрузка равномерно распределяется между серверами. Когда все ставят 8.8.8.8 первым сервером, а 8.8.4.4 — вторым (или 1.1.1.1 и 1.0.0.1), первый адрес получает гораздо больше нагрузки, чем второй. На самом деле же используются оба.

    А теперь проблема: если вы обращаетесь к своему локальному домену через 1.1.1.1 вместо локального DNS, резолвер вернёт NXDOMAIN (домен не найден), и MikroTik просто пересылает это пользователю. NXDOMAIN — это код ошибки, который НЕ заставит резолвер попробовать другой сервер. Таймауты — да, заставляют, а такой ответ — нет.

    Поэтому добавление внешнего резолвера в такую схему, как у вас (где есть внутренний DNS, обслуживающий локальные зоны, и одновременно резолвер для внешних имён), сделает систему ненадёжной или вовсе приведёт к её сбою.
     
     
     
    Sob
    Guest
    #5
    0
    16.05.2018 16:41:00
    На самом деле вам нужно сказать RouterOS отправлять запросы для конкретного(их) домена(ов) (ваших локальных) на DNS-сервер в локации А, при этом для всего остального использовать резолверы из /ip dns. Это базовая функция, которую поддерживает почти любое другое DNS-программное обеспечение, но, к сожалению, не резолвер в RouterOS. Сейчас единственное вроде бы рабочее, хоть и неидеальное решение для RouterOS — это старый трюк с L7, когда с помощью L7-матчера фильтруются UDP-пакеты клиентов с запросами и перенаправляются на нужный сервер через dstnat. Он обходит кэш на роутере, не работает с TCP-запросами, нельзя применять с IPv6, но если вы можете обойтись без этих функций — то решение пригодно.

    Эту функцию много раз просили на этом форуме за годы, но единственный ответ от сотрудника MikroTik, который я помню, был в духе «просто разверните сервер на bind», что смешно. Это огромный излишек, если резолвер в RouterOS в остальном устраивает пользователя, да и сама функция нужна в основном маленьким пользователям без нормальной DNS-инфраструктуры. Если уж ставить bind-сервер, то можно сразу настраивать нормальные зоны и все такое.

    Попробуйте отправить запрос на добавление функции в поддержку MikroTik. Я сам планирую это сделать, потому что это просто безумие — что этой функции до сих пор нет, но не знаю, когда найдется время (хочу сделать действительно убедительный запрос). Чем больше людей попросит — тем лучше.
     
     
     
    RoadkillX
    Guest
    #6
    0
    16.05.2018 20:55:00
    Итак, условные форвардеры, которые отправляют всё для домена X на IP X, а всё остальное — на публичный DNS, на Mikrotik сделать не получится. Но можно использовать ваш основной DNS как DNS-сервер в Mikrotik и в Bind разрешить Mikrotik запрашивать внутренние зоны, рекурсию и доступ к кешу. Тогда, если Bind уже знает A-запись для хоста, он не будет запрашивать её снова. Предполагаю, у вас есть внутренняя зона и внешняя с использованием views, так что увеличьте глобальный $ttl до нескольких дней — тогда, даже если Bind упадёт, Mikrotik дольше будет кешировать локальные DNS-записи. Но при этом вы не сможете запрашивать внешние хосты, если основной DNS выйдет из строя. #Bind named.conf.local — только для приватных зон, если у вас есть views:

    allow-query {mikrotik;};  
    allow-query-cache {mikrotik;};  
    allow-recursion {mikrotik;};

    Можно сделать и не очень аккуратно, но работающий способ: то, что выше, плюс добавить публичный DNS в Mikrotik. Если клиенты запросят внутренний IP, которого нет в кеше Mikrotik, он может пойти либо на внутренний DNS, либо на публичный — в зависимости от того, какой DNS выберется (round robin). Очевидно, что внутренние запросы к публичному DNS провалятся, но если запрос попадёт на внутренний, будет ответ и запись попадёт в кеш. В этом варианте, если основной сайт упадёт, разрешение имён всё равно будет работать, но некоторые запросы могут не пройти, и пользователям придётся, например, обновлять страницу, потому что произошёл сбой при получении внутренней DNS-записи с публичного DNS.
     
     
     
    eset
    Guest
    #7
    0
    16.05.2018 22:05:00
    В общем, ты описал то, о чём я спрашивал. Когда основной DNS (для внешних и внутренних зон) падает, второй будет обрабатывать запросы на новые имена, которых ещё нет в кэше, а остальные будут обслуживаться из кэша Mikrotik.
     
     
     
    Sob
    Guest
    #8
    0
    16.05.2018 22:14:00
    @RoadkillX: Проблема в том, что всё неправильно (ничего личного). Если сделать DNS-сервер в Локации А (который разрешает и приватные, и публичные имена) главным резолвером, то Локация B становится зависимой от Локации А. И дело не только в локальных именах, это всего лишь маленькая, второстепенная часть. Туннель ни в коем случае не должен падать, потому что если это случится, Локация B фактически останется без интернета, разве что с парой уже кэшированных записей, но многие сайты используют очень короткие TTL, так что этого надолго не хватит (естественно, у Локации B будет полноценный интернет, но без DNS толку мало). “Удачная лотерея DNS” с комбинированием внутренних и внешних резолверов почти неработоспособна. Выделенный DNS-резолвер в Локации B, хоть и более правильное решение, тоже имеет серьёзные недостатки. Во-первых, это перебор, нужна дополнительная машина. Любая подойдёт, даже старый RasPi или что-то подобное — с этим проблем нет. Но её нужно поддерживать в рабочем состоянии, потому что она становится единственной точкой отказа. Если уж ставить не один, а больше, то это уже двойной перебор, учитывая, что доступ только к локальным именам должен был быть всего лишь небольшим дополнением. Тут лучше использовать условные переадресации.
     
     
     
    RoadkillX
    Guest
    #9
    0
    17.05.2018 03:12:00
    Вижу, ты хорошо разбираешься в теории. Я знаю и минусы, и плюсы, и, насколько помню, я их оба объяснил. Если ты с этим смиришься — внедряй, если нет — ищи другой вариант. Я просто пытался предложить возможное решение, пусть и неидеальное. Но я бы никогда не стал запускать DHCP или DNS непосредственно на роутере.

    И, кажется, ты неправильно понял второй вариант: там речь о том, что на роутере в качестве DNS форвардеров используются Site A и публичные DNS. Если Site A упадёт, то интернет-резолвинг всё равно будет работать через публичные DNS, а локальное разрешение имён — из кеша. Но часть запросов будет падать, потому что роутер выбирает DNS серверы по кругу (round robin), и если он отправит запрос локального хоста на публичный DNS — тот вернёт NXDOMAIN, потому что не знает приватных записей.

    На самом деле звучит гораздо страшнее, чем есть на самом деле.
     
     
     
    Sob
    Guest
    #10
    0
    17.05.2018 11:38:00
    Вот то, что я называю «лотереей DNS», и нет, это вовсе не хорошо. Это рецепт постоянных жалоб на то, что всё случайно и работает через раз. Ещё есть вариант, хоть и немного отчаянный — превратить RouterOS в Локации B в бюджетный slave DNS. Если предположить, что нужны только базовые записи A/AAAA, то несложно написать внешний скрипт для AXFR с мастер-сервера, а потом либо «подгрузить» A-записи в роутер в Локации B через API, либо опубликовать их на каком-нибудь http(s) сервере (в Локации A или публичном — без разницы), откуда скрипт на роутере Локации B скачает их и обработает. Такой способ может оказаться довольно надёжным, без всяких неприятных побочных эффектов, если только не понадобятся какие-то «сложные» записи.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры