dnsmasq: Время ожидания запроса DNS истекло для машин в локальной сети

Вопрос или проблема

У меня есть виртуальная машина Vagrant, работающая на моем Mac с виртуальными хостами, которые я хочу сделать доступными для моей локальной сети. Я установил dnsmasq через brew и у меня есть следующее в файле /usr/local/etc/dnsmasq.conf:

address=/lv.lc/33.33.33.10

так что все URL, оканчивающиеся на *.lv.lc, будут разрешаться на 33.33.33.10.

Это частично работает: dig www.lv.lc

возвращает мне правильный ответ:

anton@anton-mbp:~$ dig www.lv.lc
; <<>> DiG 9.10.1 <<>> www.lv.lc
;; глобальные опции: +cmd
;; Получен ответ:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54075
;; флаги: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; СЕКЦИЯ ВОПРОСА:
;www.lv.lc.         IN  A

;; СЕКЦИЯ ОТВЕТА:
www.lv.lc.      0   IN  A   33.33.33.10

но когда я пытаюсь пропинговать этот хост,

anton@anton-mbp:~$ ping www.lv.lc
ping: не удается разрешить www.lv.lc: Неизвестный хост

Я добавил локальный IP-адрес машины, на которой работает dnsmasq, в DNS-серверы моего маршрутизатора, но другие клиенты в этой сети не получают от него ответа, даже когда я явно выполняю nslookup:

DNS-запрос истек.
    время ожидания составило 2 секунды.
Адрес: 192.168.1.38

Что я делаю не так?

Я глуп. dnsmasq не был настроен на прослушивание на 192.168.1.38, поэтому я добавил

listen-address=192.168.1.38
listen-address=127.0.0.1

в свой файл dnsmasq.conf, так что теперь это работает.

Ответ или решение

Чтобы решить проблему с таймаутом DNS-запросов для машин в локальной сети, вам необходимо убедиться, что dnsmasq настроен правильно и слушает на нужных адресах.

  1. Настройка конфигурации dnsmasq:
    В файле конфигурации dnsmasq.conf, который обычно находится по пути /usr/local/etc/dnsmasq.conf, убедитесь, что вы добавили следующие строки:

    address=/lv.lc/33.33.33.10
    listen-address=192.168.1.38
    listen-address=127.0.0.1

    Добавление listen-address=192.168.1.38 позволяет dnsmasq прослушивать запросы на локальном IP-адресе вашей машины, что делает ваш DNS-сервер доступным для других устройств в вашей сети.

  2. Проверка подключения:
    После внесения изменений в конфигурационный файл не забудьте перезапустить dnsmasq, чтобы изменения вступили в силу. Вы можете сделать это следующей командой:

    brew services restart dnsmasq
  3. Настройка DNS-серверов на маршрутизаторе:
    Убедитесь, что IP-адрес вашей машины, на которой работает dnsmasq (т.е. 192.168.1.38), настроен в качестве DNS-сервера на маршрутизаторе. Это позволит другим устройствам в вашей сети отправлять DNS-запросы на ваш dnsmasq.

  4. Проверка других клиентов в сети:
    На других устройствах в вашей локальной сети выполните команду nslookup или dig для проверки возможности разрешения доменного имени:

    nslookup www.lv.lc

    Если всё настроено правильно, вы должны получить ответ с IP-адресом 33.33.33.10.

  5. Устранение проблем:
    Если проблемы сохраняются:

    • Проверьте настройки брандмауэра на вашем Mac, возможно, он блокирует входящие DNS-запросы.
    • Убедитесь, что другие устройства в локальной сети используют соответствующий DNS-сервер, либо настройте их вручную.
  6. Проверка локального разрешения имен:
    На вашей машине попробуйте выполнить команды dig и ping, чтобы убедиться, что они могут разрешать адрес более успешно:

    dig www.lv.lc
    ping www.lv.lc

    Ожидайте, что ping теперь будет работать без ошибок, так как DNS-запрос должен возвращать правильный IP-адрес.

Если все вышеперечисленные шаги выполнены, и вы всё еще сталкиваетесь с проблемами, проверьте журналы dnsmasq (обычно они находятся в /usr/local/var/log/dnsmasq.log), чтобы выявить возможные ошибки или проблемы с разрешением.

Оцените материал
Добавить комментарий

Капча загружается...