djbdns
[Top] [All Lists]

Minimal DNS answer using Net::DNS

To: dns@list.cr.yp.to
Subject: Minimal DNS answer using Net::DNS
From: "Kelly Jones" <kelly.terry.jones@gmail.com>
Date: Wed, 20 Dec 2006 08:20:13 -0700
Delivered-to: sp-com-lists@consult.net
Delivered-to: gmail-djbdns@securepoint.com
Delivered-to: sp.com.list@gmail.com
Delivered-to: mailing list dns@list.cr.yp.to
Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; b=MNthNfZaCbN5N3VxHg6xR00w1rDflSNOrYgmzYxNqmZKU4V3zTRQk9Et1ia9wop4NCVJJxuRuj9plr+D2ghRJV1tn4xIWyNNf7/f8Oe1XMrh9aJAIBUV7kW/259LSiT1vkTfpVJVC3d9ycUQs3BM6eUDmCi5NgvG0qeO6FMgjDw=
Domainkey-status: good (test mode)
Mailing-list: contact dns-help@list.cr.yp.to; run by ezmlm
I've used xinetd to set up a test nameserver on port 1024. Here's the
Net::DNS Perl I'm using to say (falsely) that news.yahoo.com resolves
to 10.1.2.3 with a TTL of 1 day:

$res = Net::DNS::Packet->new();
$rr = Net::DNS::RR->new("news.yahoo.com. 86400 A 10.1.2.3");
$res->push(answer => $rr);
print $res->data;

According to Net::DNS, here's the prettyprint version of the packet I create:

;; HEADER SECTION
;; id = 26432
;; qr = 0    opcode = QUERY    aa = 0    tc = 0    rd = 1
;; ra = 0    ad = 0    cd = 0    rcode  = NOERROR
;; qdcount = 1  ancount = 1  nscount = 0  arcount = 0

;; QUESTION SECTION (1 record)
;; .    IN      A

;; ANSWER SECTION (1 record)
news.yahoo.com. 86400   IN      A       10.1.2.3

;; AUTHORITY SECTION (0 records)

;; ADDITIONAL SECTION (0 records)

It's ugly and minimal, but is it a valid DNS answer? Does the question
section actually have to contain the question asked or is that
optional?

When I try using dig to test, I get this error:

dig -p 1024 @localhost news.yahoo.com

; <<>> DiG 9.3.1 <<>> -p 1024 @localhost news.yahoo.com
; (1 server found)
;; global options:  printcmd
;; connection timed out; no servers could be reached

My debug logs show that my test nameserver is called thrice (dig tries
3 times by default?) with this packet (prettyprinted below):

;; HEADER SECTION
;; id = 41909
;; qr = 0    opcode = QUERY    aa = 0    tc = 0    rd = 1
;; ra = 0    ad = 0    cd = 0    rcode  = NOERROR
;; qdcount = 1  ancount = 0  nscount = 0  arcount = 0

;; QUESTION SECTION (1 record)
;; news.yahoo.com.      IN      A

;; ANSWER SECTION (0 records)

;; AUTHORITY SECTION (0 records)

;; ADDITIONAL SECTION (0 records)

I did notice the packet dig sends has id=41909 and my response has
id=26432-- is that a problem?

I'm pretty sure the problem isn't with xinetd and that dig is getting
my response packet-- it just doesn't seem to like it for some reason.

--
We're just a Bunch Of Regular Guys, a collective group that's trying
to understand and assimilate technology. We feel that resistance to
new ideas and technology is unwise and ultimately futile.

<Prev in Thread] Current Thread [Next in Thread>