本文环境
- CentOS Linux release 7.8.2003
- Nps 0.26.9
1. NPS介绍
Nps是一个内网穿透工具,开源。
Github:https://github.com/ehang-io/nps
特征:
- 全面的协议支持,与几乎所有常用协议兼容,例如tcp,udp,http(s),socks5,p2p,http代理...
- 全面的平台兼容性(Linux,Windows,MacOS,Synology等),仅支持将安装作为系统服务进行。
- 全面控制,允许客户端和服务器控制。
- Https集成,支持将后端代理和Web服务转换为https,并支持多个证书。
- 只需在Web ui上进行简单配置即可完成大多数要求。
- 完整的信息显示,例如流量,系统信息,实时带宽,客户端版本等。
- 强大的扩展功能,一切可用(缓存,压缩,加密,流量限制,带宽限制,端口重用等)
- 域名解析具有诸如自定义标题,404页面配置,主机修改,站点保护,URL路由和全景解析之类的功能。
- 服务器上的多用户和用户注册支持。
本文使用的安装材料:
链接:https://pan.baidu.com/s/18COdcy8niyGZLdikNlDXgw
提取码:w6dq
2. 服务端部署
下载安装包并解压:
wget https://github.com/ehang-io/nps/releases/download/v0.26.9/linux_arm64_server.tar.gz
tar -zxvf linux_arm64_server.tar.gz
进入解压后的conf
目录,编辑nps.conf
配置文件,可修改其中部分配置,本文根据需要修改了如下配置:
# 修改http和https端口号
http_proxy_port=82
https_proxy_port=445
# 修改web的密码和端口占用等信息
web_host=nps.nineya.com
web_username=admin
web_password=123456
web_port=8088
nps安装:
这不是一个必须的步骤,但是安装后nps
将被拷贝到/bin
目录,其他文件拷贝到/etc/nps
目录,修改解压路径的文件将不再生效了。
./nps install
启动:
也许这是当前版本的一个bug,亲测使用nps start
命令是无法启动的,但是直接nps
是可以启动的。
# 未安装则在解压目录启动
./nps
# 安装后可直接使用命令
nps
3. 进阶部署
nps直接启动时不是后台运行,而且不能输出日志,不能设置为开机自启啥的,不怎么方便。所以本文将nps做成了linux的服务,用于保证开机自启。
为实现将程序输出写入文件功能,编写实现了如下脚本,放在nps
根目录:
该脚本实现创建logs
目录,每次启动将程序输出写入日志文件功能。
#!/bin/bash
home_dir=$(dirname $(readlink -f "$0"))
logs_dir=$home_dir/logs
if [ ! -d $logs_dir ]; then
sudo mkdir -p -m 755 $logs_dir
fi
$home_dir/nps >> $logs_dir/run-$(date "+%Y%m%d%H%M%S").log
使用vim
创建service文件
sudo vim /etc/systemd/system/nps.service
nps.service内容:
[Unit]
Description=Nps Service
Documentation=https://nps.nineya.com
After=network-online.target
Wants=network-online.target
[Service]
User=root
Type=simple
ExecStart=/bin/bash /www/wwwroot/nps.nineya.com/run.sh
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog
StandError=inherit
[Install]
WantedBy=multi-user.target
4. web配置
打开浏览器,登录nps的web端:
进入客户端选项,点击左上角新增
按钮,选择默认配置即可,添加一个客户端。
本文目的是实现windows远程桌面功能,远程桌面的端口是3389
,所以本文添加了一个TCP隧道,配置如下:
- 客户端ID:刚刚添加的客户端的ID
- 服务端端口:访问nps服务端的端口
- 目标 (IP:端口):被穿透的目标机子ip和被穿透的端口号,如果是nps客户端所在的机子可以不填写ip
5. 客户端配置
下载安装包解压,打开cmd
,定位到解压路径。
进入web的客户端界面,查看启动命令,将该命令复制到终端执行即可:
可通过修改conf/npc.conf
配置启动参数,无须在启动时添加参数。
同样可以将客户端做成服务用于开机自启,windows本文提供了一个服务制作的工具(SRVINSTW.EXE
),在本文提供的压缩包里。