跳到主要内容

为什么开发内网云

本文记录了内网云项目的开发历程,推荐阅读

尽管云服务商提供的服务器配置可以无限扩展,且其环境安全、起步成本低廉,但每种方案都有其优缺点。最大的痛点在于——成本过高。

我们是一群热爱技术、崇尚自由,同时遵纪守法、追求和平的开发者。虽然我们已经将多个Web应用部署在公网上,但受限于硬件配置和网络带宽,许多创新想法、前沿技术以及待上线的服务,往往在实施前就被硬件条件所限制。

如何突破这些限制?

能用钱解决的问题,都不是真正的问题。

作为一家初创公司,我们既没有投资背景,也没有强大的人脉资源,总结来说就是——资金有限。

但我们拥有一支精通网络和编程的技术团队。那么,能否通过技术手段来解决这个问题呢?让我们尝试一下。

方案一:服务多开

既然购买多台服务器成本高昂,那么在一台服务器上部署多个服务是否可行?

当然可以。我们具备编写代码的能力,服务器管理也不在话下:

  1. 将服务打包成Docker容器,部署多个Docker实例,利用Docker的环境隔离特性
  2. 将服务部署在不同端口,通过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),有效防止远程管理过程中的信息泄露问题。