Node.js - 将所有流量从端口A转发到端口B. [英] Node.js - forward all traffic from port A to port B

查看:173
本文介绍了Node.js - 将所有流量从端口A转发到端口B.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将所有流量从端口6999转发到端口7000(我知道我可以使用iptables,但我的想法是使用Node.js进行一些数据包检查)。

I'm trying to forward all traffic from port 6999 to port 7000 (I know I could use iptables, but the idea is to use Node.js to do some packet inspection).

以下是我的代码:

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时,没有任何显示。有人有什么建议吗?

It just does not seem to work. When I do a tcpdump on port 7000, nothing shows up. Anyone have any suggestions?

非常感谢提前,

推荐答案

这是我的理由:

支持从命令行提供from和to,并支持远程机器。

Supports giving the "from" and "to" from command line, and supports remote machines.

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)

(save as proxy.js)

从localhost转发:9001 => localhost:80

To forward from localhost:9001 => localhost:80

$ node proxy.js 9001 80

或localhost:9001 => otherhost:80

Or localhost:9001 => otherhost:80

$ node proxy.js 9001 otherhost:80

(这是基于Andrey的回答,谢谢!)

(This was based on Andrey's answer, thanks!)

这篇关于Node.js - 将所有流量从端口A转发到端口B.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆