Рейтинг:1

Установка глобальных настроек DNS + MAC-адреса в дистрибутиве Linux на основе Debian с помощью systemd-resolved + NetworkManager

флаг in

Я использую дистрибутив Linux на основе Debian, в частности Pop!_OS 22.04 (Ubuntu jammy). Я хотел бы установить пользовательские настройки DNS + MAC-адреса глобально, то есть автоматически применять ко всем сетевым подключениям, новым и ранее существовавшим.

В частности, я хотел бы изменить следующие настройки:

  • Включить DNSSEC
  • Включить DNS-over-TLS
  • Измените мои DNS-серверы на AdGuard DNS
  • Включить рандомизацию MAC-адресов

На данный момент я создал три файла, которые должен внести эти изменения.

/etc/systemd/resolved.conf.d/dns.conf:

DNSSEC=разрешить переход на более раннюю версию
DNSOverTLS = оппортунистический

/etc/NetworkManager/dns.conf:

# указываем dns серверы
# игнорировать предоставленный dhcp

[ipv4]
dns=94.140.14.14;94.140.15.15;
игнорировать-авто-DNS = истина

[ipv6]
dns=2a10:50c0::ad1:ff;2a10:50c0::ad2:ff;
игнорировать-авто-DNS = истина

/etc/NetworkManager/mac.conf:

[устройство]
# рандомизировать mac-адрес при сканировании сетей Wi-Fi
wifi.scan-rand-mac-address = да

[связь]
# рандомизировать mac-адрес при первом сетевом подключении
# сохранить сгенерированный mac-адрес для всех будущих переподключений
# (для сети)
ethernet.cloned-mac-адрес = стабильный
wifi.cloned-mac-address = стабильный

После создания этих файлов и перезагрузки нет никаких признаков того, что были внесены какие-либо изменения, касающиеся сетевого подключения.

Тестовая страница AdGuard показывает, что его DNS «не работает».

$ nmcli dev показать wlp0s20f3 (карта Wi-Fi):

ОБЩИЕ УСТРОЙСТВА: wlp0s20f3
ОБЩИЙ ТИП: Wi-Fi
ОБЩИЙ.HWADDR: C6:F5:1A:8E:84:4D
ОБЩАЯ MTU: 1500
ОБЩЕЕ СОСТОЯНИЕ: 100 (подключено)
ОБЩЕЕ ПОДКЛЮЧЕНИЕ: NotYourWiFi
GENERAL.CON-ПУТЬ: /org/freedesktop/NetworkManager/ActiveC>
IP4.АДРЕС[1]: 192.168.0.153/24
IP4.ШЛЮЗ: 192.168.0.1
IP4.ROUTE[1]: dst = 192.168.0.0/24, nh = 0.0.0.0, mt >
IP4.ROUTE[2]: dst = 169.254.0.0/16, nh = 0.0.0.0, mt >
IP4.ROUTE[3]: dst = 0.0.0.0/0, nh = 192.168.0.1, mt =>
IP4.DNS[1]: 192.168.0.1
IP4.ДОМЕН[1]: mbfamily.localdomain
IP6.АДРЕС[1]: fe80::70e0:14db:aeb6:b6be/64
IP6.ШЛЮЗ: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 1024

$ статус разрешения:

Глобальный
       Протоколы: -LLMNR -mDNS -DNSOverTLS DNSSEC=нет/не поддерживается
Режим resolv.conf: заглушка

Ссылка 2 (enp0s31f6)
Текущие области применения: нет
     Протоколы: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=нет/не поддерживается

Ссылка 3 (wlp0s20f3)
    Текущие области: DNS
         Протоколы: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=нет/не поддерживается
Текущий DNS-сервер: 192.168.0.1
       DNS-серверы: 192.168.0.1
        Домен DNS: mbfamily.localdomain

/etc/resolv.conf:

# Это файл /run/systemd/resolve/stub-resolv.conf, которым управляет man:systemd-resolved(8).
# Не редактировать.
#
# Этот файл может иметь символическую ссылку как /etc/resolv.conf. Если вы смотрите на
# /etc/resolv.conf и увидев этот текст, вы перешли по символической ссылке.
#
# Это динамический файл resolv.conf для подключения локальных клиентов к
# внутренний резолвер DNS-заглушек systemd-resolved. В этом файле перечислены все
# настроенные поисковые домены.
#
# Запустите «resolvectl status», чтобы увидеть подробности о DNS-серверах восходящей линии связи.
# В настоящее время используется.
#
# Сторонние программы обычно не должны обращаться к этому файлу напрямую, а только
# через символическую ссылку в /etc/resolv.conf. Для управления man:resolv.conf(5) в
# по-другому, замените эту символическую ссылку на статический файл или другую символическую ссылку.
#
# Подробную информацию о поддерживаемых режимах см. в man:systemd-resolved.service(8).
# операция для /etc/resolv.conf.

сервер имен 127.0.0.53
параметры edns0 траст-объявление
поиск mbfamily.localdomain

/run/systemd/разрешение/resolv.conf:

# Это файл /run/systemd/resolve/resolv.conf, которым управляет man:systemd-resolved(8).
# Не редактировать.
#
# Этот файл может иметь символическую ссылку как /etc/resolv.conf. Если вы смотрите на
# /etc/resolv.conf и увидев этот текст, вы перешли по символической ссылке.
#
# Это динамический файл resolv.conf для прямого подключения локальных клиентов к
# все известные DNS-серверы восходящей линии связи. В этом файле перечислены все настроенные поисковые домены.
#
# Сторонние программы обычно не должны обращаться к этому файлу напрямую, а только
# через символическую ссылку в /etc/resolv.conf. Для управления man:resolv.conf(5) в
# по-другому, замените эту символическую ссылку на статический файл или другую символическую ссылку.
#
# Подробную информацию о поддерживаемых режимах см. в man:systemd-resolved.service(8).
# операция для /etc/resolv.conf.

сервер имен 192.168.0.1
поиск mbfamily.localdomain

$ systemd-analyze cat-config systemd/resolved.conf показывает, что разрешенный.conf.d/dns.conf является однако читается:

# /etc/systemd/resolved.conf
# Этот файл является частью systemd.
#
# systemd — бесплатное программное обеспечение; вы можете распространять его и/или модифицировать под
# условий Стандартной общественной лицензии ограниченного применения GNU, опубликованной Free
# Фонд программного обеспечения; либо версия 2.1 Лицензии, либо (на ваш выбор)
# любая более поздняя версия.
#
# Записи в этом файле показывают значения по умолчанию времени компиляции. Локальная конфигурация
# должен быть создан либо путем изменения этого файла, либо путем создания "вставок" в
# подкаталог resolve.conf.d/. Последнее обычно рекомендуется.
# Значения по умолчанию можно восстановить, просто удалив этот файл и все дополнения.
#
# Используйте 'systemd-analyze cat-config systemd/resolved.conf', чтобы отобразить полный co>
#
# Подробности смотрите в файле resolve.conf(5).

[Решать]
# Некоторые примеры DNS-серверов, которые можно использовать для DNS= и FallbackDNS=:
# Cloudflare: 1.1.1.1#cloudflare-dns.com 1.0.0.1#cloudflare-dns.com 2606:4700:4>
# Google: 8.8.8.8#dns.google 8.8.4.4#dns.google 2001:4860:4860::8888#dns.go>
# Quad9: 9.9.9.9#dns.quad9.net 149.112.112.112#dns.quad9.net 2620:fe::fe#d>
#DNS=
#ЗапаснойDNS=
#домены=
#DNSSEC=нет
#DNSOverTLS=нет
#MulticastDNS=нет
#LLMNR=нет
#Кэш=без отрицательных значений
#CacheFromLocalhost=нет
#DNSStubListener=да
#DNSStubListenerExtra=
#ReadEtcHosts=да
#ResolveUnicastSingleLabel=нет

# /etc/systemd/resolved.conf.d/dns.conf
DNSSEC=разрешить переход на более раннюю версию
DNSOverTLS = оппортунистический
paladin avatar
флаг id
ResolveD отдает приоритет настройкам DNS из интерфейсов, если они не отключены явным образом. Как насчет того, чтобы настроить глобальный DNS через `resolved.conf` вместо использования NetworkManager.
unilock avatar
флаг in
@paladin Настройки «DNSSEC» и «DNSOverTLS», прочитанные «systemd» (как сообщает «systemd-analyze»), по-видимому, применялись неправильно, как сообщают «resolvectl» и «nmcli dev show». Поэтому я не думаю, что редактирование конфигов `resolved` поможет здесь. Несмотря на это, я не верю, что `systemd-resolved` допускает рандомизацию MAC.
paladin avatar
флаг id
Какое отношение резолвер имеет к рандомизации MAC?
unilock avatar
флаг in
@paladin Я хочу включить рандомизацию MAC-адресов, как я сказал в своем исходном посте. Кажется, вы не можете сделать это с `systemd-resolved`. Так что использовать только это не получится.
paladin avatar
флаг id
Я только что заметил, что ваш `wlp0s20f3` использует LLMNR, вероятно, потому, что ваш NetworkManager неправильно настроен. Я повторю свой другой вопрос, какое отношение резолвер имеет к рандомизации MAC? Я бы предположил, что ничего. PS Я использую systemd-networkd для настройки сети.
unilock avatar
флаг in
Конфигурация @paladin NetworkManager осталась нетронутой, за исключением модификаций, о которых я уже упоминал, хотя возможно, что конфигурация Pop!_OS по умолчанию может быть ошибочной. Что касается вашего вопроса, я предполагаю, что преобразователь не имеет ничего общего с рандомизацией MAC. Я не уверен, почему вы спрашиваете об этом.
Рейтинг:0
флаг id

Это моя конфигурация с разрешением systemd для DNSSEC, и она работает.

/etc/systemd/resolved.conf

DNS=9.9.9.9#dns9.quad9.net 2620:fe::fe#dns9.quad9.net 2620:fe::9#dns9.quad9.net
Резервный DNS=149.112.112.112#rpz-public-resolver1.rrdns.pch.net
Домены=home.arpa
DNSSEC=да
DNSOverTLS=да
MulticastDNS=нет
LLMNR=нет
Кэш=да
DNSStubListener=да
ReadEtcHosts=да
ResolveUnicastSingleLabel=нет

особенно важно, чтобы следующие параметры были деактивированы, например:

MulticastDNS=нет
LLMNR=нет

Вам нужно использовать stub-resolver из systemd-resolved или systemd-socket, чтобы это работало.

cd /etc/ && ln -sf /run/systemd/resolve/stub-resolv.conf resolv.conf

unilock avatar
флаг in
`MulticastDNS` и `LLMNR` по умолчанию имеют значение `нет`, по крайней мере, в моей системе. Кроме того, `/etc/resolv.conf` уже имеет символическую ссылку на `run/systemd/resolve/stub-resolv.conf`, как видно из моего исходного поста.В любом случае, использование точных значений, которые вы указали для «DNS» и «FallbackDNS», ничего не изменило.
unilock avatar
флаг in
OK, кажется, что `LLMNR` *не* по умолчанию равно `no`; Я предположил, что закомментированные значения в `/etc/systemd/resolved.conf` были значениями по умолчанию. Хотя я не уверен, где это меняется на «да», с точки зрения файла conf.
paladin avatar
флаг id
@unilock Значения по умолчанию компилируются в программу/библиотеки. Вам нужно будет прочитать исходный код для двойной проверки. Оригинальный Debian обычно по умолчанию устанавливает для LLMNR и MulticastDNS значение «да».

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.