简单又易用的内网穿透工具NPS

自述

NPS内网穿透工具是一款轻量级、高性能、功能强大的代理服务器,用于实现内网与外网之间的通信。它可以将外部网络请求转发到内网服务器,使得内网服务器可以被外部访问到。NPS支持TCP和UDP流量转发,并且可以支持任何TCP和UDP上层协议,例如访问内网网站、本地支付接口调试、SSH访问、远程桌面等。

为什么要使用NPS

  1. frp手动编写映射规则配置文件。nps在浏览器中可视化配置。
  2. frp新增映射规则需要重启客户端。nps无需重启客户端,所有配置均在服务端进行配置立即生效。
  3. frp需要手动设置开机自启。nps安装后自动注册到系统服务,随系统启动而启动。

教程内容比较多,总体下来部署非常快,除去安装的过程需要命令操作安装完成后就完全脱离了终端操作。

搭建教程

客户端与服务端下载地址:https://github.com/ehang-io/nps/releases

在Linux上搭建服务端

下载服务端文件

mkdir nps && cd nps
# 下载服务端
wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz
# 解压
tar -zxvf linux_amd64_server.tar.gz

编辑配置文件

vim conf/nps.conf

常用配置:

  • http_proxy_port:域名代理http代理监听端口。
  • https_proxy_port:域名代理https代理监听端口。
  • https_just_proxy:为false时仅代理https转发,为true则可以配置站点的ssl证书。
  • web_port:web管理端口。
  • web_username:web界面管理账号。
  • web_password:web界面管理密码。

安装服务端

# 进行安装
./nps install
# 启动nps
nps start

安装完成后,nps的配置文件会存放在/etc/nps目录下。

在Windows上搭建服务端

下载服务端文件

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

下载文件后,可以使用WinRAR等软件解压出来得到以下文件目录

image-20240225160819118

编辑配置文件

使用记事本或者你任意喜欢的文本编辑器编辑conf/nps.conf文件,配置文件的内容与Linux中部署是一样的道理。

安装服务端

我们需要使用管理员权限来运行cmd终端:按下Windows键,打开开始菜单,搜索cmd,以管理员身份运行。

image-20240225161010605

在命令行中按以下步骤进行。

# 进入到存放nps目录的地方执行命令安装
C:\Users\hakd>cd /d H:\test\nps\windows_amd64_server
# 执行安装命令
H:\test\nps\windows_amd64_server>nps.exe install
# 中间会有安装过程的输出,这里不展示....
.....
# 需要使用管理员模式下的cmd执行启动
H:\test\nps\windows_amd64_server>net start nps
nps内网穿透代理服务器 服务正在启动 .
nps内网穿透代理服务器 服务已经启动成功。

H:\test\nps\windows_amd64_server>net stop nps
nps内网穿透代理服务器 服务正在停止.
nps内网穿透代理服务器 服务已成功停止。

安装完的nps在以下目录中,要修改配置文件也需要修改该目录下的配置文件。

image-20240225162310759

注:安装过程中若出现以下错误提示或相似的错误,只需要将nps下的conf目录完整的拷贝至 C:\Program Files\nps\目录下,然后重新执行nps.exe install来安装。

load config file error the target config file: C:\Program Files\nps\conf\nps.conf don't exist

访问web控制台

通过访问http://127.0.0.1:8080来进入到控制台登录界面,使用配置的web_usernameweb_password来进行登录。

创建客户端

一台需要映射的机器视作一个客户端,我们需要先在控台创建好客户端,才能对需要穿透的主机进行穿透。我们点击左侧的客户端进入到客户端管理界面。点击新增客户端添加一个需要映射客户端的基本信息:

image-20240225162657187

填写备注基本就可以了,填写完成点击新增按钮即可添加成功,新增完会自动回到客户端列表,此时刷新即可看到新增的客户端:

image-20240225162758468

  1. ID:id是用来区分主机的,胚子的域名绑定和端口映射都是跟id挂钩的。
  2. 备注:用于方便区分不同的机器。
  3. 版本:内网机器安装的客户端版本。
  4. 唯一验证密钥:内网机器安装的客户端通过这个密码可以找到与平台挂钩的映射配置,唯一且只能被一个客户端引用。

配置端口映射

在每个客户端后面也就是右侧中有两个按钮,在隧道中可以配置端口映射规则,进入到隧道我们新增一个隧道:

image-20240225163052665

依次来看:

  1. 模式:映射的端口走的什么协议,比如(TCP,UDP)等等。一般映射网站也可以使用TCP协议。
  2. 客户端ID:这个映射规则被哪个客户端所使用,一般情况下也可以直接修改现有规则的客户端ID将规则移动到指定客户端下。
  3. 备注:给自己看的,用于分别映射用途。
  4. 服务端端口:即搭建NPS服务器的自身端口,不可重复使用同一个端口。
  5. 目标(IP:端口):指内网客户端需要映射的端口,如(127.0.0.1:3389),也可以是内网其他机器如(192.168.1.100:3389)。

点击下方新增按钮即可立即生效。

配置域名访问

如果内网存在网站这种服务,想要使用域名访问内网的网站则可以配置主机映射,同样的在客户单列表中选择指定的客户端右侧的主机按钮进入到域名配置页面,点击新增按钮:

image-20240225163607944

继续来看每一个作用重复的内容不再赘述:

  1. 主机:即需要是什么域名来访问咱们的服务,填写域名即可。
  2. 模式:这里分(http、https)。
  3. URL路由:则是区分不同的路由访问不同的服务类似nginx代理(http://a.com/a、http://a.com/b)。

如果经常使用域名访问服务,还是比较推荐使用域名泛解析*来解析道NPS服务器的IP上。

安装客户端

Linux上安装

mkdir npc && cd npc
wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_client.tar.gz
tar -zxvf linux_amd64_client.tar.gz
# 安装命令
./npc install -server=127.0.0.1:8024 -vkey=h24o6k3gpww2qapc -type=tcp
# 启动客户端开始映射
npc start
  1. -server:这里是你NPS服务器的IP地址。
  2. -vkey:是指定客户端的唯一验证密钥,即安装成功后可以看到当前客户端处于在线状态。

windows上安装

下载客户端文件并存放解压:

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

同理,以管理员权限打开cmd进入存放客户单的目录下执行:

# 安装命令
npc.exe install -server=127.0.0.1:8024 -vkey=h24o6k3gpww2qapc -type=tcp
# 启动映射
net start npc

这里需要注意:在windwos上可能会被杀毒软件误杀,找回文件放入白名单即可。


至此,所有的安装和配置过程均已结束。后面添加映射规则只需要前往web控制台操作即可,每一条规则添加完成后都是立即生效的无需重启任何服务。服务端和客户端如若出现电脑重启的情况也没关系,等系统启动后映射服务会自动启动,无需担心穿透失联。