Настройте dnsmasq как сервер имен IPv6, но позвольте роутеру выполнять маршрутизацию (и, возможно, назначение IP-адресов).

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

Предложения приветствуются!

Я переношу службы 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) в своих настройках.

Возможные проблемы и их решения

  1. Клиенты продолжают получать DNS от провайдера. Проверьте настройки DHCP на вашем роутере и убедитесь, что он корректно передаёт ваши локальные DNS-адреса клиентам.

  2. Неверные результаты при использовании nslookup. Убедитесь, что клиенты настроены использовать ваш локальный DNS-сервер, и нет конфликтов с другими DNS-серверами.

Заключение

Dnsmasq вполне способен обрабатывать ваши требования по маршрутизации и предоставлению DNS-сервисов для IPv6. Убедитесь, что вы правильно настроили как dnsmasq, так и роутер, чтобы не было конфликтов. Приложив усилия к этой конфигурации, вы сможете улучшить локальную сетевую инфраструктуру и избежать использования публичных DNS-серверов. Если возникнут дополнительные проблемы с конфигурацией, возможно, стоит рассмотреть альтернативные решения, такие как Unbound.

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

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