
Моя установка Debian использует systemd-resolved
NetworkManager. Для моих домашних подключений я настроил NetworkManager на установку DNS-серверов для использования:
$cat /etc/NetworkManager/system-connections/my-wifi-ssid.nmconnection
...
[ipv4]
dns=10.30.20.1;1.1.1.1;8.8.8.8;
ignore-auto-dns=true
method=auto
...
По сути, я хотел бы использовать свой локальный DNS-сервер по 10.30.20.1
умолчанию, а два других оставить только в качестве запасного варианта.
Проблема в том, что активный/используемый сервер, по-видимому, выбирается случайным образом:
$resolvectl status
Link 4 (wlp3s0)
Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 1.1.1.1
DNS Servers: 10.30.20.1 1.1.1.1 8.8.8.8
Примечание: я видел все три как активные, но это не согласовано. Есть ли способ заставить systemd-resolved предпочесть сервер, указанный первым NetworkManager?
решение1
Даже при настроенных статических DNS-серверах NetworkManager иногда удаляет их все и не оставляет ни одного работающего. Кроме того, он меняет ваши DNS-серверы по мере включения и выключения сетевых интерфейсов. Похоже, в NetoworkManager нет способа отключить его динамическое управление.
Альтернативное решение — полностью отключить динамическое управление DNS. Это можно сделать, удалив /etc/resolv.conf
символическую ссылку и заменив ее реальным файлом, который является статическим. Что-то вроде этого сработает:
nameserver 10.30.20.1
nameserver 1.1.1.1
nameserver 8.8.8.8
В этом файле есть и другие настройки, которые NetworkManager добавляет автоматически. Возможно, вы захотите скопировать и их.