awl(1)

A simple DNS client

awl is a simple DNS query client, much like dig and drill.

❯ awl NS froth.zone @https://dns.froth.zone/dns-query
;; opcode: QUERY, status: NOERROR, id: 46274
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 8

;; QUESTION SECTION:
;froth.zone.    IN       NS

;; ANSWER SECTION:
froth.zone.     1650    IN      NS      illya.froth.zone.
froth.zone.     1650    IN      NS      rin.froth.zone.
froth.zone.     1650    IN      NS      sakura.froth.zone.
froth.zone.     1650    IN      NS      saber.froth.zone.

;; ADDITIONAL SECTION:
rin.froth.zone. 1650    IN      AAAA    2607:5300:201:3100::931b
sakura.froth.zone.      1650    IN      AAAA    2001:41d0:304:200::d12b
saber.froth.zone.       1650    IN      AAAA    2602:fe90:100:2::164d:4c70
illya.froth.zone.       1650    IN      AAAA    2603:c020:4004:62ee::8888
rin.froth.zone. 1650    IN      A       158.69.1.114
sakura.froth.zone.      1650    IN      A       141.94.206.97
saber.froth.zone.       1650    IN      A       45.13.232.162
illya.froth.zone.       1650    IN      A       129.213.157.255

;; Query time: 404.9936ms
;; SERVER: https://dns.froth.zone/dns-query
;; WHEN: Never
;; MSG SIZE  rcvd: 489

awl understands DNSSEC, like drill(1):

❯ awl brokendnssec.net @1.1.1.1 --tcp
;; opcode: QUERY, status: SERVFAIL, id: 45766
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;brokendnssec.net.      IN       A

;; Query time: 6.0461ms
;; SERVER: 1.1.1.1:53 (TCP)
;; WHEN: Never
;; MSG SIZE  rcvd: 34
❯ awl brokendnssec.net @1.1.1.1 --cd +tcp
;; opcode: QUERY, status: NOERROR, id: 37917
;; flags: qr rd ra cd; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;brokendnssec.net.      IN       A

;; ANSWER SECTION:
brokendnssec.net.       294     IN      A       172.67.36.129
brokendnssec.net.       294     IN      A       104.22.35.212
brokendnssec.net.       294     IN      A       104.22.34.212

;; Query time: 8.4461ms
;; SERVER: 1.1.1.1:53 (TCP)
;; WHEN: Never
;; MSG SIZE  rcvd: 130

It supports many of the flags that dig(1) does:

❯ awl +noquestion +noauthority +nostats cat-v.org
;; opcode: QUERY, status: NOERROR, id: 39675
;; flags: qr rd ra; QUERY: 0, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; ANSWER SECTION:
cat-v.org.      9418    IN      A       168.235.69.224

And some new features, too!

❯ awl +quic --xml codeberg.org
<Msg>
  <Id>22108</Id>
  <Response>true</Response>
  <Opcode>0</Opcode>
  <Authoritative>false</Authoritative>
  <Truncated>false</Truncated>
  <RecursionDesired>true</RecursionDesired>
  <RecursionAvailable>true</RecursionAvailable>
  <Zero>false</Zero>
  <AuthenticatedData>false</AuthenticatedData>
  <CheckingDisabled>false</CheckingDisabled>
  <Rcode>0</Rcode>
  <Compress>false</Compress>
  <Question>
    <Name>codeberg.org.</Name>
    <Qtype>1</Qtype>
    <Qclass>1</Qclass>
  </Question>
  <Answer>
    <Hdr>
      <Name>codeberg.org.</Name>
      <Rrtype>1</Rrtype>
      <Class>1</Class>
      <Ttl>3600</Ttl>
      <Rdlength>4</Rdlength>
    </Hdr>
    <A>193.26.156.135</A>
  </Answer>
</Msg>

A full list of the features awl supports can be found here.