nodejs简单实现端口映射(隧道)
来个万能的javascript代码,实现端口映射。前端electron桌面软件也可以用到。
【port.js】
var net = require('net'); 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); from.on('end', function() { console.log('客户端关闭连接'); }); from.on('data', function() { console.log("11"); }); from.on('error', function() { console.log("error"); }); }).listen(addr.from[3], addr.from[2]).on('error', function() { console.log("error"); });
node port.js 1234 外网ip:80
node port.js 1234 内网ip:80
其实前面介绍过一个远程管理工具的开发,为什么没有放出代码呢?你看我先前发布的内容,图片打码了,因为暴露了我的服务器信息,那个版本内部用还行,给别人用还要做很多工作保护自己的服务器。这里的端口映射再优化一下或许可以用在我的远程工具上。远程的时候先连一个暴露的自己本机的端口,这个端口在隧道到服务器。