我正在尝试将所有流量从端口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时,什么都没有显示。有人有什么建议吗?
提前谢谢了,
这是我的努力:
支持从命令行提供“从”和“到”,并支持远程计算机。
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
(这是基于安德烈的回答,谢谢!)