Заставить systemd-resolved игнорировать DNS-сервер и использовать только тот, который я укажу

Заставить systemd-resolved игнорировать DNS-сервер и использовать только тот, который я укажу

У меня возникла проблема с DNS, и чтобы сузить круг проблем, мне было предложено вручную настроить параметры DNS на моем компьютере, указав только один DNS-сервер вместо двух, возвращаемых через DHCP, чтобы администраторы сервера могли выяснить, возникает ли моя проблема только на одном DNS-сервере или на обоих.

Однако мне не удалось настроить systemd-resolved таким образом, чтобы он вручную принимал мою конфигурацию DNS.

Я попробовал следующее, но все они по-прежнему отправляли DNS-запросы случайным образом между обоими серверами, даже после перезапуска systemd-networkdобоих systemd-resolved:

  • Указывая DNS=1.2.3.4в [Resolve]разделе/etc/systemd/resolved.conf
  • Указывая DNS=1.2.3.4в [Network]разделе /etc/systemd/network/eth0.conf(единственный файл в этой папке)
  • Редактирование /etc/resolv.confи комментирование одного из серверов

Ни одно из этих действий ничего не изменило, resolvectlоба DNS-сервера по-прежнему отображались как доступные, и когда я проводил тесты, DNS-запросы распределялись между двумя серверами, а не использовались только один указанный мной сервер.

Как мне указать systemd использовать только один указанный мной DNS-сервер и не использовать также серверы, возвращаемые через DHCP?

решение1

Я не пробовал это, но с тех пор обнаружил, что есть возможность игнорировать DNS-серверы, поступающие из ответа DHCP. В .networkфайле systemd добавьте раздел DHCP, если его еще нет, и используйте опцию UseDNS:

[Network]
DNS=8.8.8.8  # Specify your DNS server manually

[DHCPv4]
UseDNS=no  # Don't use DNS servers from DHCP

решение2

У меня недостаточно репутации, чтобы комментироватьМалвинныйответ. Хотя его ответ правильный, контейнерам nspawn необходимо указать имя файла, 80-container-host0.networkчтобы переопределить системные настройки по умолчанию с хоста.

Изsystemd-nspawnдокументы:

Обратите внимание, что systemd-networkd.service(8) по умолчанию включает сетевой файл, /usr/lib/systemd/network/80-container-ve.networkсоответствующий интерфейсам на стороне хоста, созданным таким образом, который содержит настройки для включения автоматического предоставления адресов на созданном виртуальном канале через DHCP, а также автоматическую маршрутизацию IP на внешние сетевые интерфейсы хоста. Он также содержит /usr/lib/systemd/network/80-container-host0.networkсоответствие интерфейсу на стороне контейнера, созданному таким образом, содержащему настройки для включения назначения адресов на стороне клиента через DHCP. В случае, если systemd-networkd запущен как на хосте, так и внутри контейнера, таким образом, доступна автоматическая IP-связь от контейнера к хосту с последующим подключением к внешней сети.

/etc/systemd/network/80-container-host0.network:

# https://www.freedesktop.org/software/systemd/man/systemd.network.html#UseDNS=
#
# Disable adding the DNS from DHCP
#
[Match]
Virtualization=container
Name=host0

[Network]
DHCP=ipv4
DNS=

[DHCPv4]
UseDNS=false

решение3

Если вы можете задать статический IP, то вы можете указать DNS-сервер. Попросите администраторов сети дать вам статический IP, который вы можете использовать, и попробуйте его. Не используйте любой IP для этого, вы можете легко получить дубликат.

Связанный контент