is it dns? / wiki ← back to the live monitor

📋 Record type cheat sheet

Every record type you might encounter, what it's for, and whether you will ever actually use it. Sorted by "you will see this often" to "you will never see this."

Each "daily-use" and "modern essentials" type below has its own page with dig examples and, where available, DoH/DoT query examples.

Daily-use types#

TypeRFCWhat it holdsWhen to useDetail
A1035IPv4 addressAlways. The default.A →
AAAA3596IPv6 addressIf you have IPv6 connectivity. Even if you do not, eventually.AAAA →
CNAME1035Alias to another nameWhenever you would rather track one place than many. Not at the zone apex (hosted providers offer flattening / ALIAS workarounds there). Often used to point at a DDNS-managed target (e.g. a vendor remote-access subdomain).CNAME →
MX1035Mail exchange + priorityMail-receiving domains; SMTP semantics in RFC 5321MX →
NS1035Authoritative nameserverAt the zone apex and at delegation pointsNS →
SOA1035Zone metadata (primary NS, admin email, serial, timers)Required at every zone apexSOA →
TXT1035Arbitrary textSPF, DKIM, DMARC, verification tokens, anything elseTXT →
PTR1035Reverse (IP to name)In .in-addr.arpa / .ip6.arpa zones; see reverse-dnsPTR →

Modern essentials#

TypeRFCWhat it holdsWhen to useDetail
CAA8659Allowed certificate authoritiesAlways, for hardening. See caa-policy.CAA →
SRV2782Service location (priority weight port target)XMPP, SIP, LDAP, Kerberos, Minecraft, MatrixSRV →
HTTPS / SVCB9460HTTPS endpoint hints (port, ECH, ALPN)Modern web: eliminates a round trip; browsers use this before attempting a TCP connectionHTTPS/SVCB →
TLSA6698Certificate pinning via DANEIf you operate mail servers wanting DANE-secured SMTPTLSA →
SSHFP4255SSH host key fingerprintDNSSEC-backed TOFU replacement for SSH at scaleSSHFP →

DNSSEC mechanics (you don't write these, but you see them)#

These types are part of the DNSSEC chain. You will encounter them when debugging signature failures with dnssec-troubleshooting or visualizing a zone with dnsviz.

TypeWhat it holds
DNSKEYThe zone's signing key(s): KSK (flags 257) + ZSK (flags 256)
DSParent's hash of the child's KSK: the chain link that anchors the child zone
RRSIGSignature over a record set
NSECOrdered list of names in the zone: proves what does not exist
NSEC3Same idea, hashed: raises the cost of zone enumeration (offline dictionary attacks against the hashes are still feasible; opt-out reduces exposure further). See RFC 5155.
CDS / CDNSKEYChild-published DS / DNSKEY for automated KSK rollover (RFC 7344)

Less common, still useful#

TypeUse
NAPTRURN/URI resolution and rewriting: ENUM (E.164 phone-to-URI), SIP service location, S-NAPTR application service discovery (RFC 3403)
LOCGeo location, mostly for fun (RFC 1876)
URIURI mapping (RFC 7553)
DNAMEAlias for an entire subtree: like CNAME but for everything under the owner name (RFC 6672)
SPF (as record type)Obsolete: use TXT instead (RFC 7208 §3.1)
HINFOHost info: historically a free CPU and OS leak. Now used by some servers as a synthetic minimal response to QTYPE=ANY queries per RFC 8482.

Effectively dead#

TypeWhy
WKSWell-Known Service: predates everything modern
RPResponsible Person: nobody uses it
AFSDBAFS-specific, nobody runs AFS
KEY / SIGFirst-generation DNSSEC (RFC 2535); RFC 3755 retired them in favor of DNSKEY / RRSIG, leaving KEY with only niche SIG(0) / TKEY uses
ATMAATM addresses. ATM as in the network technology.
GPOSPre-LOC location records

Try it now#

The commands below query live records so you can see each type in the wire. Every name resolves today, and every one except the PTR example carries DNSSEC signatures (the ad flag in the response means the resolver validated the chain). The PTR example's reverse zone, 1.1.1.in-addr.arpa, is unsigned (no DS at its parent), so that answer comes back without ad.

A record (IPv4 address):

dig @1.1.1.1 example.isitdns.net A
example.isitdns.net.    300    IN    A    192.0.2.1
nslookup example.isitdns.net 1.1.1.1
Name:    example.isitdns.net
Address: 192.0.2.1
Name:    example.isitdns.net
Address: 2001:db8::1

Bare nslookup with no -type= asks for both A and AAAA, which is why the IPv6 address shows up too.

AAAA record (IPv6 address):

dig @1.1.1.1 example.isitdns.net AAAA
example.isitdns.net.    300    IN    AAAA    2001:db8::1
nslookup -type=AAAA example.isitdns.net 1.1.1.1
Name:    example.isitdns.net
Address: 2001:db8::1

Format from a current BIND nslookup (9.18); older builds print example.isitdns.net has AAAA address 2001:db8::1 instead.

TXT record (arbitrary text, SPF/DKIM/DMARC/verification):

dig @1.1.1.1 txt.example.isitdns.net TXT +short
"It was DNS. It is always DNS."
nslookup -type=TXT txt.example.isitdns.net 1.1.1.1
txt.example.isitdns.net    text = "It was DNS. It is always DNS."

MX record (mail exchange):

dig @1.1.1.1 cloudflare.com MX +short
5 mxa-canary.global.inbound.cf-emailsecurity.net.
5 mxb-canary.global.inbound.cf-emailsecurity.net.
10 mxa.global.inbound.cf-emailsecurity.net.
10 mxb.global.inbound.cf-emailsecurity.net.
nslookup -type=MX cloudflare.com 1.1.1.1
cloudflare.com    mail exchanger = 5 mxa-canary.global.inbound.cf-emailsecurity.net.
cloudflare.com    mail exchanger = 5 mxb-canary.global.inbound.cf-emailsecurity.net.
cloudflare.com    mail exchanger = 10 mxa.global.inbound.cf-emailsecurity.net.
cloudflare.com    mail exchanger = 10 mxb.global.inbound.cf-emailsecurity.net.

Multi-record answers (MX here, NS below) come back in rotating order between queries. For MX, only the preference number decides priority, never the position in the list.

NS record (authoritative nameservers):

dig @1.1.1.1 isitdns.net NS +short
coleman.ns.cloudflare.com.
hera.ns.cloudflare.com.
nslookup -type=NS isitdns.net 1.1.1.1
isitdns.net    nameserver = coleman.ns.cloudflare.com.
isitdns.net    nameserver = hera.ns.cloudflare.com.

SOA record (zone metadata):

dig @1.1.1.1 isitdns.net SOA +short
coleman.ns.cloudflare.com. dns.cloudflare.com. 2409741473 10000 2400 604800 1800

The serial (2409741473 above) increments with every zone change; your output will show a different value.

nslookup -type=SOA isitdns.net 1.1.1.1
isitdns.net
        origin = coleman.ns.cloudflare.com
        mail addr = dns.cloudflare.com
        serial = 2409741473
        refresh = 10000
        retry = 2400
        expire = 604800
        minimum = 1800

The serial increments with every zone change; your output will show a different value.

CNAME record (alias):

dig @1.1.1.1 cname.example.isitdns.net CNAME +short
example.isitdns.net.
nslookup -type=CNAME cname.example.isitdns.net 1.1.1.1
cname.example.isitdns.net    canonical name = example.isitdns.net.

PTR record (reverse DNS, IP to name):

dig @1.1.1.1 -x 1.1.1.2
2.1.1.1.in-addr.arpa.    1800    IN    PTR    security.cloudflare-dns.com.

1800 is the TTL fresh from Cloudflare's authoritative server; a cached answer shows it counting down.

nslookup 1.1.1.2 1.1.1.1
2.1.1.1.in-addr.arpa    name = security.cloudflare-dns.com.

nslookup has no dedicated printer for CAA, SSHFP, TLSA, HTTPS/SVCB, or the DNSSEC RRTYPEs. It still decodes the record data, but labels it with a generic rdata_N = (the type number, e.g. rdata_257 for CAA) instead of the type name. Use dig if you want types called by name. See nslookup-and-dig for the full comparison.

DS record (DNSSEC chain link to parent zone):

dig @1.1.1.1 isitdns.net DS +short
2371 13 2 2DF8E1D4E0855DF60F2A8B51C914F2F2866ED1E3344F74F9682DAC4D 42D18802

nslookup prints this one as rdata_43 = 2371 13 2 ... rather than naming the DS type; dig is clearer.

The keytag 2371, algorithm 13 (ECDSAP256SHA256), and digest type 2 (SHA-256) tell a resolver how to verify the child zone's KSK is the one the parent trusts. See dnssec for what that chain means end-to-end.

CAA record (allowed certificate authorities):

dig @1.1.1.1 caa.example.isitdns.net CAA +short
0 issue "letsencrypt.org"

This queries the controlled single-record demo name. The isitdns.net apex carries a full multi-CA policy set that may drift over time; see caa for the live apex walkthrough and field semantics. nslookup prints this as rdata_257 = 0 issue "letsencrypt.org" rather than naming the CAA type. Use dig.


Cheat sheet TL;DR#

A      -> IPv4
AAAA   -> IPv6
CNAME  -> alias
MX     -> mail
NS     -> authoritative nameserver
SOA    -> zone metadata
TXT    -> policies (SPF/DKIM/DMARC, verification)
CAA    -> who can mint your certs
PTR    -> reverse
SRV    -> port + host for a named service
HTTPS  -> web hints (modern)
DS     -> DNSSEC chain link to your parent

See also: dig-along for hands-on every type · dig-flags for flag reference · nslookup-and-dig for tool comparison · query-types for recursive vs authoritative · fundamentals · reverse-dns for the .arpa story · dnssec for the signing chain