【笔记】下云的一小步尝试——内网穿透

5 篇文章 0 订阅
2 篇文章 0 订阅

云上的世界很精彩,可是越来越贵,系统也越来越臃肿;如果我只需要云提供网络接入,流量大的时候CDN和load balancer就够了,其他的业务只想在内部公开,那么就得将一些需要内部化的服务下云了。用自己的数据中心,自由自在!在财力不到之前,云上的网络接入虽然贵得肉疼,还是比较简单的,配置一下就四通八达了。我们只要解决云上和云下网络通信的问题。

想要把云上云下业务解耦,自然想到了内网穿透。就是你在内部有一个服务,这个服务如果连接到互联网上。传统的服务器软件诸如httpd,nginx,haproxy等都是top-down的代理,就是入口机器有了,然后入口机器要通达所有服务,iptables和tc上场编排了。要想将内部服务暴露出去,得有一个反向bottom-up的代理,就是一个服务在那里,只要内部服务能连接到外部这个服务上,流量就能联通。

frp是一个不错的选择:

https://github.com/fatedier/frp

网上很多配置教程,frps在连外网的机器上,frpc在内部机器上,反向联通就好了。但是,云上机器都给我安装了啥,为啥正常使用frp会被报告恶意软件?没关系,自己动手写一个简易版的,先将就着。

https://github.com/stallpool/apitunnel

原理还是比较简单的,让公网机器运行一个pub server,在内网用sub连接到pub上;当访问pub的时候把流量转移到sub上就好了。这个是纯http的服务,这样少写点代码也不用管https了,套上nginx或者traefic也很方便。

业务流量通了,有时还真需要ssh到服务器上。这个是比较危险的操作,可以威胁到内部系统安全;但是我们还是先把它打通,万一要用至少能派点用处,之后就是排布内部网络,防止通过pub/sub渗透到内网了。

因为pub/sub是http协议的,所有都得http。那么ssh自然是要联想到websocket了,网上搜索了下

https://github.com/mhzed/wstunnel

有大哥已经写过一个wstunnel了,然后还有人参考这个用rust写了一遍。我们就直接用wstunnel呗,也是node;为啥用node,不用go和rust呢,因为懒随时可以改,go和rust部署前需要编译…于是改造了下pub/sub,让它简单支持websocket的穿透。原理就是外部连接pub建立长链接,通知内部也建立一个长链接,然后通过pub/sub传递websocket的消息。

改造完发现wstunnel也是各种老旧,为了用上新的lib,先disable掉了一些功能,然后将websocket换成了ws

https://github.com/dna2fork/wstunnel-node

这样在内部启动一个wstunnel的server,sub注册好;再在外部启动一个wstunnel的client连上pub,就可以使用ssh -> wstunnel (client) -> pub -> sub -> wstunnel (server) 了。

至此,云上云下的连接简单弄好了。架构上就是云上抗请求,所有的请求入队列;云下慢慢读这个队列然后处理。完成。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值