使用nodejs做端口转发

作者: admin 日期: 2019-07-02 10:05:45 人气: - 评论: 0

公司一php系统开发过程中需要连接一个阿里云内网数据库服务器,使用了一个pptp vpn拨号到阿里云

由于我使用的是mac系统,对mac系统下pptp实现原理不太了解,我的php开发环境用的又是docker

所以导致我的mac系统是可以连接vpn服务器的,但是在docker里面是不能访问vpn网络的!

或许可以在docker环境里安装pptp客户端,但是在mac下的docker似乎也存在总总限制,

最终决定采用mac系统端口转发的方式,转发数据库链接端口,

找来找去没有找到一个在mac下比较好用的端口转发软件,遂找了一段使用nodejs实现端口转发的代码,成功实现mysql端口转发!


forwarder.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);
}).listen(addr.from[3], addr.from[2]);


forward.sh

node forwarder.js 3306 172.17.151.91:3306



执行forward.sh就可以把本机的3306端口转发到172.17.151.91的3306端口,原理很简单,利用nodejs的pipe功能!

相关内容

发表评论
更多 网友评论0 条评论)
暂无评论

Copyright © 2012-2014 我的代码板 Inc. 保留所有权利。

页面耗时0.0271秒, 内存占用1.82 MB, 访问数据库13次

闽ICP备15009223号-1