isitdns? wiki/Zones/Stub zones
Zones

🪵 Stub zones

Asks for the nameservers a stub zone would hold for a child zone.

 dig @1.1.1.1 probe.isitdns.net NS
; <<>> DiG 9.20.11-0ubuntu0.2-Ubuntu <<>> @1.1.1.1 probe.isitdns.net NS
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29759
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;probe.isitdns.net. IN NS
;; ANSWER SECTION:
probe.isitdns.net. 5 IN NS pns2.isitdns.net.
;; Query time: 157 msec
;; SERVER: 1.1.1.1#53(1.1.1.1) (UDP)
;; WHEN: Mon Sep 14 17:42:32 CDT 2026
;; MSG SIZE rcvd: 65

GO NOERROR and the child nameservers

NO GO NXDOMAIN, which means there is no such child zone to stub

run this query in the dig tool →

what each part of this output means →

What it is#

A stub zone holds only:

That's it. When a resolver gets a query for a name inside a stub zone, it goes straight to the authoritative servers on the stub's NS list, skipping the full . → TLD → zone hierarchy walk.

It polls the master servers on the zone's SOA refresh timer to keep that NS list current, the same schedule a secondary uses; BIND clamps that interval between min-refresh-time (default 300 seconds) and max-refresh-time (default 4 weeks) for both zone types (BIND 9 ARM, min-refresh-time). NOTIFY does not update a stub: BIND's allow-notify only applies to secondary and mirror zones.

Stub zones are not defined in any RFC: "Stub zones are not a standard part of the DNS; they are a feature specific to the BIND implementation" (BIND 9 ARM, Zone Types). BIND (type stub;), Microsoft DNS (a stub zone in DNS Manager, Understanding Zone Types) and Unbound (stub-zone:, unbound.conf(5)) each implement the same idea under their own syntax.

When to use it#

  • Cross-team / cross-org referrals where you want fast resolution into a peer's zone without operating as a secondary.
  • Speeding up lookups into a frequently-queried external zone. Skip the recursion walk, hit the authoritative directly.
  • Tracking NS changes automatically. If the target zone changes its NS list, a stub picks that up via SOA refresh: a forward zone with hard-coded forwarder IPs doesn't.

When not to use it#

  • When you want to act as a secondary copy of the whole zone: use a real secondary (which transfers all records).
  • When you don't want clients to talk to the authoritative servers at all: use forward instead. (A stub uses the upstream NS; a forward talks through your resolver to the upstream.)
  • When you own the records: use auth.
  • BIND's own docs discourage it outright: "Use of stub zones is not recommended. Proper delegation with NS records in the parent zone should be used" (BIND 9 ARM, stub zone type).

Gotchas#

  • Not a copy of the data. A stub caches NS + SOA only. If the authoritative NS list goes stale, your resolver keeps querying dead servers until the next SOA refresh picks up the new one.
  • You cannot stub a zone you are authoritative for (in the same view): Microsoft DNS refuses to host a stub zone on a server that is already authoritative for it (Add a Stub Zone), and BIND will not load two zones with the same name in one view.

See also#

  • transfer: how stub differs from a real secondary