DNST-UPDATE(1)

πŸ“¦ version 0.2.0, in nixpkgs unstable

πŸ’… DNST-UPDATE (1) β€” the dnst girlies' guide to dynamic updates πŸ’…

okay so bestie, this is dnst-update, part of the dnst manual gang. it's a one-page glow-up for your DNS records β€” sending a dynamic update packet so you can update an IP (or yeet all the existing IPs) for a domain name. no cap. πŸ¦‹


✨ SYNOPSIS ✨

dnst update [OPTIONS] <DOMAIN NAME> <COMMAND>

dnst update [OPTIONS] <DOMAIN NAME> add <RRTYPE> [RDATA]...

dnst update [OPTIONS] <DOMAIN NAME> delete <RRTYPE> [RDATA]...

dnst update [OPTIONS] <DOMAIN NAME> clear <RRTYPE>

πŸŽ€ DESCRIPTION πŸŽ€

dnst update literally sends an RFC 2136 Dynamic Update message to the name servers for a zone, so it can add, update, or delete arbitrary Resource Records for a domain name. it's giving "I have a message and the name servers WILL hear it". πŸ’Œ

the message can optionally be authenticated using a given TSIG key β€” security, slay.

here's the trio, each one iconic in its own way:

  • dnst update [...] add adds the given RRs to the domain. 🫢
  • dnst update [...] delete deletes the given RRs from the domain. it can be used to delete individual RRs or a whole RRset. flexible queen.
  • dnst update [...] clear clears (deletes) all RRs of any type from the domain name. that's the nuclear option bestie, no crumbs left. πŸ’€

πŸ‘‘ ARGUMENTS πŸ‘‘

  • <DOMAIN NAME> β€” the domain name of the RR(s) to update. the main character.
  • <COMMAND> β€” which action to take: add, delete, or clear. pick your fighter.

🌸 OPTIONS: 🌸

  • -c, --class <CLASS> β€” Class. defaults to IN. the standard-issue vibe.
  • -t, --ttl <TTL> β€” TTL in seconds or with unit suffix (s, m, h, d). is only used by the add command and is otherwise ignored (sorry other commands, this one's not for you πŸ™ˆ). defaults to 3600.
  • -s, --server <IP> β€” the name server to send the update to. by default, the update will be sent to the list of name servers fetched from the zone's NS RRset as per RFC 2136. letting DNS do its own thing, we love to see it.
  • -z, --zone <ZONE> β€” the zone the domain name belongs to (to skip a SOA query). efficiency queen πŸ‘‘
  • -y, --tsig <NAME:KEY[:ALGO]> β€” TSIG credentials for the UPDATE packet πŸ”
  • --rrset-exists <DOMAIN_NAME_AND_TYPE> β€” require that at least one RR with the given NAME and TYPE exists. this option can be provided multiple times, with format <DOMAIN_NAME> <TYPE> each, to build up a list of RRs. if the domain name is relative, it will be relative to the zone's apex. [aliases: --rrset]
  • --rrset-exists-exact <RESOURCE_RECORD> β€” require that an RRset exists and contains exactly the RRs with the given NAME, TYPE, and RDATA. this option can be provided multiple times, each with one RR in zonefile format, to build up one or more RRsets that is required to exist. CLASS and TTL can be omitted. if the domain name is relative, it will be relative to the zone's apex. [aliases: --rrset-exact]
  • --rrset-non-existent <DOMAIN_NAME_AND_TYPE> β€” RRset does not exist. this option can be provided multiple times, with format <DOMAIN_NAME> <TYPE> each, to build up a list of RRs that specify that no RRs with a specified NAME and TYPE can exist. if the domain name is relative, it will be relative to the zone's apex. [aliases: --rrset-empty]
  • --name-in-use <DOMAIN_NAME> β€” name is in use. this option can be provided multiple times, with format <DOMAIN_NAME> each, to collect a list of NAMEs that must own at least one RR. ⚠️ note that this prerequisite is NOT satisfied by empty nonterminals. if the domain name is relative, it will be relative to the zone's apex. [aliases: --name-used]
  • --name-not-in-use <DOMAIN_NAME> β€” name is not in use. this option can be provided multiple times, with format <DOMAIN_NAME> each, to collect a list of NAMEs that must NOT own any RRs. ⚠️ note that this prerequisite IS satisfied by empty nonterminals (yes, opposite of the one above, keep up bestie πŸ’…). if the domain name is relative, it will be relative to the zone's apex. [aliases: --name-unused]
  • -h, --help β€” print the help text (short summary with -h, long help with --help). can also be used on the individual sub commands. your little cheat sheet πŸŽ€

🧚 ARGUMENTS FOR ADD AND DELETE 🧚

  • <RRTYPE> β€” the RR type to add or delete.
  • [RDATA]... β€” one or more RDATA arguments for add, and zero or more for delete.

each argument corresponds to a single RR's RDATA, so beware of (shell and DNS) quoting rules. fr fr, the quotes will humble you 😭

each RDATA argument will be parsed as if it was read from a zone file. examples, freshly served:

dnst update some.example.com add AAAA ::1 2001:db8::
dnst update some.example.com add TXT '"Spacious String" "Another
string for the same TXT record"' '"This is another TXT RR"'

look at that nesting. quoting within quoting. it's giving onion layers πŸ§…βœ¨


πŸ’– AUTHOR πŸ’–

NLnet Labs β€” icons, honestly.

2024–2026, NLnet Labs


lowkey the most important part: these facts are the facts, bestie. don't come for me if you typo a flag β€” the options above are exactly as the manpage says, character for character. πŸ’œ

okay that's the whole page!! mwah 🫢 this was dnst-update from the dnst manual, version 0.2.0-alpha2, dated May 15, 2026 β€” go forth and update dynamically, you gorgeous nerd. πŸŽ€πŸ”₯

πŸ“¦ where this page comes from