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.
Понимание этой связки сэкономит часы отладки сетевых проблем.




