NPS 内网穿透
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) 内网服务 │
│ │
└─────────────────────────────────────────────────────────────┘
通信流程:
NPS 服务端部署在具有公网 IP 的服务器上
NPC 客户端部署在内网设备上,主动连接服务端
公网用户访问服务端端口,NPS 将流量转发到 NPC
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 默认端口
| 端口 | 用途 |
|---|---|
| 8080 | Web 管理界面 |
| 8024 | 客户端通信(网桥端口) |
| 80 | HTTP 代理 |
| 443 | HTTPS 代理 |
五、客户端安装(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(公网访问端口)
目标IP:127.0.0.1
目标端口:3389(内网远程桌面端口)
访问方式:服务器公网IP:13389
HTTP 代理(内网网站示例)
类型:HTTP
客户端:选择对应客户端
域名:nas.yourdomain.com
目标IP:192.168.1.100
目标端口:80
访问方式:http://nas.yourdomain.com
HTTPS 代理
类型:HTTPS
域名:secure.yourdomain.com
目标IP:192.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 访问
群晖/威联通 NAS → NPC 客户端 → NPS 服务端 → 外网访问
配置:HTTP + TCP 组合,Web 界面 + 文件服务
九、安全加固
9.1 必做事项
| 措施 | 说明 |
|---|---|
| 修改默认密码 | Web 管理界面默认密码必须修改 |
| 启用 TLS | 客户端连接启用 -tls_enable=true |
| 限制访问IP | Web 管理界面配置 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 NPS | duan2001/nps |
| DockerHub NPC | duan2001/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
最后编辑:zws 更新时间:2026-05-24 17:28