3

Я использую systemd 213 в Arch Linux и systemd-networkd/ разрешается с помощью DHCP для подключения к Интернету. Я также использую кеширующий DNS-сервер на 127.0.0.1. Я хотел бы сделать этот сервер первым DNS-сервером в списке, но я также хотел бы использовать серверы имен, обнаруженные systemd-resolved. Использование статического resolv.conf на самом деле невозможно, потому что я подключаюсь к сетям с разными настройками DNS.

Я знаю, что могу установить резервные DNS-серверы в /etc/systemd/resolved.conf , но есть ли способ с systemd-networkd добавить мой локальный DNS-сервер к тем, которые обнаружены DHCP?


Изменить: что я пробовал до сих пор

  • Добавление ручной записи DNS в файл .network приводит к тому, что эта запись добавляется, а не добавляется:

    # This file is managed by systemd-resolved(8). Do not edit.
    #
    # Third party programs must not access this file directly, but
    # only through the symlink at /etc/resolv.conf. To manage
    # resolv.conf(5) in a different way, replace the symlink by a
    # static file or a different symlink.
    
    nameserver 141.48.3.51
    nameserver 141.48.3.17
    nameserver 141.48.3.3
    # Too many DNS servers configured, the following entries may be ignored
    nameserver 127.0.0.1
    
  • Если я добавлю UseDNS=true в раздел [DHCPv4] , как описано в systemd.network(5) , обнаруженные DHCP серверы имен игнорируются, и используется только статическая запись DNS, а это не то, что мне нужно или:

    # This file is managed by systemd-resolved(8). Do not edit.
    #
    # Third party programs must not access this file directly, but
    # only through the symlink at /etc/resolv.conf. To manage
    # resolv.conf(5) in a different way, replace the symlink by a
    # static file or a different symlink.
    
    nameserver 127.0.0.1
    
  • Использование представления in_addr для адреса DNS просто добавляет мой сервер имен, так же, как и обычное представление.

3 ответа3

2

Вы пытались добавить эти две строки:

  [Network]
  DNS=127.0.0.1

в один из файлов /etc/systemd/network/*.network? Например, для клиента dhcp измените /etc/systemd/network/80-dhcp.network так, чтобы он содержал строки:

  [Match]
  Name=en*

  [Network]
  DHCP=yes
  DNS=127.0.0.1

РЕДАКТИРОВАТЬ:

Вы пробовали представление in_addr? Попробуйте заменить 127.0.0.1 на 16777343.

0

Фокус в том, что ваш конфигурационный файл в /etc/systemd/network должен лексически сортироваться раньше, чем конфиги по умолчанию в /run/systemd/network с префиксом 10- . Обратите внимание, что если вы переопределите конфигурацию по умолчанию, вы также должны включить DHCP на интерфейсе, иначе интерфейс будет работать без настроенного DHCP.

Вот пример файла конфигурации, который я поместил в /etc/system/network/1-test.network:

[Match]
Name=ens5

[Network]
DHCP=ipv4
DNS=8.8.8.8

[DHCP]
UseDNS=false

Чтобы применить эти настройки, запустите systemctl restart systemd-networkd . Похоже, что это не нарушает интерфейс, просто перенастройте его. Затем вы можете использовать networkctl status ens5 чтобы проверить, что настройки были применены.

Я проверял это по крайней мере работает на Ubuntu 18.04 (бионический).

-1

То же, что и ответ @MariusMatutiae, но перенести запись DNS выше DHCP = yes

  [Match]
  Name=en*

  [Network]
  DNS=127.0.0.1
  DHCP=yes

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .