Настройка Knot DNS на Proxmox и интеграция с Mikrotik

    Вы развернули тестовый стенд с виртуальными машинами (Debian, Rocky, РЕД ОС) на гипервизоре Proxmox и установили Knot DNS в качестве локального DNS-сервера. Однако при попытке добавить его в качестве DNS-сервера на роутере Mikrotik запросы перестали обрабатываться, хотя при ручной настройке на самих ВМ всё работает. Разберём причины и пути решения.

    Почему Mikrotik не видит Knot DNS

    Основная причина - несовместимость сетевых настроек или фильтрация трафика. Mikrotik использует стандартный порт 53 для DNS, но Knot DNS может быть привязан только к localhost или к определённому интерфейсу. Дополнительно проверьте, не блокирует ли Proxmox или файрвол на ВМ входящие запросы.

    Проверка привязки Knot DNS к сетевым интерфейсам

    Убедитесь, что Knot DNS слушает на всех интерфейсах или на интерфейсе, который видит Mikrotik. По умолчанию в конфигурационном файле /etc/knot/knot.conf может быть указана привязка к 127.0.0.1. Измените параметр listen на 0.0.0.0@53 или на IP-адрес ВМ (например, 192.168.1.100@53). После правок перезапустите службу: systemctl restart knot.

    Настройка файрвола на виртуальной машине

    На ВМ с Knot DNS проверьте правила iptables или nftables. Разрешите входящий трафик на порт 53 (UDP и TCP) из сети Mikrotik. Пример для iptables: iptables -A INPUT -p udp --dport 53 -j ACCEPT и iptables -A INPUT -p tcp --dport 53 -j ACCEPT. Не забудьте сохранить правила.

    Настройка Mikrotik для работы с внешним DNS

    В Mikrotik укажите IP-адрес ВМ с Knot DNS в качестве первичного DNS-сервера. Зайдите в IP → DNS → Servers и добавьте адрес. Убедитесь, что не включена опция Allow Remote Requests без необходимости - она может конфликтовать с локальным кэшированием. Проверьте, что DNS-запросы доходят до сервера: используйте утилиту ping или telnet с портом 53 из терминала Mikrotik.

    Диагностика сетевой доступности между Mikrotik и Knot DNS

    Выполните из Mikrotik команду /tool dns-lookup google.com - если ответа нет, проверьте маршрутизацию. Убедитесь, что между роутером и ВМ нет дополнительных ACL или VLAN, которые блокируют порт 53. На самой ВМ запустите tcpdump -i any port 53 - вы увидите, приходят ли запросы от Mikrotik.

    Особенности работы Knot DNS в связке с Proxmox

    Proxmox использует мостовую сеть (vmbr0) для виртуальных машин. Убедитесь, что ВМ с Knot DNS находится в той же подсети, что и Mikrotik, или что настроены корректные статические маршруты. Если ВМ использует NAT, Mikrotik не сможет напрямую обратиться к ней - потребуется проброс порта на хосте Proxmox.

    Проверка конфигурации зон в Knot DNS

    Убедитесь, что в файле /etc/knot/knot.conf корректно прописаны зоны и разрешены рекурсивные запросы. Для локального использования добавьте секцию acl с разрешением для сети Mikrotik: acl { id allow_local; address 192.168.1.0/24; action allow; }. Затем примените ACL к зоне или к глобальным настройкам.

    Типичные ошибки и их исправление

    • Knot DNS не запускается после правок - проверьте синтаксис конфига командой knotc conf-check.
    • Порт 53 занят - возможно, systemd-resolved или другой DNS-сервер уже использует порт. Остановите конфликтующие службы.
    • Mikrotik кэширует старые записи - очистите кэш DNS в Mikrotik через меню IP → DNS → Cache → Flush.

    После всех настроек повторно проверьте запросы с Mikrotik. Если проблема сохраняется, используйте dig @IP_ВМ example.com с другой машины в той же сети - это поможет локализовать неисправность.

    Часто задаваемые вопросы