Hardcoded seeds, DNS seeds and Darknet nodes

Posted by virtu

Sep 11, 2024/07:43 UTC

The email discusses a technical solution for querying DNS records without the need for adding a dependency library, specifically addressing the limitations of getaddrinfo which only returns A and AAAA records. The author shares their insights gained from writing a seeder, noting that DNS queries can be refreshingly straightforward. To illustrate this point, a C++ code snippet is provided to demonstrate how to send and receive a NULL query, a task deemed necessary due to getaddrinfo's limitations.

The C++ code outlined includes several key components crucial for constructing and executing a DNS query. Initially, it defines two structures: DNSHeader and DNSQuestion, which are essential for forming the DNS query. The DNSQuestion structure includes a method to convert a domain name into the DNS format, which involves prefixing each part of the domain with its length and terminating it with a null byte. This formatting is critical for DNS queries as it adheres to the protocol's requirements.

To demonstrate a practical example, the code sets up a DNS query for the domain "dnsseed.21.ninja" using a specified nameserver's IP address. It meticulously constructs the query by initializing a DNS header with specific flags indicating a desire for recursion and appending a DNS question formatted according to the DNS protocol. The question specifies a NULL record type, showcasing how to query types other than the standard A and AAAA records mentioned earlier.

The process involves creating a UDP socket, sending the formatted query to the specified nameserver, and then waiting for a response. Upon receiving a reply, the code outputs details about the sent query and the received reply, including sizes and header IDs, demonstrating the round-trip communication involved in DNS querying.

This example not only highlights the simplicity and directness of DNS queries when handled at a lower level but also serves as an educational tool for understanding the mechanics of DNS communication beyond the conventional use of higher-level libraries or functions that abstract these details away.

Link to Raw Post
Bitcoin Logo

TLDR

Join Our Newsletter

We’ll email you summaries of the latest discussions from authoritative bitcoin sources, like bitcoin-dev, lightning-dev, and Delving Bitcoin.

Explore all Products

ChatBTC imageBitcoin searchBitcoin TranscriptsSaving SatoshiBitcoin Transcripts Review
Built with 🧡 by the Bitcoin Dev Project
View our public visitor count

We'd love to hear your feedback on this project?

Give Feedback