Вопрос или проблема
Я использую unbound на Raspberry Pi. Я попробовал dnsmasq, чтобы выяснить, в чем проблема, но он тоже не работал. Я вижу с помощью Wireshark, что мой запрос идет от моего компьютера к Raspberry, но ничего не достигает сервера. Я запустил tcpdump на сервере и отслеживаю журнал unbound с уровнем детализации:5, но unbound не знает о запросах, которые приходят через локальную сеть, однако когда я выполняю dig mollevi.test @localhost на сервере, ответ правильный. Я попробовал это, используя мой Tailscale VPN, временно отключил все межсетевые экраны в локальной сети и пробовал как клиенты Linux, так и Windows (не ВМ), как в локальной сети, так и через мобильные данные (которые шли через Tailscale). Я мог пинговать порт 80 в каждом направлении с каждой упомянутой настройкой, но в журнале unbound ничего нет о запросах, которые не @localhost. Dnsmasq вел себя так же, но я хотел бы использовать unbound, если это возможно. Вот мои конфигурации:
server:
verbosity: 5
interface: 0.0.0.0
port: 53
do-ip4: yes
do-ip6: yes
do-udp: yes
do-tcp: yes
access-control: 192.168.1.0/24 allow
root-hints: "/etc/unbound/root.hints"
local-zone: "mollevi.test." static
local-data: "mollevi.test. 10800 IN A 127.0.0.1"
logfile: "/etc/unbound/unbound.log"
Когда я использовал Tailscale, я добавил access-control: 100.64.0.0/10 allow
sudo netstat -tuln | grep :53
tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN
udp 0 0 0.0.0.0:53 0.0.0.0:*
udp 0 0 0.0.0.0:5353 0.0.0.0:*
udp6 0 0 :::5353 :::*
Кратко:
- Windows/Linux -> netstat/dig -> wireshark(клиент->сервер) ☑ -> Raspberry PI -> tcpdump☑ -> unbound.log☒ -> wireshark(сервер->клиент) ☒ -> истекло время ожидания запроса
- Raspberry -> dig mollevi.test @lan.ip.addr.ess -> правильный ответ
Спасибо за любые советы.
Вы разрешили входящий трафик с порта 53 с помощью IPTables и/или UFW?
sudo iptables -I INPUT -p udp --dport 53 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 53 -j ACCEPT
# если UFW включён на вашем Raspberry
sudo ufw allow in 53
sudo ufw allow out 53
Ответ или решение
Проблема с DNS-серверами и отсутствие запрашиваемых клиентских запросов
Вы столкнулись с проблемой, когда ваш DNS-сервер, работающий на базе unbound на Raspberry Pi, не принимает клиентские запросы. Давайте рассмотрим возможные причины этой ситуации и предложим способы их решения.
Подробный анализ проблемы
-
Конфигурация unbound
Ваша конфигурация unbound выглядит в целом корректно, однако стоит обратить внимание на параметры, относящиеся к доступу и интерфейсам. В случае, если сервер не получает запросы от клиентов, возможная причина может заключаться в настройках контроля доступа (access-control). Вы уже добавили правило для Tailscale (100.64.0.0/10), но, возможно, потребуется убедиться, что локальная сеть также правильно настроена:
access-control: 192.168.1.0/24 allow
Убедитесь, что IP-адреса клиентов, инициирующих запросы, действительно попадают в диапазон 192.168.1.0/24.
-
Проверка журналов и вывода tcpdump
Вы упомянули, что unbound не фиксирует никаких запросов. Это может указывать на то, что пакеты не достигают сервера. Использование tcpdump — хорошее решение. Убедитесь, что вы используете правильные параметры для tcpdump, например:
sudo tcpdump -i any -n port 53
Это позволит вам отследить, доходят ли UDP-пакеты запросов до вашего устройства. Если вы видите запросы в tcpdump, но они не отображаются в журнале unbound, возможно, стоит увеличить уровень детализации в конфигурации:
verbosity: 5
Если вывод tcpdump показывает, что запрашиваемые пакеты до сервера не доходят, вам стоит проверить сетевые настройки.
-
Настройки брандмауэра
Как вы уже упомянули, отключение брандмауэра (firewall) может привести к разрешению проблем с доступом. Убедитесь, что правила IPTables или UFW (если используется) правильно настроены для приема трафика на порту 53 (как TCP, так и UDP):
sudo iptables -I INPUT -p udp --dport 53 -j ACCEPT sudo iptables -I INPUT -p tcp --dport 53 -j ACCEPT
Если вы используете UFW, выполните команды:
sudo ufw allow in 53 sudo ufw allow out 53
Проверьте состояние брандмауэра с помощью:
sudo ufw status verbose
-
Проблемы с сетью
Использование Wireshark на клиенте для анализа сетевого трафика будет полезно, чтобы убедиться, что запрос действительно отправляется. Проверьте настройки маршрутизатора — возможно, он блокирует трафик DNS.
-
Проверка работы сервера
Запросы от локального хоста (например, через
dig mollevi.test @localhost
) работают. Это подтверждает, что сервер unbound функционирует корректно. Однако стоит проверить также доступность DNS-сервера по его IP-адресу из вашей сети. Вы можете попробовать использовать telnet или другой инструмент для тестирования подключения к порту 53:telnet <lan.ip.addr> 53
Заключение
Убедитесь, что конфигурация вашего DNS-сервера (unbound) корректно настроена и что трафик не блокируется на уровне сетевых устройств или брандмауэры. Проверьте все сетевые настройки и, если возможно, протестируйте на другом оборудовании или с другим клиентом для устранения возможных переменных. Такой комплексный подход должен помочь выявить и решить проблему.
Если после выполнения всех указанных шагов проблема останется нерешенной, возможно, стоит обратиться к сообществу или на специализированные форумы по dns, где можно получить помощь от других пользователей, столкнувшихся с похожими ситуациями.