简介
nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。
效果图

安装
安装服务端
mkdir /opt/nps
cd /opt/nps
wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz
tar -xvf linux_amd64_server.tar.gz安装客户端
mkdir /opt/npc
cd /opt/npc
wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_client.tar.gz
tar -xvf linux_amd64_client.tar.gz服务端基本使用
提示:使用web模式时,服务端执行文件必须在项目根目录,否则无法正确加载配置文件
web管理
进入web界面,公网ip:web界面端口(默认8080),密码默认为123
进入web管理界面,有详细的说明
服务端配置文件重载
对于linux、darwin
 sudo nps reloadCopy to clipboardErrorCopied对于windows
 nps.exe reloadCopy to clipboardErrorCopied说明: 仅支持部分配置重载,例如allow_user_login auth_crypt_key auth_key web_username web_password 等,未来将支持更多
服务端停止或重启
对于linux、darwin
 sudo nps stop|restartCopy to clipboardErrorCopied对于windows
 nps.exe stop|restartCopy to clipboardErrorCopied服务端更新
请首先执行 sudo nps stop 或者 nps.exe stop 停止运行,然后
对于linux
 sudo nps-update updateCopy to clipboardErrorCopied对于windows
 nps-update.exe updateCopy to clipboardErrorCopied更新完成后,执行执行 sudo nps start 或者 nps.exe start 重新运行即可完成升级
如果无法更新成功,可以直接自行下载releases压缩包然后覆盖原有的nps二进制文件和web目录
注意:nps install 之后的 nps 不在原位置,请使用 whereis nps 查找具体目录覆盖 nps 二进制文件
客户端基本使用
无配置文件模式
此模式的各种配置在服务端web管理中完成,客户端除运行一条命令外无需任何其他设置
 ./npc -server=ip:port -vkey=web界面中显示的密钥Copy to clipboardErrorCopied注册到系统服务(开机启动、守护进程)
对于linux、darwin
- 注册:sudo ./npc install 其他参数(例如-server=xx -vkey=xx或者-config=xxx)
- 启动:sudo npc start
- 停止:sudo npc stop
- 如果需要更换命令内容需要先卸载./npc uninstall,再重新注册
对于windows,使用管理员身份运行cmd
- 注册:npc.exe install 其他参数(例如-server=xx -vkey=xx或者-config=xxx)
- 启动:npc.exe start
- 停止:npc.exe stop
- 如果需要更换命令内容需要先卸载npc.exe uninstall,再重新注册
- 如果需要当客户端退出时自动重启客户端,请按照如图所示配置
注册到服务后,日志文件windows位于当前目录下,linux和darwin位于/var/log/npc.log
客户端更新
首先进入到对于的客户端二进制文件目录
请首先执行sudo npc stop或者npc.exe stop停止运行,然后
对于linux
 sudo npc-update updateCopy to clipboardErrorCopied对于windows
npc-update.exe updateCopy to clipboardErrorCopied更新完成后,执行执行sudo npc start或者npc.exe start重新运行即可完成升级
如果无法更新成功,可以直接自行下载releases压缩包然后覆盖原有的npc二进制文件
配置文件模式
此模式使用nps的公钥或者客户端私钥验证,各种配置在客户端完成,同时服务端web也可以进行管理
 ./npc -config=npc配置文件路径Copy to clipboardErrorCopied配置文件说明
示例配置文件
全局配置
[common]
server_addr=1.1.1.1:8024
conn_type=tcp
vkey=123
username=111
password=222
compress=true
crypt=true
rate_limit=10000
flow_limit=100
remark=test
max_conn=10
#pprof_addr=0.0.0.0:9999Copy to clipboardErrorCopied| 项 | 含义 | 
|---|---|
| server_addr | 服务端ip/域名:port | 
| conn_type | 与服务端通信模式(tcp或kcp) | 
| vkey | 服务端配置文件中的密钥(非web) | 
| username | socks5或http(s)密码保护用户名(可忽略) | 
| password | socks5或http(s)密码保护密码(可忽略) | 
| compress | 是否压缩传输(true或false或忽略) | 
| crypt | 是否加密传输(true或false或忽略) | 
| rate_limit | 速度限制,可忽略 | 
| flow_limit | 流量限制,可忽略 | 
| remark | 客户端备注,可忽略 | 
| max_conn | 最大连接数,可忽略 | 
| pprof_addr | debug pprof ip:port | 
域名代理
[common]
server_addr=1.1.1.1:8024
vkey=123
[web1]
host=a.proxy.com
target_addr=127.0.0.1:8080,127.0.0.1:8082
host_change=www.proxy.com
header_set_proxy=npsCopy to clipboardErrorCopied| 项 | 含义 | 
|---|---|
| web1 | 备注 | 
| host | 域名(http | 
| target_addr | 内网目标,负载均衡时多个目标,逗号隔开 | 
| host_change | 请求host修改 | 
| header_xxx | 请求header修改或添加,header_proxy表示添加header proxy:nps | 
tcp隧道模式
[common]
server_addr=1.1.1.1:8024
vkey=123
[tcp]
mode=tcp
target_addr=127.0.0.1:8080
server_port=9001Copy to clipboardErrorCopied| 项 | 含义 | 
|---|---|
| mode | tcp | 
| server_port | 在服务端的代理端口 | 
| tartget_addr | 内网目标 | 
udp隧道模式
[common]
server_addr=1.1.1.1:8024
vkey=123
[udp]
mode=udp
target_addr=127.0.0.1:8080
server_port=9002Copy to clipboardErrorCopied| 项 | 含义 | 
|---|---|
| mode | udp | 
| server_port | 在服务端的代理端口 | 
| target_addr | 内网目标 | 
http代理模式
[common]
server_addr=1.1.1.1:8024
vkey=123
[http]
mode=httpProxy
server_port=9003Copy to clipboardErrorCopied| 项 | 含义 | 
|---|---|
| mode | httpProxy | 
| server_port | 在服务端的代理端口 | 
socks5代理模式
[common]
server_addr=1.1.1.1:8024
vkey=123
[socks5]
mode=socks5
server_port=9004
multi_account=multi_account.confCopy to clipboardErrorCopied| 项 | 含义 | 
|---|---|
| mode | socks5 | 
| server_port | 在服务端的代理端口 | 
| multi_account | socks5多账号配置文件(可选),配置后使用basic_username和basic_password无法通过认证 | 
私密代理模式
[common]
server_addr=1.1.1.1:8024
vkey=123
[secret_ssh]
mode=secret
password=ssh2
target_addr=10.1.50.2:22Copy to clipboardErrorCopied| 项 | 含义 | 
|---|---|
| mode | secret | 
| password | 唯一密钥 | 
| target_addr | 内网目标 | 
p2p代理模式
[common]
server_addr=1.1.1.1:8024
vkey=123
[p2p_ssh]
mode=p2p
password=ssh2
target_addr=10.1.50.2:22Copy to clipboardErrorCopied| 项 | 含义 | 
|---|---|
| mode | p2p | 
| password | 唯一密钥 | 
| target_addr | 内网目标 | 
文件访问模式
利用nps提供一个公网可访问的本地文件服务,此模式仅客户端使用配置文件模式方可启动
[common]
server_addr=1.1.1.1:8024
vkey=123
[file]
mode=file
server_port=9100
local_path=/tmp/
strip_pre=/web/Copy to clipboardErrorCopied| 项 | 含义 | 
|---|---|
| mode | file | 
| server_port | 服务端开启的端口 | 
| local_path | 本地文件目录 | 
| strip_pre | 前缀 | 
对于strip_pre,访问公网ip:9100/web/相当于访问/tmp/目录
断线重连
[common]
auto_reconnection=true官方文档
https://ehang-io.github.io/nps/#/installgithub:
https://github.com/ehang-io/nps.git


















![详解洛谷P2912 [USACO08OCT] Pasture Walking G(牧场行走)(lca模板题)](https://img-blog.csdnimg.cn/direct/b373e33186b043ac86e3a7a5566a4a7f.png)