探索未知,记录点滴

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

Spread the love

之前写过一篇利用frp实现Mac的内网穿透的文章,刚好最近在和群里的大佬@九歌谈论内网http文件服务器部署,又想起了穿透这回事。之前群友向我推荐nps这个开源项目,趁此机会上手体验了一番,以下是我的部署过程和体会。

交流群:Newlearnerの水群

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

项目介绍与部署

  • nps简介

NPS是一款轻量级、功能强大的内网穿透代理服务器。支持tcp、udp流量转发,支持内网http代理、内网socks5代理,支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……,同时支持snappy压缩、站点保护、加密传输、多路复用、header修改等。支持web图形化管理,集成多用户模式。

所以这是一款集「代理」和「穿透」于一体的工具,我认为最大的优点就是图形化

相比于frp、ngrok等,你不需要配置繁琐的客户端与服务端文件,只需要搭建好web管理环境,就可以用图形化界面配置客户端。

  • 项目结构

nps
├── conf (server配置文件)
│          ├── clients.json
│          ├── nps.conf
│          ├── tasks.json
│          └── hosts.json
├── web(web端静态页面)
│          ├── static
│          └── views
└── nps(二进制文件)
npc
├── npc.conf (client配置文件)
└── npc(二进制文件)
  • 服务端部署

项目releases地址:github—nps

支持Linux、Windows、Mac和安卓,下载时候注意对应架构和操作系统位数。下载完毕解压,运行二进制文件即可。

不得不承认nps的守护进程真的省了很多事,赞一个!

当然你也可以用docker部署,前人之述备矣:Docker安装一个带web界面的内网穿透工具-nps

配置文件详解

  • 服务端

  • 客户端

因为nps有其自身的特点,可以在web端处理客户端的配置,因此在这里不详细阐述客户端的配置方式。

请参照client文件给出的参考配置和客户端文档。

  • web端

部署好服务端之后就可以根据指定的ip和端口登录web管理界面了,如图所示。nps的web界面做的十分优秀,我们可以直接在里面设置client端,并进一步设置客户端需要的代理和穿透方式,十分方便并且容易上手。

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

实战示例

  • 给Mac做ssh内网穿透

首先在「设置」—「共享」中开启远程登录

打开web端,新建一个客户端,输入服务端的代理端口以及用于认证的vkey即可。

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

保存之后可以看到「客户端」一栏中多了我们刚刚添加的名为MacBook Pro的项目,接着点击tunnel。

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

在tunnel里面我们配置访问ssh的服务器端口(外网port)和Mac的ssh port(内网端口),传输方式为tcp。

填写目标的时候注意ip地址即为内网设备获得的内网ip,如192.168.x.xxx等。如果你的内网ip会变动,这里直接填写端口即可。

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

web端配置好之后开始运行客户端,此时client的二进制文件完全可以丢开本地的客户端配置,灵活的对应上刚刚配置好的内容。客户端支持无配置文件启动模式是我写第二篇内网穿透工具介绍的主要原因。

  • 给Mac做VNC穿透

觉得用ssh看命令行不过瘾?不如我们来远程桌面吧!

在「设置」—「共享中」打开屏幕共享,记得加上一个访问密码。

按照案例一的做法,其他不变,将端口更改为5900即可。Mac上的VNC viewer默认访问地址的端口是5900,所以最好把内网端口和服务端的端口都设置成5900。

下载VNC viewer:传送门

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

即可享受远程的“乐趣”,服务器与本地网络连接速度太慢请不要轻易尝试,卡顿感十足。

  • Mac文件服务器和静态页面部署

安装caddy,并配置好Caddyfile如下:

启动caddy,在nps的web管理界面按实例一的方法配置好tcp端口,并解析域名到服务器ip,输入域名和端口即可访问。由于nps支持端口复用,将bridge_port、 http_proxy_port、 https_proxy_port 、web_port都设置为同一端口,也能正常使用。因此我们可以通过域名来区分不同的web页面。

通过穿透2015端口,我们在外网可以访问到Mac的文件。我认为caddy做的file index页面挺好看的,如果觉得不安全还可以使用filebrowser这个项目。打开后如下图:

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

通过穿透2016端口,访问部署在Mac上面的静态网页。

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

当然,如果你觉得输入域名+端口还不够简洁,想要让全部网页走80/443,也可以借助服务端的nginx做反代,nginx配置如下:

其他

nps还有很多其他花里胡哨的功能,可惜我用不到。相信需求不同的人使用nps的功能也不尽相同,所以简单阐述一下我没有提及的功能。详细的文档请到github看readme:github—nps

我个人觉得nps是比frp易上手、功能丰富的,但是nps仍然存在一些问题:比如在web管理界面设置tcp隧道等传输协议时,时常发现不能在网页上及时显示出设置好的配置。此时tcp隧道实际已经设置成功但web界面仍然不显示(V0.23.1)。希望后续的版本能够改进。

还有一个问题就是稳定性,这点来讲frp做的好些,毕竟功能不是这么丰富,也希望后续的更新能够慢慢完善这些问题!

 

就酱,等以后有了路由器和nas、树莓派之后,这些穿透项目的运用可能会变得频繁些。还是先种草吧!

发表评论

邮箱地址不会被公开。 必填项已用*标注

Recommended
在浏览网站的过程中,…