前阵子手头有台旧电脑闲得慌,琢磨着搞点事情,就想把它变成一台能对外提供服务的服务器。朋友推荐了花生壳,说可以用免费域名做内网穿透,于是就这么折腾起来了。
先说说花生壳这个免费域名是怎么回事。它本质上是个动态DNS服务,你注册后它会给你一个类似xxxxxx.oicp.net这样的免费二级域名,这个域名绑定在你电脑当前的公网IP上。但这里有个关键点,绝大多数家庭宽带没有真正的公网IP,运营商给的都是大内网地址,这时候光靠动态DNS根本没法从外面访问进来。所以花生壳的做法是,在你电脑上装一个客户端,由客户端主动连到花生壳的服务器,再通过服务器中转流量,这就是内网穿透的原理。
我用的方案是装花生壳的PC客户端,在官网注册账号后登录客户端,它会自动分配一个免费域名。客户端里有个“内网穿透”功能,添加映射的时候填上你本机要提供服务的端口就行,比如网站是80,FTP就是21。但注意,免费版会给你的端口随机分配一个外网端口,可能是一串比较大的数字,比如34000多,访问的时候得在域名后面加上这个端口号,格式是xxxxxx.oicp.net:34000,不能直接用默认端口,这是免费版的一个限制。
接下来说网站。本机上用nginx跑了个简单的静态页面,监听8080端口,因为80端口很可能被运营商封了。在花生壳客户端里添加映射,内网地址填127.0.0.1,内网端口8080,外网端口它会随机给一个。保存后就能用分配的外网端口访问了。测试下来速度还算能接受,毕竟免费版给了1Mbps的带宽,纯文字页面打开很快,放几张几百K的图片也还流畅,但要是放视频就会比较吃力,加载会很慢。
FTP这块稍微麻烦点,因为FTP协议特殊,有控制连接和数据连接两种模式。花生壳对FTP支持得还行,但要注意,建议用被动模式,并且在FTP软件里设置被动模式的端口范围,然后在花生壳里把这几个端口都映射出去。我用的是FileZilla Server,在被动模式设置里填了50000到50010这十个端口,然后在花生壳客户端里对应添加这些端口的映射。客户端连接的时候,主机填花生壳域名,端口填花生壳分配的FTP外网端口,用户名密码就是本机FTP软件的账号。测下来上传下载都正常,能到几百KB每秒,跟家里上行带宽有关系。

实际操作中会遇到几个坑得说一下。一个是花生壳免费版会限制流量,每月好像是1G还是2G,用超了就得等下个月重置,所以别拿它跑大流量应用。另一个是域名会跳转到一个提示页面,说这是花生壳提供的免费动态域名服务,没有广告,就是一行小字,不影响使用,但如果你想要个干净的域名就得付费。
还有一点,花生壳客户端的服务器在国内,所以你的网站要是面向海外用户,速度会很慢,这也没办法,毕竟是免费的。
总的来说,花生壳这个免费域名做个人网站或者随便玩玩FTP足够了,适合自己学习服务器知识,或者给朋友展示点东西。但要是想长期稳定对外提供服务,还是建议买个云服务器,或者直接上付费版花生壳,那才算是正经路数。折腾这一趟下来,该踩的坑基本都踩了,也学到了不少内网穿透的知识,算是有所收获。