NPS 内网穿透

轻量级、高性能、功能强大的开源内网穿透代理服务器

一、项目简介

NPS(NatPass Server)是一款基于 Go 语言开发的轻量级内网穿透代理服务器,支持多种协议,提供强大的 Web 管理界面。它可以帮助你在没有公网 IP 的情况下,将内网服务安全地暴露到公网。

特性说明
多协议支持TCP、UDP、HTTP、HTTPS、SOCKS5、P2P
Web 管理可视化配置,无需修改配置文件
跨平台Windows、Linux、macOS、群晖 NAS
系统服务可安装为系统服务,开机自启
安全功能加密传输、流量限制、访问控制
开源免费MIT 协议,可自建私有化部署

二、核心功能

2.1 支持的代理类型

类型说明适用场景
TCP 隧道端口转发SSH、远程桌面、数据库
UDP 隧道UDP 端口转发DNS、游戏服务器
HTTP 代理域名绑定内网网站、API 接口
HTTPS 代理SSL 证书支持安全网站访问
SOCKS5 代理全局代理内网网络访问
P2P 穿透点对点直连大文件传输

2.2 高级特性

  • 多路复用:单连接承载多隧道,节省资源

  • 流量加密:TLS/SSL 加密传输

  • 流量压缩:Snappy 压缩算法

  • 带宽限制:限制客户端上传/下载速度

  • 访问控制:IP 白名单、时间限制

  • 域名解析:泛域名、URL 路由、404 自定义

  • 多用户支持:团队协作,权限隔离


三、架构原理

┌─────────────────────────────────────────────────────────────┐
│                        网络架构                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│    公网用户        公网服务器(有公网IP)        内网设备       │
│         │                   │                    │          │
│         │                   │                    │          │
│         ▼                   ▼                    ▼          │
│   ┌──────────┐      ┌──────────────┐      ┌──────────┐    │
│   │ 浏览器/  │      │   NPS 服务端  │◄────►│  NPC 客户端│    │
│   │ 客户端   │─────►│  (nps)8024   (npc)   │    │
│   └──────────┘      └──────────────┘      └──────────┘    │
│                            │                    │          │
│                            ▼                    ▼          │
│                      Web 管理界面(8080)    内网服务        │
│                                                             │
└─────────────────────────────────────────────────────────────┘

通信流程

  1. NPS 服务端部署在具有公网 IP 的服务器上

  2. NPC 客户端部署在内网设备上,主动连接服务端

  3. 公网用户访问服务端端口,NPS 将流量转发到 NPC

  4. NPC 将请求转发到内网具体服务


四、服务端安装(NPS)

4.1 Docker 部署(推荐)

# 拉取镜像
docker pull duan2001/nps

# 运行容器
docker run -d --restart=always --name nps   --net=host   -v $(pwd)/conf:/conf   -v /etc/localtime:/etc/localtime:ro   duan2001/nps

4.2 Linux 安装

# 一键安装脚本
wget -qO- https://raw.githubusercontent.com/djylb/nps/refs/heads/master/install.sh | sudo sh -s nps

# 启动服务
sudo nps start

# 查看状态
sudo nps status

4.3 Windows 安装

# 下载 Windows 版本解压后执行
.\nps.exe install
.\nps.exe start

4.4 默认端口

端口用途
8080Web 管理界面
8024客户端通信(网桥端口)
80HTTP 代理
443HTTPS 代理

五、客户端安装(NPC)

5.1 Docker 部署

docker pull duan2001/npc

docker run -d --restart=always --name npc   --net=host   duan2001/npc   -server=服务器IP:8024   -vkey=客户端密钥   -tls_enable=true   -log=off

5.2 Linux 安装

# 一键安装
wget -qO- https://raw.githubusercontent.com/djylb/nps/refs/heads/master/install.sh | sudo sh -s npc

# 安装为系统服务
sudo /usr/bin/npc install   -server=服务器IP:8024   -vkey=客户端密钥   -type=tcp   -tls_enable=true   -log=off

# 启动
sudo npc start

5.3 Windows 安装

# 安装为系统服务
.\npc.exe install `
  -server="服务器IP:8024" `
  -vkey="客户端密钥" `
  -type="tcp" `
  -tls_enable="true" `
  -log="off"

# 启动
.\npc.exe start

5.4 临时运行(不注册服务)

# Linux/macOS
./npc -server=服务器IP:8024 -vkey=客户端密钥 -type=tcp

# Windows
npc.exe -server=服务器IP:8024 -vkey=客户端密钥 -type=tcp

六、Web 管理界面配置

6.1 登录

浏览器访问:http://服务器IP:8080

默认账号:admin
默认密码:123

⚠️ 首次登录后务必修改默认密码!

6.2 创建客户端

1. 点击左侧「客户端」→「新增」
2. 填写备注名称(如"家里NAS"
3. 选择是否允许压缩、加密
4. 保存后获得 vkey(验证密钥)

6.3 配置隧道

TCP 隧道(远程桌面示例)

类型:TCP
客户端:选择刚创建的客户端
服务端端口:13389(公网访问端口)
目标IP127.0.0.1
目标端口:3389(内网远程桌面端口)

访问方式:服务器公网IP:13389

HTTP 代理(内网网站示例)

类型:HTTP
客户端:选择对应客户端
域名:nas.yourdomain.com
目标IP192.168.1.100
目标端口:80

访问方式:http://nas.yourdomain.com

HTTPS 代理

类型:HTTPS
域名:secure.yourdomain.com
目标IP192.168.1.100
目标端口:443
证书:上传 SSL 证书文件

七、配置文件详解

7.1 服务端配置(nps.conf)

# 基本配置
appname = nps
runmode = dev

# HTTP 代理端口
http_proxy_ip=0.0.0.0
http_proxy_port=80

# HTTPS 代理端口
https_proxy_port=443
https_just_proxy=false

# 网桥端口(客户端连接用)
bridge_port=8024
bridge_ip=0.0.0.0

# Web 管理端口
web_port=8080
web_ip=0.0.0.0
web_username=admin
web_password=你的强密码

# 日志配置
log_level=7
log_path=/var/log/nps.log
log_daily=true

# 安全设置
auth_key=自定义密钥
allow_time_limit=true

7.2 客户端配置(npc.conf)

[common]
server_addr=服务器IP:8024
conn_type=tcp
vkey=客户端密钥
auto_reconnection=true
max_conn=1000
flow_limit=1000
rate_limit=1000
basic_username=用户名
basic_password=密码
web_username=用户名
web_password=密码
crypt=true
compress=true

八、典型应用场景

8.1 远程桌面访问

内网 Windows 电脑 → NPC 客户端 → NPS 服务端 → 公网访问

配置:TCP 隧道,映射 3389 端口

8.2 内网网站发布

内网 Web 服务 → NPC 客户端 → NPS 服务端 → 域名访问

配置:HTTP/HTTPS 代理,绑定域名

8.3 SSH 远程管理

内网 Linux 服务器 → NPC 客户端 → NPS 服务端 → SSH 连接

配置:TCP 隧道,映射 22 端口

8.4 本地开发调试

本地开发环境 → NPC 客户端 → NPS 服务端 → 微信/支付回调

配置:HTTP 代理,用于接收第三方回调

8.5 家庭 NAS 访问

群晖/威联通 NASNPC 客户端 → NPS 服务端 → 外网访问

配置:HTTP + TCP 组合,Web 界面 + 文件服务


九、安全加固

9.1 必做事项

措施说明
修改默认密码Web 管理界面默认密码必须修改
启用 TLS客户端连接启用 -tls_enable=true
限制访问IPWeb 管理界面配置 IP 白名单
关闭不必要端口防火墙只开放必要端口
定期更新关注项目更新,及时修复漏洞

9.2 防火墙配置

# 仅开放必要端口
iptables -A INPUT -p tcp --dport 8080 -s 你的IP -j ACCEPT
iptables -A INPUT -p tcp --dport 8024 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 13389 -j ACCEPT

十、常见问题

问题原因解决
客户端连接失败防火墙阻止开放 8024 端口
Web 界面打不开端口冲突修改 nps.conf 中的 web_port
域名访问失败DNS 未解析确认域名 A 记录指向服务器 IP
HTTPS 证书错误证书配置错误检查证书文件路径和格式
流量统计不准Socks5 代理更新到最新版本
高并发连接失败连接数限制调整 max_conn 参数

十一、相关资源

资源地址
NPS Enhanced(活跃维护版)github.com/djylb/nps
NPS V2(接力版)github.com/aisyun/np...
DockerHub NPSduan2001/nps
DockerHub NPCduan2001/npc
中文文档各项目 GitHub Wiki

十二、版本选择建议

版本特点推荐度
djylb/nps活跃维护,功能增强,Bug 修复⭐⭐⭐⭐⭐
aisyun/nps-v2社区接力,稳定可用⭐⭐⭐⭐
原版 ehang-io/nps已停止更新,不推荐⭐⭐

提示:NPS 适合中小型团队和个人使用。对于大规模企业级应用,建议考虑商业方案或自建更复杂的架构。
作者:zws  创建时间:2026-05-05 00:37
最后编辑:zws  更新时间:2026-05-24 17:28
上一篇:
下一篇: