开发环境中有什么方式可以连内网服务(mysql、redis...),有这种代理吗?
背景: 因为服务实在太多,在本地搭建一套费时费力还影响电脑性能,所以想直连测试环境,测试环境在内网,终端访问需要通过跳板机操作。
尝试过的解决方案: 1.开白名单:运维说出现了安全问题,所以关闭了访问,再加上人手不够,运维当下没时间想其它办法解决此问题。 2.ssh 端口转发:mysql、redis、其它第三方服务都能连了,结果 redis cluster 却使用不了了,用的是 ioredis 包,泪崩中。。。 3.ssr:经了解,ssr 只能代理 http 或者 socket 数据,mysql redis 这种 tcp 连接的不知道能不能代理 4.修改代码:感觉这种方法也不太好。
实在是想不出其它的方法能够解决这个问题,还望各位走过路过,留下一点小小的建议,感激不尽,如果有好建议的,麻烦写个简短的步骤,或者多加一两句描述,我好有方向去学习探索。
谢谢,弯腰,鞠躬!
----------------------- 以下是精选回复-----------------------
答:frp
答:这个是 VPN 被设计发明出来的原始用途啊
答:我觉得有两种方式解决:
1 用 open VPN 类似的工具, 我理解中它的原理是虚拟一个网卡, 再修改路由表, 内网 IP 走 open vpn 的这个虚拟网卡
2. 建一个 ss 代理, 用 proxychains 这个工具来启动程序, 可以代理 tcp 连接,这个我确定可以
上面两种就是我日常能接触到的代理方式了, 关于第二种你可以用 openssh 建立一个 socks5 的端口, 然后再用 proxychains 启动程序。
要是有不对的也请大家指出哈
答:nginx 可以转发 tcp
答:内网部署一个 zerotier 节点,配置路由表就行了,当然,前提是保证能够打洞成功。需要访问内网的机器也需要安装 zerotier,并且网段不冲突,连通之后就等同在一个内网。
其他二 /三层 vpn 也可以,原理一样,不过需要公网 ip。
答:为啥不用 vpn 呢
答:frp 可以做到吧
答:你说的 ssr 里面,socket 和 tcp 的区别是什么
答:redis cluster,如果你不是特别要测试客户端库的 redis cluster 功能
要不要试试 https://github.com/eleme/corvus 这个
redis 中间件,它背后是 redis cluster,对外提供单点 redis 的服务
这样你 ssh 只暴露 1 个端口(单机 redis 协议)就可以了
* 会损失一些不被支持的 指令( keys 啊啥的)
答:隧道?
答:本地跑 docker
答:1、ssr 提供 http 和 socks5 这两种代理协议,不是 socket ;
2、http 协议在 OSI 模型中属于应用层(第七层),TCP (传输层控制协议)和 socks 协议 属于传输层(第四层);
3、https://github.com/cnlh/nps/
答:用 ssh tunnel,也就是你说的 ssh 端口转发。redis cluster 用不了的原因是因为 redis cluster 底层协议第一步会定位 key 所在的 ip,你可以让运维把所有 ip 和端口都发给你,然后,都加入转发即可。
0条评论