Protocol Tweaks
dog hides several obscure DNS options behind the -Z
argument.
aa
— Ask for authoritative answers only
Activating this option sets the AA
(Authoritative Answer) flag on each request.
dog example.com -Z aa
ad
— Ask for authentic data only
Activating this option sets the AD
(Authentic Data) flag on each request.
dog example.com -Z ad
bufsize
— Set EDNS UDP packet size
This option sets the maximum UDP packet size field of the OPT record that is sent.
This option takes a value that’s a number after an equals sign.
dog example.com -Z bufsize=4096
cd
— Disable checking
Activating this option sets the CD
(Checking Disabled) flag on each request.
dog example.com -Z cd
Custom record types and classes
dog knows about the most common record types (such as A or OPT) and classes (such as IN or CH). If you want to use types or classes that dog doesn’t know about, simply pass their number as a command-line argument.
dog example.com -t 1234
dog example.com --class 666
EDNS and OPT records
The DNS protocol has been formally extended by RFC 6891. Because the protocol was in common use by this point, it was impossible to simply add new flags or sections without becoming backwards-incompatible. So instead, the presence of an OPT record in the request or the response contains these new fields. If no record is sent in the query, then none will be sent in the response, making it opt-in.
dog’s default behaviour is to send the OPT record in the query and hide it from the response. Because a conforming DNS server will put one in every response, it often ends up being irrelevant to the actual record being requested.
The --edns
option controls how to handle OPT records:
disable
: Don’t send the OPT record as part of the request.hide
: Send the OPT record, but don’t display it in the response. This is the default.show
: Send the OPT record and display it in the response.
dog example.com --edns show