内网穿透方案-nps

内网穿透方案-nps

新手必懂:内网穿透入门指南(从原理到工具 + 操作)

很多人想把家里的电脑、NAS 当作服务器,部署应用供手机或其他网络的设备连接,但大多没有固定公网 IP 或弹性 IP,外部设备根本找不到本地设备。这时候,"内网穿透" 就能解决问题 ------ 它能让外部设备轻松 ping 通你的本地设备,实现跨网通信。

一、内网穿透到底是什么?(通俗理解)

简单说,内网穿透就是给本地设备(电脑 / NAS)的 "局域网 IP",配一个能被全网访问的 "公网地址"。

核心逻辑本地设备的 IP 是 "局域网专用",就像藏在小巷里的房子,外面的人直接找不到。

内网穿透相当于在路口设了个 "中转站",把小巷里的地址映射到路口的 "公网地址" 上。

外部设备只需通过这个公网地址,就能间接对接本地设备,不用复杂设置就能通信。

形象类比你家(本地设备)在没有门牌号的小巷(局域网)里,别人想找你根本无从下手。内网穿透就像在路口设了个指引站(公网地址),别人先到指引站,再跟着指引找到你家,直接实现 "跨路对接"。

二、热门内网穿透工具对比(新手友好)

不同工具的操作难度、收费情况不同,按需选择即可:

工具名称 操作难度 收费情况 核心优势 适用场景
花生壳 低(傻瓜式) 免费版有流量 / 速度限制,付费版解锁全功能 无需手动配置,自动映射,支持多种设备 新手入门、临时测试、轻量应用部署
Ngrok 低 - 中(简单配置) 免费版有域名随机、流量限制,付费版稳定 跨平台支持好,生成公网地址快,无需备案 开发测试、短期对外提供服务
frp 中(需改配置文件) 完全免费(自建服务器)或用第三方节点 速度快、无流量限制,灵活性高 有基础电脑知识、追求稳定的用户
nps 中 - 高(需搭建服务端) 完全免费(自建),无流量 / 设备限制 自定义程度极高,速度稳定,可批量管理设备 有服务器基础、需长期稳定使用的用户

选择小建议

纯新手、不想折腾:直接选花生壳,跟着引导点几下就能用。

想免费且稳定:有电脑基础选 Frp,没基础选 Ngrok 免费版。

多设备跨网互访(比如手机连 NAS 传文件):优先 ZeroTier。

长期用、需批量管理设备:有服务器基础可选 NPS。

三、内网穿透核心操作步骤

不管选哪款工具,核心流程都离不开这 3 步,新手也能轻松上手:

  1. 选一款适合自己的工具
    优先选傻瓜式工具,不用手动配复杂参数。根据上面的对比表,结合自己的需求和技术基础选择即可。
  2. 本地设备与工具绑定
    下载工具客户端,安装到你的电脑或 NAS 上。
    登录工具账号,按指引选择要映射的本地服务(比如部署的应用、设备本身)。
    勾选对应的本地 IP 和端口(工具通常会自动检测,不用手动填写)。
  3. 获取公网地址并测试连接
    绑定成功后,工具会生成专属公网地址(可能是 IP 或带域名的链接)。
    用手机(开流量,别连同一 WiFi)或其他网络的电脑,输入这个公网地址,就能 ping 通本地设备,也能访问上面部署的应用了。

补充说明:nps 和 frp 类似,都属于 "自建型工具",需要自己拥有一个额外的公网 IP,可以是直接购买的云服务器,也可以在一些平台上购买IP(比如七普云)。虽然操作比花生壳、Ngrok 稍复杂,但搭建完成后稳定性和可控性更强,适合长期使用。像花生壳这种使用相对简单,本文主要记录一下nps的使用方法。

部署演示

一、实验环境

为了适应不用的需求,测试nps方案的环境为:

  • 一台虚拟机(ubuntu系统)
  • 一台百度云服务器(ubuntu系统)

为了方便测试,我通过如下命令在虚拟机中安装了一个mqtt服务(为了方便,直接是root用户下操作):

cmd 复制代码
curl -s https://assets.emqx.com/scripts/install-emqx-deb.sh | sudo bash
cmd 复制代码
apt install emqx

执行如下命令,mqtt服务即可启动:

cmd 复制代码
systemctl start emqx

EMQX相关的端口有如下:

端口号 介绍
1883 MQTT 协议端口
8883 MQTT/SSL 端口
8083 MQTT/WebSocket 端口
8080 HTTP API 端口
18083 Dashboard 管理控制台端口

尝试登录控制台(使用本地ip加上端口18083即可,初始用户名:admin,密码:public),登陆后会要求修改密码:

使用通信猫测试软件尝试连接已经可以连接成功了:

进入正题,从nps仓库下载2个文件(根据使用系统选择),一个是nps服务端,放到百度云服务器上运行,一个是nps客户端,放在局域网IP的虚拟机上运行,这里就就下载如下两个:

二、配置服务端

linux_amd64_server.tar.gz文件上传到百度云服务器上,依次在文件同级路径下命令行执行如下3条命令

cmd 复制代码
tar -xzvf linux_amd64_server.tar.gz 
cmd 复制代码
sudo ./nps instal
cmd 复制代码
sudo nps start    

注意nps服务端启动会占用80,8080,8024端口,如需修改默认占用端口: 修改 /etc/nps/conf 下的 nps.conf 文件

到这里就可以使用浏览器访问云服务公网IP加上默认端口8080访问nps管理端(默认用户名admin,密码:123)

登录后新建一个客户端:

设置个备注和密钥(客户端要用),其他暂时就不用改了,点击新增即可

出来后点击右上角刷新就就可以看到客户端状态,这里离线是还没开始配置客户端:

三、配置客户端

linux_amd64_client.tar.gz上传到虚拟机中:

解压

cmd 复制代码
tar xzvf linux_amd64_client.tar.gz

使用如下命令启动客户端(命令中服务器ip换成自己的服务器公网IP,端口8024是服务端默认端口):

cmd 复制代码
./npc -server=服务器ip:8024 -vkey=123456 -type=tcp > ./nps.txt

希望关闭命令行后应用正常运行添加nohup指定后台运行即可:

cmd 复制代码
nohup ./npc -server=服务器ip:8024 -vkey=123456 -type=tcp > ./nps.txt &

这里为了方便测试就直接使用第一条命令了:

命令执行后在管理端刷新就能看到客户端状态为在线了(截图中的第一个数字3是客户端ID后面要用):

开始在nps管理端新增端口穿透(注意公网端口要在云平台添加安全策略开放端口):

出来后刷新一下就能看到客户端状态为在线:

再次使用通信猫连接公网IP和映射出来的端口就能看到可以正常连接,表示穿透成功:

相关推荐
QiTinna8 小时前
Linux运维核心命令(入门)
linux·运维·服务器
初听于你8 小时前
LoRa与ZigBee:物联网双雄对决
服务器·网络·windows·网络协议·计算机网络
哦你看看9 小时前
Redis Sentinel哨兵集群
linux·redis·bootstrap·sentinel
爱尔兰的楠小楠10 小时前
Windows上使用WSL2创建Ubuntu系统,实现无缝高效开发的体验
linux·windows·ubuntu
Fluency-1110 小时前
ubuntu中ssh连接root用户
linux·ubuntu·ssh
0wioiw010 小时前
Ubuntu(③vsftpd)
linux·服务器·ubuntu
tritone10 小时前
在优豆云的免费云服务器上开启MongoDB学习之旅
服务器·学习·mongodb
我命由我1234511 小时前
Guava - Guava 基本工具 Preconditions、Optional
java·服务器·开发语言·后端·java-ee·guava·后端框架
远程软件小帮手11 小时前
哪个云电脑最好用?适合玩游戏的云电脑测评!
运维·服务器·游戏·电脑