soans
TypeScript icon, indicating that this package has built-in type declarations

1.0.10 • Public • Published

soans (SOA-based NS Lookup)

Find NS records in the DNS Hierarchy by discovering and directly querying SOA records.

Note: This library uses direct UDP/TCP communications to the Authorities so DNS caching is avoided and results are provided nearly immediately after records are added.

This library will take a given domain and walk through each of the subdomains finding SOA records ("authorities") then check each authority for the existence of an NS record.

For example, a domain of foo.bar.baz.scaffold.ly will do the following:

  • Find SOA (if any) on:
    • bar.baz.scaffold.ly
    • baz.scaffold.ly
    • scaffold.ly
    • ly (TLDs fetch NS records)
  • Then for each valid SOA, find the first with NS records.
    • In the event the SOA record reports NS records (e.g. records have been added but the zone doesn't exist yet) return those NS records

CLI

$ npx soans scaffold.ly
ns-1014.awsdns-62.net
ns-1219.awsdns-24.org
ns-1914.awsdns-47.co.uk
ns-234.awsdns-29.com

Installation

yarn:

yarn add soans

npm:

npm install --save soans

Usage

import { NsLookup } from 'soans';

(await NsLookup('facebook.com')).addresses;
// ["a.ns.facebook.com","b.ns.facebook.com","d.ns.facebook.com","c.ns.facebook.com"]

(await NsLookup('asdf.facebook.com')).addresses;
// Throws NoNameserversError

(await NsLookup('doesnotexist.doesnotexist')).addresses;
// Throws NoAuthoritiesError

(await NsLookup('facebook.com', { proto: 'tcp', defaultDns: '8.8.8.8' })).addresses;
// ["a.ns.facebook.com","b.ns.facebook.com","d.ns.facebook.com","c.ns.facebook.com"]

Options

proto:

Set the default protocol, either tcp or udp. If tcp fails, fall back to udp.

Default: udp

defaultDns:

Set the default DNS to use for authoratitive lookups.

Default: one.one.one.one

Issues

Create an issue in GitHub issues for this repostiory.

Authors

Christian Nuss

Sponsored By

Scaffoldly

License

MIT

Package Sidebar

Install

npm i soans

Weekly Downloads

1

Version

1.0.10

License

MIT

Unpacked Size

57.7 kB

Total Files

24

Last publish

Collaborators

  • cnuss