NPS - 轻量级内网穿透代理服务器

NPS是一款轻量级、高性能、功能强大的内网穿透代理服务器,用于实现内网与外网之间的通信。它可以将外部网络请求转发到内网服务器,使得内网服务器可以被外部访问到。

NPS支持TCP和UDP流量转发,并且可以支持任何TCP和UDP上层协议,例如访问内网网站、本地支付接口调试、SSH访问、远程桌面、内网dns解析等。此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的WEB管理界面。扩展功能强大,全平台兼容,一键注册为服务。

开源地址:https://github.com/ehang-io/nps

NPS原项目是由 @ehang-io 大佬创建的,但是不知道啥原因已经不更新了。好在@yisier大佬出手,在原项目 v0.26.10 版本的基础上继续维护进行了更新,目前最新版本已经更新到 v0.26.19,新项目地址:https://github.com/yisier/nps/releases

基本环境要求

● 一台有公网IP的云服务器(VPS)运行服务端(NPS)
● 一个或多个运行在内网的服务器或者PC运行客户端(NPC)

NPS - 轻量级内网穿透代理服务器

NPS特点

⭐Go语言编写,同时支持服务端和客户端控制
⭐支持跨平台(Linux、Windows、macOS、群辉等),支持一键安装为系统服务
⭐支持多种协议的代理,兼容几乎所有常用协议,例如tcp、udp、http(s)、socks5、p2p、http代理......
⭐https集成,支持将后端代理和web服务转成https,同时支持多证书
⭐操作简单,只需简单的配置即可在web ui上完成其余操作
⭐展示信息全面,流量、系统信息、即时带宽、客户端版本等
⭐扩展功能强大,该有的都有了(缓存、压缩、加密、流量限制、带宽限制、端口复用等等)
⭐域名解析具备自定义header、404页面配置、host修改、站点保护、URL路由、泛解析等功能
⭐服务端支持多用户和用户注册功能

适用场景

⭐域名代理模式:在进行微信公众号或小程序开发时,通过 NPS 的域名代理模式,可以方便地进行本地调试和测试
⭐tcp代理模式:通过 NPS 的 TCP 代理模式,可以在外网通过 SSH 连接到内网的服务器,实现云服务器到内网服务器的端口映射
⭐udp代理模式:在非内网环境下使用内网dns,或者需要通过udp访问内网机器等
⭐http代理模式:利用 NPS 的 HTTP 代理模式,可以在外网环境下,通过 HTTP 代理访问内网的网站和应用
⭐socks5代理模式:搭建一个内网穿透的 SOCKS5 代理服务器,使外网用户如同使用内网 VPN 一样访问内网资源和设备

宝塔安装NPS服务端

需要一台有公网IP的云主机,十一张(www.11zhang.com)这里使用的是京东云轻量应用服务器,系统为CentOS 7.9版本。下面用宝塔来演示一下安装NPS服务端的操作步骤。

1、服务器搭建好宝塔面板,搭建教程可参照文章:https://www.11zhang.com/30.html

2、本次使用的还是 @ehang-io 大佬创建的NPS源码,在 Github 下载好自己对应平台的nps-server(client 是客户端,别下载错了),下载地址:https://github.com/ehang-io/nps/releases

NPS - 轻量级内网穿透代理服务器

PS:在宝塔上还支持远程下载,如下图,在服务器 www/wwwroot 目录下输入 linux_amd64_server.tar.gz 文件下载地址进行远程下载;

https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz

NPS - 轻量级内网穿透代理服务器

NPS - 轻量级内网穿透代理服务器

3、下载完服务器压缩包后,root用户用以下命令进行解压,解压后会得到两个文件夹(confweb)和一个 nps 文件,如下图;

tar -zxvf linux_amd64_server.tar.gz

NPS - 轻量级内网穿透代理服务器

4、进入解压后的文件夹,root用户执行以下2条命令进行安装并启动nps服务端,如下图;

//执行安装命令
sudo ./nps install

//启动
sudo nps start

//停止
sudo nps stop

NPS - 轻量级内网穿透代理服务器

PS:如果发现没有启动成功,可以查看日志(Windows日志文件位于当前运行目录下,Linux和Darwin位于/var/log/nps.log)

5、nps默认配置文件使用了80、443、8080、8024端口,请在云服务器和宝塔面板的防火墙中放行这些需要用到的端口,如下图。

●80与443端口为域名解析模式默认端口
●8080为web管理访问端口
●8024为网桥端口,用于客户端与服务器通信

NPS - 轻量级内网穿透代理服务器

NPS - 轻量级内网穿透代理服务器

6、访问服务端ip:web服务端口(默认为ip:8080),使用默认的用户名(admin)和密码登陆(123);

NPS - 轻量级内网穿透代理服务器

7、WEB管理界面如下图;

NPS - 轻量级内网穿透代理服务器

8、以上便是宝塔安装NPS服务端的操作步骤。

9、更多高级用法,详见官方完整文档:https://ehang-io.github.io/nps/#/?id=nps

NPS内网穿透实现Windows远程桌面连接-十一张

直接在服务器上安装NPS

若你的服务器没有安装宝塔面板,我们也可以用下面的方法直接在服务器上安装NPS。

1、首先确保你的服务器环境满足安装要求,然后使用下面的命令进行安装;

//下载NPS服务端到服务器
wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz

//创建一个文件夹
mkdir nps-server

//移动文件
mv linux_amd64_server.tar.gz nps-server/

//进入文件夹
cd nps-server

//解压文件
tar -zxvf linux_amd64_server.tar.gz

//执行NPS安装命令
sudo ./nps install

//启动NPS服务
sudo nps start

2、nps默认配置文件使用了80、443、8080、8024端口,请在云服务器的防火墙中放行这些需要用到的端口,然后访问服务端ip:web服务端口(默认为ip:8080),使用默认的用户名(admin)和密码登陆(123),例如:

http://116.198.204.16:8080

NPS - 轻量级内网穿透代理服务器

常见问题

问题:修改了用户名、密码和http端口,但是没有生效,重启NPS或云服务器也没用!

答案:nps install 安装后,默认的 nps.conf 配置文件在 etc/nps/conf 目录下面,如果你修改的是以前下载位置的 nps.conf 配置文件当然不生效,请确认修改的文件是否是正在加载的配置文件。另外,修改完 nps.conf 配置文件之后,需要切换到 nps 安装目录 nps restart 命令重启即可生效。在 etc/nps/conf/nps.conf 配置文件中可以修改用户名、密码、管理端口等参数,如下:

##bridge
bridge_type=tcp
bridge_port=443(修改连接端口)
bridge_ip=0.0.0.0

#web
web_host= 服务器IP或者域名
web_username= admin(登录用户名)
web_password= 你的密码
web_port=8080(web管理端口)

NPS - 轻量级内网穿透代理服务器

✅来源:十一张博客
© 版权声明
THE END
如果觉得这篇文章对您有帮助,不妨考虑请我喝杯奶茶😄
点赞1赞赏 分享
评论 抢沙发
头像
评论人工审核通过显示,请勿重复提交!
提交
头像

昵称

取消
昵称表情代码

    暂无评论内容