公司电脑上存了不少工作资料,有时候周末在家想临时处理个事,还得专门跑回公司。远程桌面开了,但没有公网IP,根本连不上。用第三方远程软件吧,要么收费要么限速,画质糊得不行。
最近发现了一个叫NPS的内网穿透工具,开源的,可以在有公网IP的VPS上搭一个穿透服务,把内网的机器映射到公网上。正好雨云那台2核2G的香港VPS闲着,花了一晚上搭起来,现在在外网用手机都能连上公司电脑,体验比第三方软件好太多。
NPS是什么
NPS是一款轻量级的内网穿透代理服务器,支持TCP、UDP、HTTP、SOCKS5等多种协议,带Web图形化管理界面,配置起来比较直观。
简单说就是:把内网的服务通过一台有公网IP的服务器“中转”出去,让外网的人能访问到。适用场景挺广的:
远程办公:在外网SSH连接内网服务器,或者远程桌面连公司电脑
开发调试:本地跑的服务暴露到外网,给同事看效果
个人NAS访问:家里的NAS在外网也能访问
游戏联机:自建游戏服务器分享给朋友玩
NPS和FRP类似,但NPS的好处是自带Web管理界面,新增穿透规则不用改配置文件,在网页上点几下就完事了。
准备工作
硬件:雨云
香港二区VPS,2核2G,50M带宽,Ubuntu 22.04。
雨云优惠码:Nzc0OTI0
公网IP:必须要有。雨云的机器默认带独立公网IP,这是搭建穿透服务的前提。
端口放行:在雨云控制台的安全组里,放行几个关键端口:
8080:NPS的Web管理面板8024:客户端连接端口80和443:如果需要HTTP/HTTPS穿透其他需要穿透的业务端口
雨云的后台可以配置安全组规则,把上面的端口添加上去就行。
部署NPS服务端
NPS部署有两种方式,我选的Docker方式,省事。
用Docker部署(推荐)
先确保Docker已经装好。如果装的是宝塔面板,在Docker管理器里操作就行。
拉取NPS镜像并启动容器。我用的是社区维护的活跃版本,原版NPS已经两年多没更新了,bug比较多。
Docker面板搜索NPS服务端:

配置默认即可

修改配置文件
/opt/nps/conf/nps.conf里可以改几个关键参数:
web_port=8080 # Web管理面板端口 web_password=你的密码 # 把默认密码改了,安全第一 bridge_port=8024 # 客户端连接端口,保持默认就行改完密码之后,重启容器让配置生效:
docker restart nps访问Web管理端
浏览器打开 http://你的服务器IP:8080,默认账号密码是 admin/123(如果没改配置文件的话)。登录进去第一件事,把密码改掉。
添加客户端
登录Web后台之后,左侧菜单点“客户端” -> “新增”。
填几个信息:
备注:随便写,比如“公司电脑”
验证密钥:留空自动生成,或者自己填一个
点新增之后,会生成一串验证密钥,记下来,装客户端的时候要用。
安装客户端(NPC)
客户端装在你需要被穿透的那台机器上,比如公司的电脑、家里的NAS。
安装客户端(NPC)
客户端装在你需要被穿透的那台机器上,比如公司的电脑、家里的NAS。
Linux客户端
以Linux为例,下载客户端程序:
wget https://github.com/yisier/nps/releases/download/v0.26.17/linux_amd64_client.tar.gz tar -zxvf linux_amd64_client.tar.gz安装并启动:
./npc install -server=你的服务器IP:8024 -vkey=刚才生成的验证密钥 npc start装好之后,在Web管理端的“客户端”列表里,状态会变成“在线”,说明隧道已经通了。
Windows客户端
Windows版下载对应的exe文件,解压后管理员身份运行命令行:
cmd
npc.exe install -server=你的服务器IP:8024 -vkey=刚才生成的验证密钥 npc.exe start
可以注册成Windows服务,开机自启。
配置穿透规则
客户端上线之后,就可以添加穿透规则了。
在Web管理端点“TCP隧道” -> “新增”,填几个信息:
客户端:选择刚才添加的那个客户端
服务端端口:比如
2222(外网访问时用的端口)目标IP端口:填客户端内网的地址和端口,比如
192.168.1.100:22(内网机器的SSH)
保存之后,在外网通过 ssh -p 2222 root@你的雨云服务器IP 就能直接连到内网那台机器了。
同样的方式可以加HTTP隧道、UDP隧道,Web管理界面操作都很直观
性能表现
资源占用:NPS服务端容器内存占用稳定在30-50MB,CPU基本为0。雨云这台2核2G机器上已经跑了七八个容器,加上NPS依然稳得很。
传输速度:穿透速度取决于服务器带宽和两端网络。雨云50M带宽,实际穿透传输速度能跑到4-5MB/s,远程桌面操作很流畅,比向日葵/Todesk的免费版体验好不少。
稳定性:跑了快两周没重启过,没掉过线。
备份与迁移
NPS的配置都在 /opt/nps/conf 目录下,客户端信息、穿透规则都存在数据库里,这个目录打包备份就行。
换机器的话,把配置目录恢复到新机器的相同路径,重新执行docker run命令,所有配置都在,客户端不用重装,自动重连。
从部署到配置好第一条穿透规则,全程不到半小时。Docker加Web管理界面,比FRP手动改配置文件省事多了。