resolvectl — DNS Resolution Management

If you like this project, consider supporting me on Buy Me a Coffee ☕️


tags:

resolvectl is the command-line tool for managing systemd-resolved, the systemd DNS resolver service. It provides DNS query, cache management, per-link DNS configuration, DNSSEC validation, and DNS-over-TLS support.

📚 Official Docs / Официальная документация: systemd-resolved(8)

Basics & Status

Status Commands

resolvectl status                        # Show global and per-link DNS status / Показать общий статус DNS и по интерфейсам
resolvectl status <INTERFACE>            # Show status for specific link / Показать статус конкретного интерфейса
resolvectl statistics                    # Show resolver statistics / Показать статистику резолвера
resolvectl nss                           # Show NSS module info for resolved / Показать информацию NSS-модуля resolved
resolvectl compat                        # Show nss-compat state / Показать состояние совместимости nss
resolvectl --legend=no status            # Terse output without legend / Короткий вывод без легенды

Cache Management

resolvectl flush-caches                  # Clear DNS cache / Очистить DNS-кэш
resolvectl reset-statistics              # Reset statistics counters / Сбросить счётчики статистики
resolvectl reset-server-features         # Forget probed DNS server features / Забыть обнаруженные возможности DNS-серверов

DNS Queries

Basic Queries

resolvectl query <DOMAIN>                # Resolve A/AAAA records / Разрешить A/AAAA для домена
resolvectl query -t <TYPE> <DOMAIN>      # Query specific RR type / Запросить конкретный тип записи
resolvectl query @<DNS_SERVER> <DOMAIN>  # Query via specific DNS server / Резолвить через указанный DNS-сервер
resolvectl query --search <HOSTNAME>     # Use search domains for short name / Использовать поисковые домены для короткого имени

Query Options

resolvectl -4 query <DOMAIN>             # IPv4-only resolution / Разрешать только по IPv4
resolvectl -6 query <DOMAIN>             # IPv6-only resolution / Разрешать только по IPv6
resolvectl -n query <DOMAIN>             # No-pager output / Вывод без пейджера

Record Type Examples

resolvectl query -t MX <DOMAIN>          # Query MX records / Запросить MX записи
resolvectl query -t TXT <DOMAIN>         # Query TXT records / Запросить TXT записи
resolvectl query -t AAAA <DOMAIN>        # Query IPv6 addresses / Запросить IPv6 адреса
resolvectl query -t SRV <SERVICE>        # Query SRV records / Запросить SRV записи
resolvectl query --class=CH -t TXT <DOMAIN>  # Custom class/type query / Кастомный класс/тип запроса

Special Queries

resolvectl service <SERVICE_NAME>        # Resolve DNS-SD (SRV+TXT) / Разрешить сервис DNS-SD
resolvectl tlsa <TLS_SERVICE>            # Query TLSA (DANE) records / Запросить записи TLSA
resolvectl openpgp <DOMAIN>              # Query OPENPGPKEY record / Запросить OPENPGPKEY

Examples

# Query MX records
resolvectl query -t MX example.com

# Use Cloudflare DNS
resolvectl query @1.1.1.1 example.com

# Query TLSA for HTTPS
resolvectl tlsa _443._tcp.example.com

# Discover HTTPS service
resolvectl service _https._tcp.example.com

DNS Servers / DNS-серверы

resolvectl dns                           # List DNS servers per link / Список DNS-серверов по интерфейсам
resolvectl dns <INTERFACE> <DNS1> <DNS2>  # Set DNS servers for link / Установить DNS-серверы для интерфейса
resolvectl dns <INTERFACE> ""            # Clear DNS servers / Очистить DNS-серверы

Search Domains

resolvectl domain                        # List per-link search domains / Показать поисковые домены по интерфейсам
resolvectl domain <INTERFACE> <DOMAIN>   # Set search domain / Задать поисковый домен
resolvectl domain <INTERFACE> ~<DOMAIN>  # Set routing-only domain / Задать только маршрутизируемый домен
resolvectl domain <INTERFACE> <DOMAIN> ~<INTERNAL>  # Set search & routing domains / Задать поисковые и маршрутизируемые домены

Default Route

resolvectl default-route <INTERFACE> yes  # Mark link as default DNS route / Пометить интерфейс как дефолтный DNS-маршрут
resolvectl default-route <INTERFACE> no   # Unmark as default / Снять отметку дефолтного

Revert Settings

resolvectl revert                        # Drop all runtime link settings / Сбросить все временные настройки интерфейсов
resolvectl revert <INTERFACE>            # Revert single link / Сбросить настройки для одного интерфейса
resolvectl reload                        # Reload resolved configuration / Перечитать конфигурацию resolved

DNSSEC & DNS-over-TLS

DNSSEC Configuration

resolvectl dnssec <INTERFACE> yes        # Enable DNSSEC validation on link / Включить DNSSEC-валидацию для интерфейса
resolvectl dnssec <INTERFACE> allow-downgrade  # Opportunistic DNSSEC / Оппортунистический режим DNSSEC
resolvectl dnssec <INTERFACE> no         # Disable DNSSEC on link / Отключить DNSSEC для интерфейса

Negative Trust Anchors

resolvectl nta list                      # List Negative Trust Anchors / Показать список NTA
resolvectl nta add <DOMAIN>              # Add NTA (skip DNSSEC for zone) / Добавить NTA (пропуск DNSSEC для зоны)
resolvectl nta remove <DOMAIN>           # Remove NTA / Удалить NTA

DNS-over-TLS / DNS-поверх-TLS

resolvectl dnsovertls <INTERFACE> opportunistic  # Enable DoT opportunistic / Включить DNS-over-TLS оппортунистически
resolvectl dnsovertls <INTERFACE> yes    # Force DNS-over-TLS / Принудительно использовать DoT
resolvectl dnsovertls <INTERFACE> no     # Disable DNS-over-TLS / Отключить DoT

mDNS & LLMNR

LLMNR Configuration

resolvectl llmnr <INTERFACE> yes         # Enable LLMNR on link / Включить LLMNR на интерфейсе
resolvectl llmnr <INTERFACE> no          # Disable LLMNR on link / Выключить LLMNR на интерфейсе

Multicast DNS

resolvectl mdns <INTERFACE> yes          # Enable Multicast DNS on link / Включить mDNS на интерфейсе
resolvectl mdns <INTERFACE> no           # Disable Multicast DNS on link / Выключить mDNS на интерфейсе

Local Network Queries

resolvectl query <HOSTNAME>.local        # Test mDNS/LLMNR host / Проверить резолвинг локального имени через mDNS/LLMNR
resolvectl query _workstation._tcp.local  # Discover LAN workstations / Обнаружить рабочие станции в локальной сети
resolvectl service _workstation._tcp.local  # Discover LAN services / Обнаружить сервисы в локальной сети

Service Management

systemd Service

systemctl status systemd-resolved        # Check resolver service state / Проверить состояние службы резолвера
sudo systemctl restart systemd-resolved  # Restart resolver service / Перезапустить службу резолвера
sudo systemctl enable systemd-resolved   # Enable on boot / Включить при загрузке
sudo systemctl disable systemd-resolved  # Disable on boot / Отключить при загрузке

Configuration Files

sudoedit /etc/systemd/resolved.conf     # Edit persistent settings / Редактировать постоянные настройки resolved
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf  # Use resolved-managed resolv.conf / Подключить управляемый resolved resolv.conf
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf  # Use stub resolver / Использовать заглушку резолвера

Static Hosts

resolvectl hosts                         # Show static hosts in memory / Показать загруженные статические записи hosts

Real-World Examples

Configure Custom DNS

# Set Cloudflare DNS for eth0
sudo resolvectl dns eth0 1.1.1.1 1.0.0.1

# Set Google DNS for wlan0
sudo resolvectl dns wlan0 8.8.8.8 8.8.4.4

# Set Quad9 DNS for eth0
sudo resolvectl dns eth0 9.9.9.9 149.112.112.112

VPN Split DNS

# Route specific domain through VPN
sudo resolvectl dns tun0 <VPN_DNS>
sudo resolvectl domain tun0 ~<INTERNAL_DOMAIN>

# Example: corporate VPN
sudo resolvectl dns tun0 10.0.0.1
sudo resolvectl domain tun0 ~corp.example.com

Enable DNSSEC

# Enable DNSSEC validation
sudo resolvectl dnssec eth0 yes

# Enable opportunistic DNSSEC
sudo resolvectl dnssec eth0 allow-downgrade

# Add negative trust anchor for local domain
sudo resolvectl nta add example.local

DNS-over-TLS Setup

# Enable opportunistic DoT
sudo resolvectl dnsovertls eth0 opportunistic

# Force DoT
sudo resolvectl dnsovertls eth0 yes

# Configure Cloudflare DoT
sudoedit /etc/systemd/resolved.conf
# Add: DNS=1.1.1.1#cloudflare-dns.com 1.0.0.1#cloudflare-dns.com
sudo systemctl restart systemd-resolved

Troubleshooting DNS

# Check current DNS status
resolvectl status | grep -A4 'Link'

# Flush DNS cache
sudo resolvectl flush-caches

# Test resolution
resolvectl query example.com

# Check which DNS server is used
resolvectl query -t A example.com

Local Network Discovery

# Enable mDNS for local discovery
sudo resolvectl mdns eth0 yes

# Query local host
resolvectl query myhost.local

# Discover printers
resolvectl query _ipp._tcp.local

Reference Tables

Configuration Files

File Description (EN / RU)
/etc/systemd/resolved.conf Main configuration / Основная конфигурация
/run/systemd/resolve/resolv.conf Managed resolv.conf / Управляемый resolv.conf
/run/systemd/resolve/stub-resolv.conf Stub resolver / Заглушка резолвера
/etc/resolv.conf System resolver config / Системная конфигурация резолвера

Common DNS Servers

Provider Primary Secondary
Cloudflare 1.1.1.1 1.0.0.1
Google 8.8.8.8 8.8.4.4
Quad9 9.9.9.9 149.112.112.112
OpenDNS 208.67.222.222 208.67.220.220

[!TIP] Use DNS-over-TLS for privacy. Enable DNSSEC in allow-downgrade mode for compatibility. Use split DNS for VPN connections. Disable mDNS/LLMNR on untrusted networks. / Используйте DoT для приватности. Включайте DNSSEC в режиме allow-downgrade для совместимости. Отключайте mDNS/LLMNR в недоверенных сетях.

On this page

linux resolvectl — systemd-resolved DNS Management Basics &amp; Status Status Commands Cache Management DNS Queries Basic Queries Query Options Record Type Examples Special Queries Examples Link Configuration DNS Servers / DNS-серверы Search Domains Default Route Revert Settings DNSSEC &amp; DNS-over-TLS DNSSEC Configuration Negative Trust Anchors DNS-over-TLS / DNS-поверх-TLS mDNS &amp; LLMNR LLMNR Configuration Multicast DNS Local Network Queries Service Management systemd Service Configuration Files Static Hosts Real-World Examples Configure Custom DNS VPN Split DNS Enable DNSSEC DNS-over-TLS Setup Troubleshooting DNS Local Network Discovery Reference Tables Configuration Files Common DNS Servers 📚 Documentation Links