“深度”使用了AI几天,让我这种代码小白也有折腾的勇气了。
这几天完成的项目之一:NPS内网穿透
解决痛点:移动宽度不提供公网IP,远程访问不顺畅;
方案:利用一台HK的服务器做中转Sever,打通内外网设备访问
原理:外网设备↔️ HK VPS(NPS)↔️ 移动宽带内网设备(NPC)
AI总结的流程和坑点,权当记录了:
The following is generated by Gemini:
关于NPS (nat-proxy-server)
NPS是一款轻量级、高性能且功能强大的内网穿透代理服务器。它能帮助您轻松地将部署在内网(例如家庭或办公室网络,没有公网IP)的服务(如网站、NAS、远程桌面、数据库等)安全地暴露到公网上,让您可以从任何地方进行访问。整个系统由部署在公网服务器上的服务端(NPS)和部署在内网设备上的客户端(NPC)组成。
NPS 和 NPC 配置问题总结 (v2.0 – 含 OpenWrt)
第一部分:NPS 服务端(VPS 服务器)配置
下载并解压 NPS
- 访问 NPS 的官方 GitHub Releases 页面:https://github.com/ehang-io/nps/releases
- 根据您 VPS 的 CPU 架构下载对应的
server版本(通常是linux_amd64_server.tar.gz)。
- 安装 NPS
- 解压后,执行安装命令:
sudo ./nps install。
- 解压后,执行安装命令:
- 修改核心配置文件
- 编辑文件:
/etc/nps/conf/nps.conf。 - 必须修改:
web_password: 设置一个强密码。
- 必须确认/修改(关键):
#http_proxy_port=80#https_proxy_port=443- 确保这两行被注释掉(行首有
#),避免端口冲突。
- 必须记住:
web_port: Web 管理后台端口(例如8080)。bridge_port: 客户端通信端口(例如8024)。
- 编辑文件:
- 配置防火墙
- 在云服务商的安全组和服务器系统防火墙 (UFW) 这两个地方,放行
web_port和bridge_port以及所有您自定义的隧道端口(均为 TCP)。
- 在云服务商的安全组和服务器系统防火墙 (UFW) 这两个地方,放行
- 启动并设置开机自启(最稳定方式)
- 创建
systemd服务文件sudo vim /etc/systemd/system/nps.service,并填入以下内容:Ini, TOML[Unit] Description=nps a lightweight, high-performance, powerful intranet penetration proxy server After=network.target [Service] Type=simple User=root ExecStart=/usr/bin/nps KillMode=process Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.target - 使用
systemctl命令管理服务 (daemon-reload,start,status,enable)。
- 创建
第二部分:NPC 客户端配置
选项 A: 在 OpenWrt 路由器上配置
方法一:图形界面 (LuCI) 方式 (推荐,最简单)
- 安装插件:在 OpenWrt 的“系统”->“软件包”中,搜索并安装
luci-app-nps。 - 进入配置页面:刷新页面后,在“服务”菜单下找到“NPS 内网穿透客户端”。
- 填写基本设置:
- 勾选
启用。 - 服务器地址:填写您 VPS 的公网 IP 或域名。
- 服务器端口:填写您在
nps.conf中设置的bridge_port(例如8024)。 - 连接密钥(vkey):粘贴您在 NPS 网页后台为 OpenWrt 客户端生成的密钥。
- 勾选
- 保存并应用。
- 验证:刷新 NPS 网页后台,查看客户端是否变为“在线”状态。注意:NPS 的所有隧道规则都在服务端的网页后台配置,OpenWrt 的这个界面只负责连接,不需要也无法配置隧道。
方法二:命令行方式 (适合没有图形界面的情况)
- SSH 登录到 OpenWrt 路由器。
- 确定架构:运行
uname -m来查看 CPU 架构(例如mipsle,aarch64等)。 - 下载并解压:从 NPS 的 GitHub Releases 页面下载对应的
client版本。 - 运行客户端:Bash
# 后台运行,请替换为您自己的信息 nohup ./npc -server=<您的VPS地址:端口> -vkey=<您的连接密钥> & - 设置开机自启:登录 OpenWrt 网页后台,进入“系统”->“启动项”,在“本地启动脚本”中,将上面第4步的
nohup命令加到exit 0之前。
选项 B: 在威联通 (QNAP) NAS 上配置 – Docker 方式
- 配置 Docker 镜像加速器:在
Container Station->首选项->Registry中添加国内镜像地址(如阿里云、腾讯云的个人专属地址)。 - 获取 vkey:在 NPS 网页后台为 NAS 创建一个新客户端,并复制其密钥。
- 通过命令行创建 Docker 容器(最可靠方式):
- SSH 登录到 NAS。
- 清理:在 Container Station 界面先删除旧的、失败的
npc容器。 - 运行命令(请根据您使用的映像名称修改,
yisier1/npc或ffdf5/npc等):Bashdocker run -d --restart=always --name=npc-client <您使用的映像名称> npc -server=<您的VPS地址:端口> -vkey=<您的连接密钥> -type=tcp
- 验证:使用
docker ps和docker logs npc-client命令查看状态和日志,或直接在 NPS 网页后台查看客户端是否在线。
3. 注意事项 & 4. 避坑提示
- 双重防火墙:切记,云服务商的安全组和服务器的 UFW 是两个独立的防火墙,都需要配置。安全组是最容易被遗忘的。
- 端口冲突:NPS 默认的
80/443端口极易与服务器上已有的 Nginx 等服务冲突,导致 NPS 启动失败。最佳实践是直接在nps.conf中注释掉这两行。 - 客户端连接超时(Timeout):这几乎总是服务器端
bridge_port的防火墙/安全组问题。 - 客户端DNS失败 (
lookup timeout):这是客户端设备(如 NAS)自身的 DNS 设置有问题,需要手动修改为公共 DNS。 - 图形界面不可靠:当遇到 QNAP 的 Container Station 图形界面反复配置不生效时,应果断放弃,立即切换到 SSH 命令行使用
docker run命令,这是最直接、最可靠的解决方案。

