内网穿透方案-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和映射出来的端口就能看到可以正常连接,表示穿透成功:

相关推荐
用户9718356334661 小时前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪3 小时前
linux 拷贝文件或目录到指定的位置
linux
大树8818 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠18 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush419 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行52019 小时前
Linux 11 动态监控指令top
linux
小宇宙Zz19 小时前
Maven依赖冲突
java·服务器·maven
不会C语言的男孩20 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
古城小栈21 小时前
Unix 与 Linux 异同小叙
linux·服务器·unix
程序猿阿伟21 小时前
《Chrome离线扩展安装的底层逻辑与场景落地指南》
服务器·网络·chrome