将内网服务开放(摆渡、代理)到公网

      业务系统一般部署在内网,内网和公网之间一般是物理隔离或是防火墙隔离的,但有的时候也需要将内网网段的服务开放到公网上,用来进行调试、确认等临时工作。

      公网访问内网,一般要具备两个条件(1)到运营商申请固定IP (2)通过路由器,代理服务器等将内网端口映射到固定IP上。 这种方式成本较高,不适合小公司,小团队操作。

      有的时候公网资源有限。比如:还是因为成本限制,不可能在阿里云上租用大量的服务器;或者因为licence限制,也不可能将很多非开源中间件(比如oracle)部署在阿里云上。那么就需要出现一个工具,可以方便的将内网的资源开放到公网。(注意,这样做同样不要违反中间件版权涉及的法律约束)

      工具的实质就是将客户端请求从公网代理(反向摆渡)给内网的服务中,再将内网服务的响应返回到外网的客户端。

      …想到便要做到…

      于是这样一款反向摆渡工具就诞生了。

      (1) 内网摆渡程序需要登录到云端代理程序,保证安全性

      (2) 云端代理程序按照内网请求动态监听端口

      (3) 代理程序就一个可执行文件,拷贝到云端执行即可。内网摆渡是一个spring boot程序,配置极简。一共就两个进程,不依赖数据库及其他组件

      (4) 一旦内网程序关闭web socket客户端,云端代理便会关闭socket监听。收放自如

      (5) 云端程序采用golang编写,性能消耗极小(测试时性能消耗在1%左右),占内存也只占用几十M。租一个阿里的低配虚拟机可以同时将很多内网服务开放到公网。

      (6) 这是个开源程序(而且是用java和go这两种低成本的语言编写),你可以改成任何你需要的样子,这才是最大的优点。

      如图所示:

![此处输入图片的描述][1]
类图:
![此处输入图片的描述][2]
配置使用说明:
![此处输入图片的描述][3]
      摆渡程序分两部分组成,在内网的部分做web socket客户端和tcp客户端,使用java编写。公网云端的程序做web socket服务端和tcp服务端,使用go编写 。

https://github.com/jonenine/ferry

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值