我有以下情况:
用户连接到域: 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机器
执行答案 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,因为它表示在网络连接的不同阶段进行转发。