resolvectl

Odpytuje i pokazuje konfigurację DNS w systemach z systemd-resolved.

resolvectl to narzędzie do rozmów z usługą systemd-resolved — czyli z lokalnym resolverem DNS, który w nowoczesnych dystrybucjach (Ubuntu, Fedora, Debian, Arch z systemd) odpowiada za zamianę nazw domen na adresy IP. Służy do dwóch rzeczy: odpytywania DNS (rozwiązywanie nazw, konkretnych rekordów, usług SRV) oraz podglądu i zmiany konfiguracji resolvera — które serwery DNS są używane, na którym interfejsie, czy działa DNSSEC i co siedzi w cache. To w praktyce następca starego systemd-resolve (ten sam binarny plik, tylko ładniejsza nazwa).

Składnia i najważniejsze opcje

Podstawowa składnia: resolvectl POLECENIE [NAZWA...]

  • query NAZWA — rozwiązuje nazwę domeny albo odwrotnie adres IP (reverse). To domyślne polecenie, jeśli podasz samą nazwę.
  • status — pokazuje globalne i per-interfejsowe ustawienia DNS aktualnie w użyciu. Bez argumentu jest to domyślna akcja całej komendy.
  • statistics — wyświetla statystyki resolvera: liczbę zapytań, trafień w cache oraz czy DNSSEC jest włączony i sprawny.
  • flush-caches — czyści lokalny cache DNS (przydatne, gdy rekord się zmienił, a Ty wciąż widzisz stary).
  • -t TYP, --type=TYP — przy query wymusza typ rekordu (A, AAAA, MX, TXT, NS…). Klasa domyślnie IN.
  • -p PROTOKÓŁ, --protocol=... — ogranicza rozwiązywanie do wybranego protokołu, np. dns, llmnr, mdns.
  • --cache=no — pomija lokalny cache i pyta serwer od nowa.
  • --no-pager — wypluwa wynik bez pagera, wygodne w skryptach.

Przykłady użycia

  • resolvectl query learningzone.pl — zwraca adresy IP (A/AAAA) dla domeny wraz z informacją, skąd przyszła odpowiedź.
  • resolvectl query -t MX gmail.com — pyta o rekordy MX, czyli serwery pocztowe domeny.
  • resolvectl status — pokazuje, jakie serwery DNS są ustawione na każdym interfejsie i czy działa DNSSEC.
  • resolvectl statistics — sprawdzasz, ile zapytań trafiło w cache, zanim zaczniesz oskarżać sieć o wolność.
  • sudo resolvectl flush-caches — czyścisz cache po zmianie rekordu DNS, żeby nie czekać na wygaśnięcie TTL.

Częste błędy i pułapki

To działa tylko z systemd-resolved. Jeśli usługa nie jest włączona (systemctl status systemd-resolved), komenda nic sensownego nie pokaże, a Twoje DNS i tak ustawia coś innego — NetworkManager, dnsmasq albo gołe /etc/resolv.conf. Nie myl też resolvectl status z zawartością /etc/resolv.conf: gdy resolved jest aktywny, ten plik to zwykle symlink na 127.0.0.53, a prawdziwe serwery zobaczysz dopiero w status.

Pamiętaj, że flush-caches oraz polecenia zmieniające konfigurację (np. resolvectl dns INTERFEJS ADRES) wymagają sudo. Same query, status i statistics są tylko do odczytu, więc bez uprawnień nic nie popsujesz.

Powiązane komendy: systemd-resolve (stara nazwa tego samego narzędzia), dig, host, nslookup, systemctl.