Настройка 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 с другой машины в той же сети - это поможет локализовать неисправность.