Javascript 使用node.js服务器欺骗IP?

Javascript 使用node.js服务器欺骗IP?,javascript,node.js,Javascript,Node.js,我正在为Minecraft服务器编写代理,希望能够转发原始用户的IP地址。问题是,通过“代理”,可以看到代理的IP。我知道这是代理背后的想法,但我想保留原始发件人的IP,并将其转发到另一个IP 我目前的代码 var net = require('net'); var sourceport = 25555; var destport = 25565; function bufferTrim(buf, trm){ var len = buf.length; return buf.

我正在为Minecraft服务器编写代理,希望能够转发原始用户的IP地址。问题是,通过“代理”,可以看到代理的IP。我知道这是代理背后的想法,但我想保留原始发件人的IP,并将其转发到另一个IP

我目前的代码

var net = require('net');

var sourceport = 25555;
var destport = 25565;

function bufferTrim(buf, trm){
    var len = buf.length;
    return buf.slice(0, len-trm);
}

net.createServer(function(s)
{
    var buff = "";
    var connected = false;
    var cli = net.createConnection(destport);

    s.on('data', function(d) {
        var hex = d.toString('hex').substr(0,2);
        if (connected)
        {
            if (hex == "fe")
            {
                var sName = "Faker";
                var sMaxSlots = "8";
                var sUsedSlots = "0";
                s.write(bufferTrim(new Buffer(String.fromCharCode(0xFF).concat(String.fromCharCode(sName.length + sMaxSlots.length + sUsedSlots.length + 2)).concat(sName).concat(String.fromCharCode(0xA7)).concat(sUsedSlots).concat(String.fromCharCode(0xA7)).concat(sMaxSlots), 'ucs2'), 1));
            } else {
                cli.write(d);
            }
        } else {
            buff += d.toString();
        }
    });

    cli.on('connect', function() {
        connected = true;
        cli.write(buff);
    });
    cli.pipe(s);
}).listen(sourceport);

考虑到TCP/IP的工作原理,我认为这是不可能的。你不能在IP层伪造IP地址,我相信这个地址是服务器看到的,而不是更高级别的。啊,好的。正是这篇文章让我相信这是可能的;主要是因为数据包将被直接重新路由到它们,所以您可以通过半标准HTTP报头公布“所需”的IP地址,但不能使代理不可见。谷歌
X-FORWARDED-FOR
如果我这么想的话。@JanDvorak我不认为Minecraft会在它的协议中寻找这个头。正如链接的答案所说,如果你发送一个带有外来源IP地址的IP包,你永远不会得到响应。你使用地址的那个人会,他会很困惑。