@opsimathically/dnsinfo
v0.0.1
Published
Retrieve DNS and RDNS information from arbitrary servers.
Readme
DNSInfo
dnsinfo is a TypeScript package for forward DNS and reverse DNS discovery across one or more DNS resolvers.
It supports:
- Multiple resolvers in one request
- Per-resolver ports
- IPv4 and IPv6 resolver endpoints
- IPv4 and IPv6 lookup targets
- Results grouped by resolver, then target, then record type
Install
npm install @opsimathically/dnsinfoQuick Usage
Forward DNS Lookup (Multiple Resolvers)
import { GetDnsRecords } from '@opsimathically/dnsinfo';
async function ExampleForwardLookup(): Promise<void> {
const dns_results = await GetDnsRecords({
resolvers: [
{
resolver_id: 'google_ipv4',
resolver_host: '8.8.8.8',
resolver_port: 53
},
'[2001:4860:4860::8888]:53'
],
targets: ['example.com', '1.1.1.1', '2606:4700:4700::1111'],
record_types: ['A', 'AAAA', 'MX', 'TXT', 'PTR'],
timeout_ms: 3000,
max_retries: 1,
concurrency_limit: 25
});
console.log(JSON.stringify(dns_results, null, 2));
}
void ExampleForwardLookup();Reverse DNS Lookup (PTR)
import { GetReverseDnsRecords } from '@opsimathically/dnsinfo';
async function ExampleReverseLookup(): Promise<void> {
const reverse_dns_results = await GetReverseDnsRecords({
resolvers: ['1.1.1.1:53', '8.8.8.8:53'],
targets: ['8.8.8.8', '2001:4860:4860::8888'],
timeout_ms: 3000,
max_retries: 1,
concurrency_limit: 25
});
console.log(JSON.stringify(reverse_dns_results, null, 2));
}
void ExampleReverseLookup();Public API
GetDnsRecords(params)GetDnsRecordsFromResolvers(params)GetReverseDnsRecords(params)
Input types:
dns_lookup_request_treverse_dns_lookup_request_t
Output types:
dns_lookup_response_treverse_dns_lookup_response_t
Resolver Input Formats
Resolvers can be supplied in either format:
// Object form
{ resolver_id: 'quad9', resolver_host: '9.9.9.9', resolver_port: 53 }
// String form (IPv4/hostname)
'8.8.8.8:53'
'dns.example.net:53'
// String form (IPv6)
'[2001:4860:4860::8888]:53'Response Shape
Each response includes request timestamps and resolver_results.
Each resolver includes target_results.
Each target includes record_results with:
record_typestatus(success,empty,error)answerslatency_msqueried_aterror_codeanderror_messagewhen status iserror
Runtime Validation
The package validates incoming request payloads at runtime using zod schemas generated by ts-to-zod.
To regenerate schemas:
npm run ts-to-zodBuild and Test
npm run test
npm run buildAdditional Examples
test/dns_lookup/index.test.ts
