dig before you write anything off as propagation.
Why waiting for propagation is the wrong diagnosis
The chicken-and-egg problem glue solves
What WHM settings do and don't do
- Register ns1.example.com and ns2.example.com as child nameservers under example.com, each with its server's IP address. This step creates the glue.
- Set those hostnames as the nameservers for example.com and for any other domains that should use them. This step creates the delegation.
Checking delegation and glue at the registry with dig
BASH
# Follow the delegation chain from the root servers down
dig +trace example.com
# Find the authoritative servers for a TLD other than .com/.net
dig org NS +shortBASH
# Ask a .com TLD server what it publishes for the domain (read-only)
dig @a.gtld-servers.net example.com NS +norecTEXT
;; AUTHORITY SECTION:
example.com. 172800 IN NS ns1.example.com.
example.com. 172800 IN NS ns2.example.com.
;; ADDITIONAL SECTION:
ns1.example.com. 172800 IN A 192.0.2.10
ns2.example.com. 172800 IN A 198.51.100.20dig @192.0.2.10 example.com SOA +norec. You should get an authoritative answer, shown by the aa flag in the header. If it times out, the problem is on the server side: the DNS service isn't running, it's bound to the wrong address, or a firewall is blocking port 53 over UDP or TCP. Glue can't fix that.
Mistakes that survive the first fix
A practical order of checks
dig +trace to see where the chain breaks. Query the TLD server with +norec and confirm that the AUTHORITY section lists your nameservers and the ADDITIONAL section carries the right IPs for them. Then query your own nameserver by IP and look for an authoritative answer. If the glue is missing, register the child nameservers at the registrar. If it's wrong, correct it there too. If the registry data is right and your server answers properly, then caching is what you're waiting on, and now you know that for certain.