すべてのトラフィックをポート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);
うまくいかないようです。ポート7000でtcpdumpを実行すると、何も表示されません。誰か提案がありますか?
よろしくお願いします。
これが私の試みです:
コマンドラインからの「from」と「to」の指定をサポートし、リモートマシンをサポートします。
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
(これはアンドレイの答えに基づいていました、ありがとう!)
片側にcreateConnectionが必要です。これがトラフィックの転送に使用するスクリプトです
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);
Node.jsモジュールを見たことがありますか Hoxy ?
http://www.youtube.com/watch?v=2YLfBTrVgZ
開発者のREADMEからの簡単な説明:
Hoxyは、node.jsのWebハッキングプロキシであり、Web開発者による使用を目的としています。 hoxyを使用すると、一連の条件付きルールに基づいて、「中間者」として機能し、HTTP要求と応答が流れるときにそれらを変更できます。実行中のプロセスとして、hoxyはそれ以外の場合はスタンドアロンのプロキシサーバーのように動作します。 Hoxyは、Firebugのようなデバッガーを補完する方法として着想を得ました。これにより、クライアントランタイムを操作できますが、基になるHTTP会話は操作できません。
これは、データの低レベルのパケット間検査を探しているのでない限り、かなりうまく機能するはずです。