tjfontaine / node-dns

Replacement dns module in pure javascript for node.js
MIT License
585 stars 154 forks source link

Insufficient handling of an interface that has several IPs #120

Open mohemiv opened 7 months ago

mohemiv commented 7 months ago

Let's create a simple DNS server:

#!/usr/bin/env node

var dns = require('native-dns');
var dns_server = dns.createServer();

dns_server.on('request', function(request, response) {
    try {
        console.log(request.question);

        response.answer.push(dns.TXT({
            name: request.question[0].name,
            data: ['TXT TXT TXT'],
            ttl: 30,
        }));

        response.send();
    } catch (e) {}
});

dns_server.on('error', function(err, buff, req, res) {
    console.log(err.stack);
});

dns_server.serve(53);

Now the address 0.0.0.0:53 will be bound.

If 0.0.0.0 corresponds to two IP addresses, for example 10.0.0.2 and 10.0.0.3, the code wouldn't handle this situation properly. It will receive DNS queries for 10.0.0.2 and 10.0.0.3, but will not properly respond to queries for 10.0.0.3.