为什么开发内网云
本文记录了内网云项目的开发历程,推荐阅读
尽管云服务商提供的服务器配置可以无限扩展,且其环境安全、起步成本低廉,但每种方案都有其优缺点。最大的痛点在于——成本过高。
我们是一群热爱技术、崇尚自由,同时遵纪守法、追求和平的开发者。虽然我们已经将多个Web应用部署在公网上,但受限于硬件配置和网络带宽,许多创新想法、前沿技术以及待上线的服务,往往在实施前就被硬件条件所限制。
如何突破这些限制?
能用钱解决的问题,都不是真正的问题。
作为一家初创公司,我们既没有投资背景,也没有强大的人脉资源,总结来说就是——资金有限。
但我们拥有一支精通网络和编程的技术团队。那么,能否通过技术手段来解决这个问题呢?让我们尝试一下。
方案一:服务多开
既然购买多台服务器成本高昂,那么在一台服务器上部署多个服务是否可行?
当然可以。我们具备编写代码的能力,服务器管理也不在话下:
- 将服务打包成Docker容器,部署多个Docker实例,利用Docker的环境隔离特性
- 将服务部署在不同端口,通过Nginx将不同域名映射到相应端口
这种方法确实能降低网络成本,毕竟一台服务器运行多个程序,配置越高性能越佳。然而,多开程序对服务器配置要求较 高,而云服务器的配置成本依然不菲。
方案二:内网穿透
通过代理转发,将云服务器与局域网内的电脑进行端口绑定。云服务器仅负责接收流量,并将其转发至局域网内的电脑。
在公司内部,我们拥有多台高性能电脑和稳定的内部网络,本地硬件配置相当优越。这样,云服务器只需低配置和适量带宽,就能满足公司业务需求。同时,本地开发和部署也更加便捷,配置充足,想想都觉得高效。
代价是:服务器带宽需求翻倍,因为流量进出都需要带宽,而云服务器的带宽成本非常高。
方案三:百兆专线+公网IP
这个方案无需技术投入,只需资金支持。公司可以申请公网IP,并开通80和443端口,分别用于HTTP和HTTPS协议。凭借公司场地的优势,可以购买百兆专线,甚至多条专线,部署快速且方便。
成本在于手续繁琐且费用高昂,非常昂贵。这是资金充足时的选择,只要投入足够,运营商将为您提供完善的服务。
经过综合分析,我们最终选择了方案一+方案二,因为这两种方案成本较低。
方案一技术难度较低,主要是运维和管理,这里不再赘述。
方案二技术性较强,需要自建服务并开发代码,具体技术选型将在下文讨论。
方案三成本过高,直接排除,对于资 金有限的公司来说并不现实。
内网穿透技术选型
市场上现有的内网穿透产品众多,我们进行了广泛调研,包括开源、付费、良心产品以及存在问题的产品。基于这些调研,我们为自身产品制定了以下优先级:
1. 无需客户端
内网穿透应用场景广泛,要适配各种平台,以我们的开发资源来看是不现实的。此外,无需客户端,通过命令直接接入,1秒内即可连接公网,我们觉得这种方式既便捷又酷炫。
当然,我们也看到一些厂商实现了几乎全平台的适配,从跨平台到兼容NAS硬件产品,我们对此表示由衷的钦佩和赞赏。
无需客户端,如何实现内网穿透?内网穿透通常需要客户端+服务端,因此我们需要借助现有工具,见第二点。
2. 通用工具或协议
无需客户端,最佳方案是客户自带客户端或工具。支持映射或服务绑定,涉及不同的内网穿透技术类型,相应的代理和反向代理工具也很多,例如Nginx、Proxy、iptables、Squid、Proxychains等,这些都是高性能代理工具。
我们选择了SSH,因为它几乎在所有系统中都自带,且支持密 钥加密,命令行操作简单。
3. 支持HTTP协议访问
单纯的端口访问并不新鲜,开源脚本即可实现。支持HTTP协议的理由很简单:为了方便访问。手机、电脑都配备浏览器,甚至还有专门的ChromeOS,支持HTTP协议是基本要求。
4. 支持HTTPS[HTTP+SSL]协议
为什么需要HTTPS?既然支持HTTP,为什么不支持HTTPS?
理由很直接:HTTPS比HTTP更安全、更重要,是接入各种公网服务的必备协议。HTTPS的优势,用过的人都知道,非常实用。
开发人员:有了HTTPS地址,我在本地电脑上接入微信支付,直接使用HTTPS协议,微信支付的回调请求直接发送到开发电脑,非常便捷。
客服人员:没有HTTPS协议地址,微信和QQ发送网址信息时会显示警告,且无法打开,HTTPS则能正常使用。
当然,还有其他要求,但无关紧要,不再赘述。
接下来是漫长的开发、集成、调试、上线和手续办理过程。
最终的技术框架如下:
- 语言:Python、Lua、C、Shell
- 工具:SSH、Nginx、Django、Vue、Docsify[文档]
内网云服务上线
第一、无需客户端,我们觉得非常便捷和酷炫
第二、我们有许多网站需要部署,这是刚需
第三、云服务器配置低、带宽小,价格却不便宜
第四、通过内网私服游戏隧道,与好友一起合作玩游戏
第五、节省开发时间,实测微信支付接口,免费&秒接&快速&稳定
第六、绝对的稳定和安全,基于SSH(Secure Shell),有效防止远程管理过程中的信息泄露问题。