NetworkManager и systemd-resolved: тонкая настройка DNS в Linux

Проблемы с DNS — частая причина «интернет не работает, хотя пинг идёт». В современных дистрибутивах за разрешение имён отвечает связка NetworkManager и systemd-resolved. Понимание их взаимодействия позволяет быстро диагностировать и исправлять ошибки.

Как работает цепочка разрешения

Приложение обращается к glibc, которая читает /etc/resolv.conf. В современных системах этот файл — симлинк на /run/systemd/resolve/stub-resolv.conf, указывающий на локальный stub (127.0.0.53). systemd-resolved кэширует запросы и пересылает их на настроенные upstream-DNS.

Проверка текущей конфигурации

resolvectl status
resolvectl query example.com
cat /etc/resolv.conf
nmcli device show | grep DNS

Настройка DNS через NetworkManager

Для конкретного соединения задайте DNS-серверы:

nmcli con mod "Wired connection 1" ipv4.dns "1.1.1.1 8.8.8.8"
nmcli con mod "Wired connection 1" ipv4.ignore-auto-dns yes
nmcli con up "Wired connection 1"

Чтобы применить глобально, отредактируйте /etc/systemd/resolved.conf:

[Resolve]
DNS=1.1.1.1 8.8.8.8
FallbackDNS=9.9.9.9
DNSSEC=allow-downgrade
Cache=yes

Затем: sudo systemctl restart systemd-resolved.

Диагностика частых проблем

  • «Временный сбой разрешения имён» — проверьте статус resolved и доступность upstream.
  • Корпоративные сети с внутренними зонами — настройте доменные маршруты через Domains=~corp.example.com.
  • VPN-интерфейсы могут перехватывать DNS — следите за приоритетами в resolvectl.

Понимание этой связки сэкономит часы отладки сетевых проблем.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.