在CNAME重定向之前拦截流量

时间:2015-12-01 15:16:29

标签: node.js ubuntu dns cname

我有以下情况:

用户连接到域: test.com

我希望此域名重定向到 google.com

要做到这一点,我已将一条CNAME记录指向google.com:www google.com(TTL:自动)

是否有可能在发送到google.com之前拦截test.com上的流量? (自定义协议,而不是http或https)

我找到了一个名为:native-dns的库,我认为它可能会托管一个dns服务器?

我配置如下:

"use strict";

var dns = require('native-dns'),
  tcpserver = dns.createTCPServer(),
  server = dns.createServer();

var onMessage = function (request, response) {
  console.log('request from:', request.address);
  var i;
  response.additional.push(dns.CNAME({
    name: 'www.mydomain.com',
    data: 'otherdomain.com'
  }));
  response.additional.push(dns.NS({
    name: 'ns1.mydomain.com',
    data: '127.0.0.1'
  }));

  response.send();
};

var onError = function (err, buff, req, res) {
  console.log(err.stack);
};

var onListening = function () {
  console.log('server listening on', this.address());
  //this.close();
};

var onSocketError = function (err, socket) {
  console.log(err);
};

var onClose = function () {
  console.log('server closed', this.address());
};

server.on('request', onMessage);
server.on('error', onError);
server.on('listening', onListening);
server.on('socketError', onSocketError);
server.on('close', onClose);

server.serve(53, '127.0.0.1');

我想知道的是我如何才能真正使这个DNS服务器正常运行。我想ping www.mydomain.com并获得otherdomain.com作为答案。

目前我正在使用运行节点脚本的ubuntu服务器。 ping将从Windows 10机器

执行

1 个答案:

答案 0 :(得分:2)

在此设置中,您无法拦截 test.com 上的流量,因为它永远不会定向到您的服务器。

当客户端想要连接到 test.com 时,首先会通过查找 test.com <尝试将 test.com 解析为IP地址/ em>的DNS A记录。您没有此类记录,但CNAME重定向到 www.google.com 的A记录(或CNAME)。根据DNS请求是递归的(在绝大多数情况下,递归),客户端要么接收 www.google.com 的IP地址,要么然后是CNAME引用。

注意在完成与服务的任何连接之前,整个名称解析过程是如何发生的:CNAME只是让客户端绕过您运行的任何服务。

根据代码示例,您只想将到达 test.com 服务器的所有流量代理到Google,这是拦截流量的绝佳方式。您所要做的就是使用CNAME,因为它表示在网络连接的不同阶段进行转发。