小华去年辞掉工作,在家专心学网站制作。从HTML的标签怎么闭合,到CSS把页面调得顺眼,再到后来用React写前端、用Node.js写接口,他一点一点啃了下来。学得越多,他越觉得应该有个自己的作品,不是那种存在服务器上的演示项目,而是实实在在跑在自己机器上的站点。于是,他决定把一台旧电脑利用起来,架一个属于自己的网站。
那台电脑是他2015年买的,i3处理器,8GB内存,跑Windows 10还算顺畅。他先在里面装了Node.js,在某个文件夹里新建了项目,用Express起了一个最简单的服务。代码就几十行,监听3000端口,路由返回一段欢迎文字加他自己的简历页面。打开浏览器,输入localhost:3000,页面秒开,他挺激动,可马上意识到,这只是给自己看的,别人怎么进来呢?
他先试了试局域网。手机连接同一个Wi-Fi,在浏览器里输入电脑的局域网IP,后面加冒号3000,也能打开。那个IP是他用ipconfig命令查到的,192.168.1.108。他特意把Windows防火墙的入站规则里添加了允许Node.js通过。结果手机果然能访问,他觉得有点意思,但这离真正的网站还差着一大步,因为只要离开这个路由器,邻居都进不来。
小华打电话给宽带客服,问能不能开一个公网IP,他听人说有了公网IP,再在路由器上做端口映射,外网就能直接访问家里电脑。客服查询之后告诉他,他这个套餐采用的是大内网,没有公网IP,想要开通得改成企业宽带,费用高很多。小华琢磨了一下,一个月多花好几百,不划算。他只好另想办法。
后来他在技术论坛里看到有人聊内网穿透,知道了ngrok、frp、花生壳这些工具。他先用了ngrok,按照教程下载了一个客户端,运行命令之后,屏幕上出现一串以ngrok.io结尾的临时网址。他拿手机打开,居然真的访问到了自己电脑上的网页。但开心的劲头没持续多久,他发现免费的ngrok隧道每次重启地址都会变,而且速度慢,有时候还会有安全提示页面。他觉得这种临时网址不像一个正儿八经的网站。

于是他开始研究家里有没有办法获得更固定的访问入口。他想起了花生壳,以前用过它做动态域名解析,现在花生壳也