resolvectl은 systemd-resolved resolver의 상태를 조회하고 DNS 질의, cache 관리, link별 DNS server와 routing domain 설정을 수행하는 command-line client다.
resolvectl은 독립 package가 아니라 systemd-resolved와 함께 제공된다.
sudo apt update sudo apt install systemd-resolved sudo systemctl enable --now systemd-resolved resolvectl --version
systemd-resolved package를 설치하면 /etc/resolv.conf가 systemd-resolved 관리 대상으로 전환될 수 있다. 설치 전에 현재 symlink와 network manager 구성을 확인한다.
sudo dnf install systemd-resolved sudo systemctl enable --now systemd-resolved resolvectl --version
RHEL 8에서 systemd-resolved는 Technology Preview로 문서화되어 있으므로 production support 정책을 확인한다. systemd는 Linux 전용이므로 macOS Homebrew와 Windows winget용 공식 설치 방법은 없다.
resolvectl [OPTIONS...] COMMAND [NAME...]
resolvectl [OPTIONS…] query HOSTNAME|ADDRESS…resolvectl [OPTIONS…] dns LINK [SERVER…]resolvectl [OPTIONS…] domain LINK [DOMAIN…]
인자 없이 실행하거나 status를 사용하면 global 및 link별 resolver 상태를 표시한다.
resolvectl query example.com resolvectl query 192.0.2.10 resolvectl --type=MX query example.com resolvectl --type=TXT query example.com resolvectl service _https._tcp example.com
query: hostname, IPv4/IPv6 address 또는 DNS resource record를 조회한다.service: DNS-SD 또는 SRV service를 조회한다.openpgp: email address에 대응하는 OpenPGP key record를 조회한다.tlsa: TLSA record를 조회한다.-4, -6: IPv4 또는 IPv6 결과로 제한한다.-i, –interface=INTERFACE: 질의할 link를 지정한다.-p, –protocol=PROTO|help: DNS, LLMNR, mDNS 등 protocol을 제한한다.-t, –type=TYPE|help: DNS record type을 지정한다.-c, –class=CLASS|help: DNS class를 지정한다.resolvectl status resolvectl status enp1s0 resolvectl statistics resolvectl monitor sudo resolvectl flush-caches sudo resolvectl reset-statistics
status [LINK…]: 사용 중인 DNS server, protocol, DNS domain과 default-route 상태를 표시한다.statistics: transaction과 cache 통계를 표시한다.reset-statistics: resolver 통계를 초기화한다.flush-caches: local DNS cache를 비운다.reset-server-features: 학습한 DNS server 기능 수준을 초기화한다.monitor: DNS 질의를 실시간으로 감시한다.show-cache, show-server-state: 지원하는 systemd version에서 cache와 server 내부 상태를 표시한다.log-level [LEVEL]: 지원하는 systemd version에서 systemd-resolved의 runtime log level을 조회하거나 변경한다.# 임시 DNS server와 search domain 설정 sudo resolvectl dns wlo1 192.0.2.53 192.0.2.54 sudo resolvectl domain wlo1 example.com # example.com 질의만 이 link로 보내는 route-only domain sudo resolvectl domain wlo1 '~example.com' # link별 임시 설정 제거 sudo resolvectl revert wlo1
dns, domain, default-route, llmnr, mdns, dnsovertls, dnssec, nta는 link별 설정을 조회하거나 runtime에 변경한다. 이 설정은 일반적으로 reboot, link 재생성 또는 network manager 재적용 후 유지되지 않는다. 지속 설정은 NetworkManager connection profile, systemd-networkd의 .network file 또는 /etc/systemd/resolved.conf.d/*.conf에서 관리한다.
domain LINK DOMAIN은 search domain이며, ~DOMAIN은 search suffix를 추가하지 않는 route-only domain이다. split DNS에서는 의미가 다르므로 구분한다.
–no-pager: pager를 사용하지 않는다.–legend=BOOL: header와 부가 정보를 표시하거나 숨긴다.–json=MODE, -j: 지원하는 systemd version에서 JSON으로 출력한다.–raw[=payload|packet]: 응답을 binary payload 또는 packet으로 출력한다.–validate=BOOL, –synthesize=BOOL, –cache=BOOL, –stale-data=BOOL, –zone=BOOL, –trust-anchor=BOOL, –network=BOOL, –search=BOOL: 지원하는 version에서 lookup source와 검증 동작을 제어한다.
option과 command는 systemd version에 따라 다를 수 있으므로 대상 host의 resolvectl –help를 기준으로 확인한다.
Failed to get global data: Unit dbus-org.freedesktop.resolve1.service not found: systemd-resolved package와 service 상태를 확인한다.resolvectl status에는 DNS server가 있지만 질의가 실패함: resolvectl query, journalctl -u systemd-resolved, firewall의 UDP/TCP 53 경로를 확인한다./etc/resolv.conf가 127.0.0.53을 가리킴: 정상적인 local stub mode일 수 있다. 실제 upstream server는 resolvectl status로 확인한다.resolvectl dns/domain 대신 사용 중인 network manager의 persistent profile에 저장한다.domain 설정 후 예상하지 않은 suffix 질의가 발생함: route-only domain이 필요하면 ~example.com 형식을 사용한다.
resolvectl은 systemd 239부터 이전 systemd-resolve client를 대체했다. 일부 command와 option은 이후 systemd release에서 추가되었으므로 오래된 distribution에서는 표시되지 않을 수 있다.