VirtuProbe Studio
Get the app

Protocol · DNS

DNS testing, down to the RCODE.

Query any resolver for the records you care about — A, MX, TXT, PTR and the rest — over UDP or TCP, and assert on both the answer and the response code. A from-scratch RFC 1035 stack, with no system resolver in the way.

VirtuProbe implements the DNS wire protocol from scratch — RFC 1035 and RFC 3596 — with no third-party DNS library. You pick the resolver, the record type and the flags, and you see the raw answer and the response code the server returned. It's the tool for checking mail routing, verifying an SPF or DKIM record, or confirming a resolver hands back what you expect.

01The records you actually query

Point the probe at a resolver — 8.8.8.8, 1.1.1.1, or your own — and ask for a record type:

  • A / AAAA — IPv4 and IPv6 addresses.
  • MX — mail exchangers, with their priorities.
  • CNAME, NS, SOA — aliases, delegation, zone authority.
  • TXT — SPF, DKIM, DMARC and everything else stuffed into TXT.
  • PTR — reverse lookups, using the x.x.x.x.in-addr.arpa name form.

Set Recursion Desired to control the RD bit, and an expected RCODE to assert against.

02UDP, TCP, and the truncation bit

DNS is UDP first, TCP when it has to be — and the probe handles that the way the RFC says. Queries go out over UDP on port 53 by default; when the server sets the TC (truncation) bit, VirtuProbe automatically retries the query over TCP. Turn UDP off to force TCP for everything — useful when you're specifically testing a resolver's TCP path.

# DNS probe: check a domain's mail routing

MX    example.com              expect NOERROR
      → 10 mail.example.com
A     mail.example.com         expect NOERROR
TXT   example.com              expect NOERROR   # SPF / DKIM / DMARC

03Assert on the answer and the RCODE

Every query carries a response code, and you set the one you expect — so a resolver returning the wrong verdict is a failed step, not a subtle miss:

  • 0 NOERROR · 3 NXDOMAIN — the two you'll assert on most.
  • 2 SERVFAIL · 5 REFUSED — the resolver failing or declining.
  • 1 FORMERR · 4 NOTIMP — malformed query or unsupported op.

On an NXDOMAIN the authority section (SOA) is shown, so you can see which zone answered. Extract with DNS_SUCCESS (true when every query met its assertion) and DNS_ANSWER_VALUE, whose expression names the question — e.g. A example.com — returning the first answer's value (like 93.184.216.34) into a variable.

04Put it in a chain

DNS is a first-class chain step (and callable from scripts), and {{variables}} resolve in the resolver and name fields. That makes it a natural first hop: resolve a domain's MX, extract the hostname with DNS_ANSWER_VALUE, then hand it to an SMTP step to actually connect and test delivery — DNS and mail in one runnable artefact.

Run your first query. VirtuProbe Studio is free to download — no account, no cloud, no telemetry. The DNS probe, chaining and request history are all on the free tier.

Join our Discord