DHCP работает, DNS-запрос работает, но разрешение имени хоста не работает.

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

Мой провайдер интернета предоставил мне один LAN-кабель, который подключен к 4-портовому сетевому коммутатору. От этого коммутатора один кабель подключен к Raspberry Pi 4, а другой – к компьютеру с Windows.

Моя цель – сделать так, чтобы Rpi4 работал как роутер (не WIFI роутер) и DHCP-сервер. Таким образом, другие устройства, подключенные к этому коммутатору, такие как компьютер с Windows, будут получать IP-адрес от Rpi4.

Для подключения к интернету провайдер требует установить конкретный статический IP.

Таким образом, конфигурация Pi4 в /etc/network/interfaces выглядит следующим образом:

#это указано моим провайдером для подключения к интернету.
iface eth0 inet static
  address 10.102.132.52/24
  gateway 10.102.132.1
  dns-nameservers 10.102.132.1

#добавлено мной для работы как DHCP-сервер
iface eth0:1 inet static
  address 192.168.10.1/24

После настройки этого, интернет работает на Rpi4.


Теперь я установил docker-pihole, и compose.yaml выглядит следующим образом:

services:
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    network_mode: "host"
    environment:
      TZ: 'America/Chicago'
      WEBPASSWORD: 'changeme'
    volumes:
      - './etc-pihole:/etc/pihole'
      - './etc-dnsmasq.d:/etc/dnsmasq.d'
    cap_add:
      - NET_ADMIN
    restart: unless-stopped

С панели управления Pihole я включил DHCP-сервер и установил диапазон от 192.168.10.100 до 192.168.10.150 и шлюз 192.168.10.1.

Машина с Windows успешно получает IP, например, 192.168.10.145; где шлюз и DNS автоматически устанавливаются на 192.168.10.1.

ping 8.8.8.8 с машины Windows работает; но ping example.com не работает.

Мне сразу пришло в голову, что DNS pihole не работает, но при проверке журнала запросов я увидел, что машина с Windows запросила example.com и он был разрешен, но все же я не могу просматривать интернет с машины с Windows.

net.ipv4.ip_forward=1 установлен в /etc/sysctl.conf, а маскарад включена для eth0 с использованием iptables.

Мой лучший предположение – это то, что DNS-ответы не доходят до машины с Windows. Нужна ли какая-то маршрутизация трафика?

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

Ваш сценарий настройки сети выглядит почти правильно, но учитывая, что ваш Windows компьютер получает IP-адрес и отвечает на запросы ping к IP-адресам, но не может разрешать доменные имена, есть вероятность, что проблема связана с маршрутизацией ответов DNS обратно на ваш компьютер.

Вот несколько шагов, которые помогут вам устранить проблему:

  1. Проверка конфигурации Pi-hole:
    Убедитесь, что Pi-hole корректно настроен на использование внешнего DNS-сервера. Если DNS запроса успешно обрабатываются, это означает, что Pi-hole работает. Проверьте настройки "DNS" в веб-интерфейсе Pi-hole и убедитесь, что выбранные внешние DNS-серверы работают.

  2. Проверка iptables:
    Вы упомянули, что у вас включен masquerade для eth0. Это важно для перенаправления исходящего трафика к интернету. Однако нужно также убедиться, что у вас есть правильные правила iptables для разрешения входящего трафика. Попробуйте выполнить следующую команду:

    iptables -L -v -n

    Убедитесь, что у вас есть правило, позволяющее трафику через интерфейс eth0 и что трафик направляется обратно в вашу локальную сеть (например, с интерфейса eth0:1).

    Пример правила, которое может вам помочь:

    iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
    iptables -A FORWARD -i eth0:1 -o eth0 -j ACCEPT
  3. Проверка маршрутов:
    На вашем Windows ПК выполните команду route print. Убедитесь, что маршрут по умолчанию установлен и указывает на ваш Pi-hole (192.168.10.1).

  4. Проверка сетевых настроек Windows:
    Попробуйте сбросить DNS-кеш на Windows машине командой:

    ipconfig /flushdns

    Затем проверьте текущие DNS-услуги с помощью команды:

    nslookup example.com

    Это поможет убедиться, что DNS работает корректно.

  5. Тестирование с помощью другого DNS-сервера:
    Попробуйте временно установить DNS на вашем Windows ПК на общедоступные DNS-серверы, такие как Google (8.8.8.8) или Cloudflare (1.1.1.1) и проверьте, работает ли разрешение имен:

    nslookup example.com 8.8.8.8

    Если это работает, вам нужно будет пересмотреть настройки вашего Pi-hole и его внешний DNS.

  6. Изменение конфигурации Pi-hole:
    Если вы используете pi-hole как DNS, убедитесь, что он может принимать запросы от других устройств в вашей сети. Для этого проверьте конфигурационные файлы и убедитесь, что в них нет ограничений для вашей сети.

Если после выполнения этих шагов проблема не исчезнет, предоставьте дополнительную информацию о конфигурации iptables и вывод команд ip a и iptables -L -n -v для дальнейшего анализа.

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

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