内网穿透工具nps的使用
qinsz 5/6/2025 npsnpcubuntu
# 一、服务端/代理端(nps)
# 1.1 下载nps
将nps包下载到当前用户任意路径
cd ~/downloads
wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz
1
2
2
# 1.2 解压linux_amd64_server.tar.gz
将gz文件解压到当前用户下的nps路径
mkdir ~/nps
tar -zxvf ~/downloads/linux_amd64_server.tar.gz -C ~/nps
1
2
2
解压后在~/nps路径下可以看到3样内容:conf文件夹、nps可执行程序、web文件夹
# 1.3 安装nps
进入到~/nps执行安装
cd ~/nps
sudo ./nps install
1
2
2
- 安装完成后,会自动将
nps可执行文件拷贝到/usr/bin中形成nps环境变量 - 同时会将
web和conf文件夹拷贝到/etc/nps中,通过环境变量nps运行的程序会使用/etc/nps中的配置文件
# 1.4 修改配置文件
修改位于/etc/nps/conf/nps.conf的配置文件,主要配置项如下:
http_proxy_port=6080和https_proxy_port=6443: http(s)统一代理,通过配置域名和内网IP:端口的匹配规则,将nps服务器的http(s)转发到内网中bridge_type=tcp桥接方式:客户端与服务端建立连接的方式,一般为tcpbridge_port=6024桥接端口:nps应用桥接监听端口,客户端以该端口为目标与服务端建立连接public_vkey=AaBbCcDd:- 当允许客户端自动注册时,客户端在连接nps时需要使用到该密钥
- 本密钥应设为一个较长的随机字符串
- 本流程没有使用客户端自动注册模式,因此该密钥在后续流程中不会涉及
web_port = 6060:nps管理系统所运行的端口,可在浏览器中通过<nps服务器IP>:<web_port>访问管理页面web_username=admin和web_password=123456: 访问管理系统所使用的账号密码auth_crypt_key=1234567812345678:客户端与服务端进行数据传输时使用的加密Key,长度必须为16位,不会直接使用它但也应该设计为随机字符串http_add_origin_header=true: 在域名代理模式中,可以通过request请求 header 中的 X-Forwarded-For 和 X-Real-IP 来获取用户真实IP
# 1.5 启动nps
sudo nps start
1
启动之后的日志文件位于/var/logs/nps.log
# 1.5 创建客户端
根据配置文件中的配置,通过浏览器访问<nps服务器IP地址>:6060进入到管理页面
在客户端选项中添加1个客户端,可以只填写一下备注信息。
添加完成后会为客户端生成一个唯一验证密钥,客户端连接时需要使用该信息,该信息也作为客户端的身份信息
# 1.6 设置隧道
点击客户端列表中的隧道,进入到隧道管理列表,点击新增进入规则设置:
- 模式:选择相应协议,tcp用途较广,可用于tcp、http(s)以及ssh连接等
- 客户端ID:该规则所绑定的客户端ID号
- 服务端端口:即需要绑定的nps服务器的端口号
- 目标 (IP:端口):需要与
服务端端口进行穿透的内网计算机的IP及端口号
# 二、客户端(npc)
# 2.1 下载npc
将与nps版本一致的npc下载到当前用户任意路径
cd ~/downloads
wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_client.tar.gz
1
2
2
# 2.2 解压linux_amd64_client.tar.gz
将gz文件解压到当前用户下的npc路径
mkdir ~/npc
tar -zxvf ~/downloads/linux_amd64_client.tar.gz -C ~/npc
1
2
2
解压后在~/nps路径下可以看到2样内容:conf文件夹、npc可执行程序
# 2.3 直接启动npc服务
npc可以不进行install操作而直接启动,只需要在启动时加入必要参数即可:
nohup ~/npc/npc -server=<nps服务器IP地址>:6024 -vkey="唯一验证密钥" >> ~/log/npc.log &
1
~/npc/npc:npc应用程序server: 指定nps所在服务器的IP地址和端口号-vkey: 填写nps的web管理页面中创建的客户端所生成的唯一验证密钥- 日志文件输出到当前用户的目录
~/log/npc.log因此执行该启动指令不需要sudo权限 - 可以在日志文件中看到连接的情况