Вопрос или проблема
Я использую 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-адреса.
Реализация
-
Проверка Netplan-конфигурации: Убедитесь, что netplan правильно применяет настройки. Команда
sudo netplan apply
должна быть выполнена после каждого изменения конфигурационного файла. Иногда в сложных сетевых условиях необходимо вручную устранить возможные конфликты, рестартуя связанный сервис, например,systemctl restart systemd-networkd
. -
Проверка 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
, чтобы изменения вступили в силу. - Используйте
-
Отключение нежелательных DHCPv6 серверов: В режимах, когда DHCPv6 используется для других целей, нежелательные записи DNS от DHCPv6 можно подать отказом через пожилающийся фильтр. Это возможно в некоторых моделях маршрутизаторов, где можно настроить параметры отказа от определенных элементов предоставляемых DHCPv6.
-
Дополнительные настройки BIND: Убедитесь, что ваш BIND-конфигурация правильно слушает как IPv4, так и IPv6, и что ограничения доступа не мешают вашему интерфейсу безопасно и стабильно использовать BIND в качестве основной службы DNS.
-
Проверка сторонних служб: Иногда программное обеспечение, управляющее сетевыми подключениями, конфликты вызывает. Убедитесь, что ни одно из сторонних или параллельно запущенных приложений не вмешивается в управление сетевыми интерфейсами и их DNS-настройками.
Предлагаемые шаги должны помочь устранить появление нежелательных DNS-источников и улучшить стабильность использования вашего локального DNS-сервера на Raspberry Pi. Если проблема все еще сохраняется, возможно, стоит подумать о дополнительных методах отслеживания источника этих изменений путем детального анализа логов и снятия журналов системных сетевых служб.