用 Docker 部署 NPS 服务端与 NPC 客户端实现内网穿透并获取真实IP
NPS 提供服务端代理与 Web 管理,NPC 反向连接服务器,mmproxy 补齐真实IP获取
方案简介
NPS 是一款轻量高效的内网穿透代理服务器,支持 TCP、UDP、HTTP、HTTPS、SOCKS5 等多种协议转发,并提供直观的 Web 管理界面。原版 NPS 停更已久,本仓库 djylb/nps 整合社区更新二次开发而来。
本配方使用 Docker 部署 NPS 服务端(duan2001/nps 镜像)与 NPC 客户端(duan2001/npc 镜像),在有真实 IP 获取需求(例如 SSH)的场景下配合 mmproxy 使用,使内网资源能安全、便捷地在外网访问。适合需要将内网服务暴露到公网、且希望保留客户端真实来源 IP 的用户。
亮点与能力
- 多协议支持:TCP/UDP 转发、HTTP/HTTPS 转发、HTTP/SOCKS5 代理、P2P 模式、Proxy Protocol 支持、HTTP/3 支持等
- 跨平台部署:支持 Linux、Windows 等主流平台,可轻松安装为系统服务
- Web 管理界面:实时监控流量、连接情况以及客户端状态
- 安全与扩展:内置加密传输、流量限制、到期限制、证书管理续签等多重功能
- 多连接协议:支持 TCP、KCP、TLS、QUIC、WS、WSS 协议连接服务器
- 多服务器连接:客户端支持同时连接多个服务器
- 真实IP获取:可配合 mmproxy 使用
组成与分工
- NPS:内网穿透服务端,提供多协议转发与 Web 管理界面,Docker 镜像为 duan2001/nps(另有 GHCR 版)
- NPC:内网穿透客户端,运行在内网机器上,连接 NPS 服务端建立隧道,Docker 镜像为 duan2001/npc
- Docker:容器化部署方式,通过
--net=host与卷挂载运行服务端与客户端 - mmproxy:在需要获取客户端真实 IP 的场景下配合使用,例如 SSH
前置要求
- 具备 Docker 环境的主机(服务端与客户端机器各一台)
- 支持 Linux、Windows 等主流平台
- 若不用 Docker,可使用官方安装脚本:
wget -qO- https://fastly.jsdelivr.net/gh/djylb/nps@master/install.sh | sudo sh -s nps
实施步骤
1. 拉取并启动 NPS 服务端
bash
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
配置文件通过卷挂载到容器内 /conf 目录。
2. 修改服务端配置
NPS 安装完成后,请先修改 nps.conf(如监听端口、Web 管理账号等)再启动服务。
3. 拉取并启动 NPC 客户端
bash
docker pull duan2001/npc
docker run -d --restart=always --name npc --net=host duan2001/npc -server=xxx:123,yyy:456 -vkey=key1,key2 -type=tls,tcp -log=off
4. 填写客户端连接参数
-server、-vkey、-type 等参数请从 NPS Web 管理端的客户端页面复制,避免手动填写错误。
5. 真实IP场景(可选)
有真实 IP 获取需求可配合 mmproxy 使用,例如 SSH。
使用与配置要点
- 通过 NPS 的 Web 管理界面实时监控流量、连接情况以及客户端状态
- 客户端参数(
-server、-vkey、-type)以 Web 管理端客户端页面生成的命令为准 - 客户端支持同时连接多个服务器,示例:
npc -server=xxx:123,yyy:456,zzz:789 -vkey=key1,key2,key3 -type=tcp,tls,其中xxx:123使用 tcp,yyy:456和zzz:789使用 tls - 需连接旧版本服务器时添加
-proto_version=0 - 更多详细配置请参考官方文档
注意事项与常见问题
- NPS 安装完成后,请先修改
nps.conf(如监听端口、Web 管理账号等)再启动服务 - 客户端参数请从 Web 管理端复制,避免手动填写错误
- 如需连接旧版本服务器请添加
-proto_version=0 - 提问前请先查阅文档与 Issues;也可加入 Telegram 交流群交流经验
优缺点
- ✓ 支持多协议转发,场景覆盖广
- ✓ Docker 一键部署,自动重启
- ✕ 原版 NPS 停更已久,依赖社区维护
出处
本方案挖掘自开源项目 djylb/nps,方案内容与实施命令均来自其 README 原文。
本方案由真实开源项目挖掘整理,实施命令均来自其 README 原文,安装使用请遵循项目开源协议。