V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wuyipeng
V2EX  ›  服务器

开发环境中有什么方式可以连内网服务(mysql、redis...),有这种代理吗?

  •  
  •   wuyipeng · 2019-04-24 22:39:34 +08:00 · 1471 次点击
    这是一个创建于 2072 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景: 因为服务实在太多,在本地搭建一套费时费力还影响电脑性能,所以想直连测试环境,测试环境在内网,终端访问需要通过跳板机操作。

    尝试过的解决方案: 1.开白名单:运维说出现了安全问题,所以关闭了访问,再加上人手不够,运维当下没时间想其它办法解决此问题。 2.ssh 端口转发:mysql、redis、其它第三方服务都能连了,结果 redis cluster 却使用不了了,用的是 ioredis 包,泪崩中。。。 3.ssr:经了解,ssr 只能代理 http 或者 socket 数据,mysql redis 这种 tcp 连接的不知道能不能代理 4.修改代码:感觉这种方法也不太好。

    实在是想不出其它的方法能够解决这个问题,还望各位走过路过,留下一点小小的建议,感激不尽,如果有好建议的,麻烦写个简短的步骤,或者多加一两句描述,我好有方向去学习探索。

    谢谢,弯腰,鞠躬!

    13 条回复    2019-07-18 13:23:17 +08:00
    alfchin
        1
    alfchin  
       2019-04-24 23:07:15 +08:00 via Android
    frp
    celeron533
        2
    celeron533  
       2019-04-24 23:11:03 +08:00   ❤️ 2
    这个是 VPN 被设计发明出来的原始用途啊
    corvofeng
        3
    corvofeng  
       2019-04-24 23:23:29 +08:00 via Android
    我觉得有两种方式解决:
    1 用 open VPN 类似的工具, 我理解中它的原理是虚拟一个网卡, 再修改路由表, 内网 IP 走 open vpn 的这个虚拟网卡

    2. 建一个 ss 代理, 用 proxychains 这个工具来启动程序, 可以代理 tcp 连接,这个我确定可以

    上面两种就是我日常能接触到的代理方式了, 关于第二种你可以用 openssh 建立一个 socks5 的端口, 然后再用 proxychains 启动程序。

    要是有不对的也请大家指出哈
    ofnh
        4
    ofnh  
       2019-04-24 23:29:57 +08:00 via Android
    nginx 可以转发 tcp
    tomczhen
        5
    tomczhen  
       2019-04-24 23:44:53 +08:00
    内网部署一个 zerotier 节点,配置路由表就行了,当然,前提是保证能够打洞成功。需要访问内网的机器也需要安装 zerotier,并且网段不冲突,连通之后就等同在一个内网。

    其他二 /三层 vpn 也可以,原理一样,不过需要公网 ip。
    unixeno
        6
    unixeno  
       2019-04-24 23:45:40 +08:00 via Android
    为啥不用 vpn 呢
    Tsingchengliu
        7
    Tsingchengliu  
       2019-04-25 00:55:10 +08:00 via Android
    frp 可以做到吧
    9hills
        8
    9hills  
       2019-04-25 01:08:28 +08:00 via iPhone
    你说的 ssr 里面,socket 和 tcp 的区别是什么
    ETiV
        9
    ETiV  
       2019-04-25 01:32:45 +08:00
    redis cluster,如果你不是特别要测试客户端库的 redis cluster 功能

    要不要试试 https://github.com/eleme/corvus 这个

    redis 中间件,它背后是 redis cluster,对外提供单点 redis 的服务
    这样你 ssh 只暴露 1 个端口(单机 redis 协议)就可以了

    * 会损失一些不被支持的 指令( keys 啊啥的)
    cyssxt
        10
    cyssxt  
       2019-04-25 08:15:08 +08:00 via iPhone
    隧道?
    mattx
        11
    mattx  
       2019-04-25 08:48:38 +08:00 via iPhone
    本地跑 docker
    doopsky
        12
    doopsky  
       2019-05-14 22:46:52 +08:00
    1、ssr 提供 http 和 socks5 这两种代理协议,不是 socket ;

    2、http 协议在 OSI 模型中属于应用层(第七层),TCP (传输层控制协议)和 socks 协议 属于传输层(第四层);

    3、https://github.com/cnlh/nps/
    tomjamescn
        13
    tomjamescn  
       2019-07-18 13:23:17 +08:00 via iPhone
    用 ssh tunnel,也就是你说的 ssh 端口转发。redis cluster 用不了的原因是因为 redis cluster 底层协议第一步会定位 key 所在的 ip,你可以让运维把所有 ip 和端口都发给你,然后,都加入转发即可。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5653 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 06:47 · PVG 14:47 · LAX 22:47 · JFK 01:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.