Node.js - перенаправить весь трафик с порта A на порт B
Я пытаюсь перенаправить весь трафик с порта 6999 на порт 7000 (я знаю, что могу использовать iptables, но идея заключается в использовании Node.js для проверки пакетов).
Вот код, который у меня есть:
var net=require('net');
var compress=require('./node-compress/compress');
var ip='172.16.1.224';
var ipPort=6999;
var opPort=7000;
var output=net.createServer(function(connOut){
var input=net.createServer(function(connIn){
connIn.pipe(connOut);
});
input.listen(ipPort,ip);
});
output.listen(opPort,ip);
Он просто не работает. Когда я делаю tcpdump на порте 7000, ничего не появляется. У кого-нибудь есть предложения?
Большое спасибо заранее,
Ответы
Ответ 1
Вот мой ход:
Поддерживает предоставление "от" и "до" из командной строки и поддерживает удаленные машины.
var net = require('net');
// parse "80" and "localhost:80" or even "42mEANINg-life.com:80"
var addrRegex = /^(([a-zA-Z\-\.0-9]+):)?(\d+)$/;
var addr = {
from: addrRegex.exec(process.argv[2]),
to: addrRegex.exec(process.argv[3])
};
if (!addr.from || !addr.to) {
console.log('Usage: <from> <to>');
return;
}
net.createServer(function(from) {
var to = net.createConnection({
host: addr.to[2],
port: addr.to[3]
});
from.pipe(to);
to.pipe(from);
}).listen(addr.from[3], addr.from[2]);
(сохранить как proxy.js)
Переслать с localhost: 9001 = > localhost: 80
$ node proxy.js 9001 80
Или localhost: 9001 = > otherhost: 80
$ node proxy.js 9001 otherhost:80
(Это было основано на ответе Андрея, спасибо!)
Ответ 2
вам нужно иметь createConnection с одной стороны. Вот script, который я использую для пересылки трафика
var net = require('net');
var sourceport = 1234;
var destport = 1235;
net.createServer(function(s)
{
var buff = "";
var connected = false;
var cli = net.createConnection(destport);
s.on('data', function(d) {
if (connected)
{
cli.write(d);
} else {
buff += d.toString();
}
});
cli.on('connect', function() {
connected = true;
cli.write(buff);
});
cli.pipe(s);
}).listen(sourceport);
Ответ 3
Вы просмотрели модуль Node.js Hoxy?
http://www.youtube.com/watch?v=2YLfBTrVgZU
Краткое описание разработчика README:
Hoxy - это веб-хакерский прокси для Node.js, предназначенный для использования веб-разработчиками. Используя hoxy, вы можете действовать как "человек посередине" и изменять HTTP-запросы и ответы по мере их прохождения на основе набора условных правил. В качестве запущенного процесса hoxy в противном случае ведет себя как автономный прокси-сервер. Hoxy был вдохновлен как способ дополнения отладчиков, таких как Firebug, которые позволяют вам управлять временем выполнения клиента, но не основным HTTP-разговором.
Это должно работать очень хорошо, если вы не ищете более низкий уровень, пакет для пакетной проверки данных.