2015-12-01 4 views
0

У меня следующая ситуация:перехватчика трафика до перенаправления CNAME

пользователь подключается к домену: test.com

Я хотел бы этот домен для перенаправления, например, google.com

для этого я указал запись CNAME на google.com: WWW google.com (TTL: автоматический)

Будет ли возможность перехватить т raffic, который приходит на test.com, прежде чем он отправит на google.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 с запущенным скриптом узла. Пинг будет выполнен из окна 10 машины

ответ

2

В этой настройке вы не можете перехватить трафик на test.com, потому что он никогда не направлен на ваш сервер.

Когда клиент хочет подключиться к test.com, сначала пытается разрешить test.com в качестве IP-адреса, просматривая test.com «s DNS записи. У вас нет такой записи, но CNAME перенаправляется на запись A (или CNAME) www.google.com. В зависимости от того, был ли запрос DNS рекурсивным (и в подавляющем большинстве случаев он является рекурсивным), клиент либо получает IP-адрес www.google.com, либо ссылку CNAME, которую он затем следует.

Обратите внимание на то, как этот процесс разрешения всего имени происходит до того, как будет выполнено какое-либо соединение с вашим сервисом: CNAME просто заставляет клиента обойти любую службу, которую вы запускаете.

Основываясь на образце кода, вы просто хотите проксировать весь трафик, прибывающий на ваш сервер test.com, и это отличный способ перехватить трафик. Все, что вам нужно сделать, это не, чтобы использовать CNAME, поскольку он представляет собой пересылку на другом этапе сетевых подключений.

+0

Я хотел бы найти способ, которым я не должен проксировать службу, проксирование будет стоить слишком большой мощности сервера, потому что это для игры. –

+0

@MaximGeerinck: Ну, если вы хотите перехватить весь трафик, вам нужно получить полный трафик так или иначе. Если вы можете манипулировать клиентской сетью, это можно сделать либо на конечных точках, либо где-то посередине. Однако, если все, что вам нужно знать, заключается в том, пытался ли данный клиент подключиться к службе, может быть способ сделать это - дайте мне знать, в каком случае это так. – PeterK

+0

Спасибо за ваш ответ. В лучшем случае мне нужно будет знать первую часть трафика (например, имя пользователя, используемое для входа в систему).Но только знание того, хочет ли клиент подключиться, также является хорошим вариантом. –