# lts-dns-server-lib

> DNS server library for node.js

Latest version **0.1.6** (published 2021-08-17) · MIT license · 0 weekly downloads

## Install

```sh
npm install lts-dns-server-lib
pnpm add lts-dns-server-lib
yarn add lts-dns-server-lib
bun add lts-dns-server-lib
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.6 |
| Published | 2021-08-17 |
| First published | 2021-08-16 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=0.6 |
| Dependencies | 2 |
| Unpacked size | 80.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | leo |
| Maintainers | longyueli |

## Links

- npm: https://www.npmjs.com/package/lts-dns-server-lib
- Repository: https://github.com/daqnext/node-named
- Homepage: https://github.com/daqnext/node-named#readme
- Issues: https://github.com/daqnext/node-named/issues
- npm.io page: https://npm.io/package/lts-dns-server-lib

## Dependencies (2)

- [bunyan](https://npm.io/package/bunyan.md) 0.7.0
- [ipaddr.js](https://npm.io/package/ipaddr.js.md) 0.1.1

## Recent versions

- 0.1.6 (latest) — 2021-08-17
- 0.1.5 — 2021-08-16
- 0.1.4 — 2021-08-16
- 0.1.3 — 2021-08-16
- 0.1.1 — 2021-08-16
- 0.1.0 — 2021-08-16

## README

# node-named - DNS Server in Node.js

Node-named is a lightweight DNS server written in pure javascript. It has
limited support for the DNS spec, but aims to implement all of the *common*
functionality that is in use today. 


## Creating a DNS Server
```javascript
var named = require('./lib/index');
var server = named.createServer();
var ttl = 300;

server.listen(53, '0.0.0.0', function() {
  console.log('DNS server started on port 53');
});

server.on('query', function(query) {
  var domain = query.name();
  console.log('DNS Query: %s', domain)
  var target = new named.SOARecord(domain, {serial: 12345});
  query.addAnswer(domain, target, ttl);
  server.send(query);
});

server.on('error', function(e) {
  console.log('server error', e);
});
```

## Set Authoritative AA bit for all server responses

Start the server with the `authoritative` option set to 1.
```
var server = named.createServer({authoritative: 1});
```
## Creating DNS Records

node-named provides helper functions for creating DNS records. 
The records are available under 'named.record.NAME' where NAME is one
of ['A', 'AAAA', 'CNAME', 'SOA', 'MX', 'NS', 'TXT, 'SRV']. It is important to 
remember that these DNS records are not permanently added to the server. 
They only exist for the length of the particular request. After that, they are
destroyed. This means you have to create your own lookup mechanism.
```javascript
var named = require('node-named');
    
var soaRecord = new named.SOARecord('example.com', {serial: 201205150000});
console.log(soaRecord);
```
### Supported Record Types

The following record types are supported

 * A (ipv4)
 * AAAA (ipv6)
 * CNAME (aliases)
 * SOA (start of authority)
 * MX (mail server records)
 * NS (nameserver entries)
 * TXT (arbitrary text entries)
 * SRV (service discovery)

## Logging

node-named uses [http://github.com/trentm/node-bunyan](bunyan) for logging.
It's a lot nicer to use if you npm install bunyan and put the bunyan tool in
your path. Otherwise, you will end up with JSON formatted log output by default.

### Replacing the default logger

You can pass in an alternate logger if you wish. If you do not, then it will use
bunyan by default. Your logger must expose the functions 'info', 'debug',
'warn', 'trace', 'error', and 'notice'.

### TODO

 * Better record validation
 * Create DNS client for query recursor
 * Add support for PTR records
 * Add support for TCP AXFR requests

---
_Source: https://npm.io/package/lts-dns-server-lib · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
