Предотвратить спонтанное переключение на DNS-серверы DHCP IPv6

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

Я использую Ubuntu 24.04.1 LTS (GNU/Linux 6.8.0-1018-raspi aarch64) на моем Raspberry Pi 5. У меня на системе работает BIND 9, который имеет статический IP-адрес 10.0.0.2. На моем роутере включен DHCP.

Я пытаюсь заставить мой Raspberry Pi использовать только локальный сервер BIND. Я изменил конфигурацию Netplan:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      addresses:
        - 10.0.0.2/8
      routes:
        - to: default
          via: 10.0.0.1
      nameservers:
          addresses: [10.0.0.2]

Однако активный DNS-сервер самопроизвольно изменяется на 2001:558:feed::1, который мой роутер предоставляет через DHCPv6. Смотрите следующий вывод команды resolvectl status:

Link 2 (eth0)
    Current Scopes: DNS
         Protocols: +DefaultRoute -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 2001:558:feed::1
       DNS Servers: 10.0.0.2 2001:558:feed::1 2001:558:feed::2

Поэтому я добавил следующую строку под network.ethernets.eth0 в надежде отключить DNS-серверы IPv6 от DHCPv6 моего роутера:

dhcp6-overrides:
    use-dns: false

Однако DNS-серверы все еще появляются в выводе resolvectl status, как показано выше. Чтобы вернуться к использованию 10.0.0.2 после того, как DNS-сервер самопроизвольно изменился, мне приходится запускать systemctl restart systemd-resolved. Обычно я понимаю, что есть проблема, потому что что-то другое, зависящее от пользовательского DNS-сервера, ломается.

Я также пробовал следующие решения:

  • Полное отключение DHCPv6, установив dhcp6: no в конфигурации eth0 в Netplan (хотя это не идеально для моего случая)
  • Добавление supersede domain-name-servers 10.0.0.2; в /etc/dhcpcd.conf
  • Добавление "::1" к network.ethernets.eth0.nameservers.addresses (мой сервер BIND 9 слушает на всех интерфейсах IPv4 и IPv6)

Ничто из этого не дало эффекта.

В идеале, я бы не хотел отключать DHCPv6 на своем интерфейсе. Как я могу (а) предотвратить самопроизвольное изменение настройки DNS-сервера; и/или (b) предотвратить использование DNS-серверов DHCPv6?

Вы проверили /etc/resolv.conf? Это должен быть символическая ссылка, управляемая systemd-resolved, и содержать:

# Это /run/systemd/resolve/stub-resolv.conf, управляемый man:systemd-resolved(8).
# Не редактируйте.

Или установлены ли какие-то другие инструменты, которые управляют этим файлом? Возможно, там есть конфликты. Однако, если systemd-resolved является менеджером, то вы должны проверить его конфигурацию, ознакомьтесь с руководством systemd-resolved(8)(1) для получения дополнительных деталей.

Файл(ы), содержащий(е) конфигурацию, будет(ют) /etc/systemd/resolved.conf и – если они существуют – /etc/systemd/resolved.conf.d/*.conf. Вы можете воспользоваться grep для поиска соответствующих настроек следующим образом:

$ grep -Er '^(Fallback)?DNS=' /etc/systemd/resolved.conf*  # не забудьте об астериске

Учтите, что эти настройки могут не делать то, что вы думаете, т.е. DNS= не является приоритетным списком; любой из перечисленных адресов может стать выбранным DNS-сервером. Также FallbackDNS= имеет значение только, если нет другого способа найти значение для DNS=.

Если вы используете systemd-networkd(8), вам также стоит проверить его конфигурацию. Но я не могу рассказать вам больше об этом, поскольку я не знаком с ним, просто systemd-resolved(8) упоминает его.

.

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

Вопрос, как предотвратить спонтанное изменение настроек DNS-сервера на сервер DHCPv6 на Ubuntu 24.04.1 LTS, потенциально затрагивает несколько аспектов сетевой конфигурации, особенно с учетом использования BIND9 на Raspberry Pi 5 и активного DHCP в маршрутизаторе.

Теория

Для эффективного решения этой проблемы необходимо понимать механизмы, которые участвуют в процессе предоставления адресов DNS-серверов для системы. В вашей ситуации основной задающей силой является система, управляющая сетевыми интерфейсами, в частности Netplan, а также управление DNS при помощи systemd-resolved.

Основная проблема заключается в том, что периодически в системных настройках DNS появляется IPv6-адрес сервера, предоставляемого через DHCPv6, несмотря на попытки подавить их использование.

Пример

Вашей целью является полное использование локального DNS-сервера, функционирующего на BIND9 с IP-адресом 10.0.0.2. Несмотря на изменения в netplan-конфигурации, такие как use-dns: false в dhcp6-overrides, и другие попытки конфигурирования через dhcpcd и systemd-networkd, система все еще вносит в настройки нежелательные IPv6-адреса.

Реализация

  1. Проверка Netplan-конфигурации: Убедитесь, что netplan правильно применяет настройки. Команда sudo netplan apply должна быть выполнена после каждого изменения конфигурационного файла. Иногда в сложных сетевых условиях необходимо вручную устранить возможные конфликты, рестартуя связанный сервис, например, systemctl restart systemd-networkd.

  2. Проверка systemd-resolved и его конфигураций: Система разрешения домена (systemd-resolved) является важным компонентом, который также может влиять на настройки DNS. Проверьте файл /etc/systemd/resolved.conf и директорию /etc/systemd/resolved.conf.d на наличие специфических настроек DNS.

    • Используйте DNS= в resolved.conf, чтобы явно указать адреса DNS-серверов.
    • Убедитесь, что параметр FallbackDNS= не содержит адресов, которые перекрывают ваши предпочтительные DNS.

    После изменений в конфигурации выполняйте systemctl restart systemd-resolved, чтобы изменения вступили в силу.

  3. Отключение нежелательных DHCPv6 серверов: В режимах, когда DHCPv6 используется для других целей, нежелательные записи DNS от DHCPv6 можно подать отказом через пожилающийся фильтр. Это возможно в некоторых моделях маршрутизаторов, где можно настроить параметры отказа от определенных элементов предоставляемых DHCPv6.

  4. Дополнительные настройки BIND: Убедитесь, что ваш BIND-конфигурация правильно слушает как IPv4, так и IPv6, и что ограничения доступа не мешают вашему интерфейсу безопасно и стабильно использовать BIND в качестве основной службы DNS.

  5. Проверка сторонних служб: Иногда программное обеспечение, управляющее сетевыми подключениями, конфликты вызывает. Убедитесь, что ни одно из сторонних или параллельно запущенных приложений не вмешивается в управление сетевыми интерфейсами и их DNS-настройками.

Предлагаемые шаги должны помочь устранить появление нежелательных DNS-источников и улучшить стабильность использования вашего локального DNS-сервера на Raspberry Pi. Если проблема все еще сохраняется, возможно, стоит подумать о дополнительных методах отслеживания источника этих изменений путем детального анализа логов и снятия журналов системных сетевых служб.

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

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