上周三下午,同事扔过来一个压缩包,网穿网说“试试这个,透官比frp省事”。网穿网我解压一看,透官目录里躺着一个nps可执行文件和一个conf文件夹。网穿网没有安装程序,透官没有图形界面,网穿网连个像样的透官官网都没有——作者把文档全塞在GitHub的README里了。这就是网穿网nps,一个用Go写的透官内网穿透工具,主打“轻”和“快”。网穿网
我当时的透官场景很具体:家里那台二手ThinkCentre跑着一套开发环境,想在公司直接ssh进去改代码。网穿网公司网络出口限制多,之前用某商业穿透服务,延迟忽高忽低,还总断。nps的官网(其实就是GitHub仓库首页)第一句话写着:“一款轻量级、高性能、功能强大的内网穿透代理服务器。”口气不小,但代码仓库才2.3MB,编译好的二进制文件不到8MB。我决定花半小时试试。
下载页面藏得有点深,得点进Releases标签。最新版是0.26.10,作者更新挺勤,但版本号跳得随意——有时候一个月发三个版,有时候半年没动静。我选了linux_amd64的压缩包,解压后直接./nps,屏幕上立刻滚出一行提示:“没有找到配置文件,已生成默认配置”。打开conf/nps.conf,里面密密麻麻的注释比代码还多。关键几项:web_port默认8080,web_username和web_password都是admin。我改掉密码,把bridge_port从8024改成18024——公司防火墙对高位端口更宽容。
bridge_port建立隧道,然后在Web管理界面里添加“客户端”和“隧道”。整个过程不用重启服务,改完即生效。 服务端启动后,浏览器打开http://你的VPS_IP:8080,登录进去。界面朴素得像是2010年的路由器后台,但功能齐全。左侧菜单有“客户端”、“隧道”、“域名解析”、“端口转发”几个大类。我先点“客户端”,新增一个,填上内网机器的唯一验证密钥——这个密钥在客户端配置文件里web_password或auth_key字段。然后去内网机器上跑./npc -server=你的VPS_IP:18024 -vkey=刚才的密钥。命令行窗口闪了两下,显示“连接成功”。
接下来创建隧道。我选了TCP类型,服务端端口填2222,目标内网地址填127.0.0.1:22。保存的瞬间,Web界面上的“在线状态”变成绿色。我马上在办公室电脑上ssh -p 2222 用户名@VPS_IP,三秒后跳出了家里那台机器的欢迎语。延迟?ping了一下,平均28ms,比之前用的商业服务还低。这让我有点意外——毕竟nps的官网连个像样的宣传图都没有,全靠口碑在技术圈里传。
不过坑也有。nps的Web管理界面默认用HTTP,密码是明文传输。我一开始没在意,直到某天发现日志里有陌生IP尝试登录。赶紧在nps.conf里加上https_proxy_port=443和证书路径,又开了allow_user_register=false。作者在文档里提过一句“生产环境请启用HTTPS”,但字很小,藏在“高级配置”一节。另外,nps的域名解析功能需要配合nps.conf里的http_proxy_port和泛解析,我试了两次没成功,索性放弃——反正TCP隧道够用了。
最让我满意的是它的“多路复用”。之前用frp,每个隧道要单独开一个端口,VPS防火墙得放行一大串。nps把所有隧道都塞进bridge_port这一个连接里,服务端只暴露一个端口。这对VPS安全组管理太友好了。还有Web界面的“实时流量图”,虽然简陋,但能一眼看出哪个隧道在偷跑带宽。上周发现有个测试隧道上传了2GB数据,查日志发现是内网某台机器被扫了,赶紧关掉。
# 我的服务端启动命令(nohup后台跑) nohup ./nps > /var/log/nps.log 2>&1 & # 客户端(Windows内网机器) npc.exe -server=1.2.3.4:18024 -vkey=abc123 -type=tcp
现在nps已经在我这儿跑了三周。中间断过一次,原因是VPS服务商重启了宿主机。nps自己没挂,但客户端显示离线,手动systemctl restart npc后恢复。官网文档里有个“心跳检测”配置项health_check_timeout,默认是5秒,我改成了15秒,减少误报。另外,作者在GitHub Issues里回复挺快,虽然语气冷淡,但问题基本能解决。有个issue提到“Web界面不支持多用户”,作者回了一句“自己改源码”,倒也实在。
如果你也在找内网穿透方案,又不想被商业服务按月收费,nps值得花一个下午折腾。它不完美——界面丑、文档散、HTTPS配置绕——但核心功能扎实,二进制文件小得可以塞进U盘。官网?其实就是那个GitHub仓库。别指望有漂亮的落地页和客服弹窗,但代码和配置示例都在那儿,够用了。
```