Вопрос или проблема
Предложения приветствуются!
Я переношу службы DHCP и DNS с комбинированного роутера (192.168.0.1) на отдельную систему (работающую на 192.168.0.2) с dnsmasq. Я хочу, чтобы первая система была маршрутом по умолчанию, а вторая система обрабатывала DNS. Как мне настроить dnsmasq для этого?
Пока что все работает хорошо для IPv4, все системы получают адреса и правильный сервер имен. Но при проверке настроек IPv6 в терминале я вижу, что используется не мой внутренний DNS, а IPv6-адреса DNS-серверов провайдера.
Как мне настроить так, чтобы IPv6-адреса маршрутизировались через роутер, а запросы к серверу имен направлялись на мой локальный сервер имен? Опции конфигурации для v6 и примеры, которые я нашел до сих пор, похоже, подходят только в том случае, если и маршрутизатор, и сервер имен работают на одной машине.
Буду благодарен за любые предложения, указывающие в нужном направлении.
Конфигурация:
$ grep -v '^#' <dnsmasq.conf |uniq
server=127.0.0.1#5053
bind-interfaces
dhcp-range=192.168.0.50,192.168.0.150,12h
dhcp-option=3,192.168.0.1
dhcp-option=42,0.0.0.0
версия:
$ dnsmasq -v
Dnsmasq version 2.75 Copyright (c) 2000-2015 Simon Kelley
редактировать:
resolv.conf (но это не то место, где я вижу сервер имен IPv6 – они могут быть видны на устройстве Android в сети)
$ cat /etc/resolv.conf
# nameserver 1.1.1.1
nameserver 192.168.0.2
Открытые порты
$ sudo netstat -l -u -p -n
Активные интернет-соединения (только серверы)
Proto Recv-Q Send-Q Локальный адрес Удаленный адрес Состояние PID/имя программы
udp 0 0 127.0.0.1:53 0.0.0.0:* 542/dnsmasq
udp 0 0 192.168.0.2:53 0.0.0.0:* 542/dnsmasq
udp 0 0 0.0.0.0:67 0.0.0.0:* 542/dnsmasq
udp 0 0 127.0.0.1:5053 0.0.0.0:* 603/cloudflared
udp6 0 0 ::1:53 :::* 542/dnsmasq
Я также пытаюсь сделать это уже много лет безуспешно.
Тем временем я пробовал 4 дистрибутива на Raspi 4 без успеха.
Я думаю, что DNSMASQ не способен делать это правильно с IPv6.
Я пытался маршрутизировать все DNS-запросы от роутера к Маск, но когда я nslookup клиент получает странные выходные данные, такие как “google.com.fritz.box” (мой роутер AVM) !!!
Думаю, если кто-то это читает, вам стоит перейти на unbound (и пропустить bind) или попробовать это с возможностями systemd и постараться придерживаться только одного сетевого стека.
Ответ или решение
Конфигурация dnsmasq как DNS-сервера IPv6 с маршрутизацией через роутер
Вы перенесли услуги DHCP и DNS с роутера на отдельную систему с dnsmasq, расположенную по адресу 192.168.0.2. Ваша цель состоит в том, чтобы роутер (192.168.0.1) обрабатывал маршрутизацию и назначение IP-адресов, в то время как dnsmasq отвечал за DNS-запросы.
Проблема
Вы упомянули, что настроили IPv4 с использованием dnsmasq, и всё функционирует корректно. Однако для IPv6 ваши устройства получают DNS-серверы вашего провайдера, а не ваш локальный сервер (192.168.0.2).
Решение
Чтобы правильно настроить dnsmasq для обработки DNS-запросов по IPv6, следуйте нижеприведенному описанию.
1. Конфигурация dnsmasq
Откройте файл конфигурации dnsmasq, находимый обычно по пути /etc/dnsmasq.conf
, и внесите следующие изменения:
# Указываем IP-адрес вашего локального DNS-сервера
server=127.0.0.1#5053
bind-interfaces
dhcp-range=192.168.0.50,192.168.0.150,12h
dhcp-option=3,192.168.0.1
dhcp-option=42,0.0.0.0
# Настройка IPv6
dhcp-range=::100,::200,12h
dhcp-option=option6:23,::1
dhcp-option=option6:3,::1 # Указываем роутер как шлюз
Пояснения к параметрам:
dhcp-range=::100,::200,12h
— задаёт диапазон IPv6-адресов для клиентов по DHCP.dhcp-option=option6:23,::1
— указывает сервер DHCP-клиентам, что их DNS-сервер — это локальный адрес.dhcp-option=option6:3,::1
— указывает роутер как шлюз, вместо использования глобального IPv6-адреса.
2. Роутер
Убедитесь, что ваш роутер настроен на передачу запросов DNS на локальный сервер. Это может потребовать изменения настроек DHCP на роутере, чтобы ваш dnsmasq на 192.168.0.2 использовался в качестве DNS-сервера. В зависимости от модели роутера, вам может понадобиться изменить параметры DHCP в его интерфейсе.
3. Проверка и отладка
После внесения изменений в конфигурации вам потребуется перезапустить dnsmasq для применения новых настроек:
sudo systemctl restart dnsmasq
Затем проверьте настройки на клиентских устройствах, используя команду:
ip -6 addr show
Или для проверки настроек DNS:
getent hosts google.com
Проверьте, получает ли ваше устройство локальный DNS-сервер (192.168.0.2) в своих настройках.
Возможные проблемы и их решения
-
Клиенты продолжают получать DNS от провайдера. Проверьте настройки DHCP на вашем роутере и убедитесь, что он корректно передаёт ваши локальные DNS-адреса клиентам.
-
Неверные результаты при использовании nslookup. Убедитесь, что клиенты настроены использовать ваш локальный DNS-сервер, и нет конфликтов с другими DNS-серверами.
Заключение
Dnsmasq вполне способен обрабатывать ваши требования по маршрутизации и предоставлению DNS-сервисов для IPv6. Убедитесь, что вы правильно настроили как dnsmasq, так и роутер, чтобы не было конфликтов. Приложив усилия к этой конфигурации, вы сможете улучшить локальную сетевую инфраструктуру и избежать использования публичных DNS-серверов. Если возникнут дополнительные проблемы с конфигурацией, возможно, стоит рассмотреть альтернативные решения, такие как Unbound.