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
var named = require('./lib/index');
var server = named.createServer();
var ttl = 300;
server.listen(9999, '127.0.0.1', function() {
console.log('DNS server started on port 9999');
});
server.on('query', function(query) {
var domain = query.name();
console.log('DNS Query: %s', domain)
var target = new SOARecord(domain, {serial: 12345});
query.addAnswer(domain, target, ttl);
server.send(query);
});
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', 'TXT, 'SRV'. It is important to remember that these DNS records are not permanently added to the server. They only exist fo the length of the particular request. After that, they are destroyed. This means you have to create your own lookup mechanism.var named = require('node-named');
var soaRecord = named.SOARecord('example.com', {serial: 201205150000});
console.log(soaRecord);
Supported Record Types
The following record types are supportedA (ipv4) AAAA (ipv6) CNAME (aliases) SOA (start of authority) MX (mail server records) TXT (arbitrary text entries) SRV (service discovery)