自建高性能内网穿透服务:基于NPS的详细教程

自建高性能内网穿透服务:基于NPS的详细教程

摘要:还在为无法远程访问公司电脑、调试微信小程序回调或展示本地项目而烦恼吗?第三方穿透工具限制多且速度慢?本文将手把手教你如何通过开源免费的NPS,搭建一个专属、高性能、安全可靠的内网穿透服务。

一、 我们为什么需要内网穿透?

在日常开发和运维中,你很可能遇到过以下痛点:

远程办公:周末在家,急需访问公司内网的管理系统或连接办公室的电脑处理紧急事务。

开发调试:进行微信小程序、公众号开发或支付功能调试时,第三方平台要求公网域名进行回调,而你的本地开发环境只有内网地址。

服务演示:想给异地的同事或客户实时演示本地运行的项目,却没有公网IP,无法生成访问链接。

设备管理:出门在外时,想要访问家中的NAS、监控摄像头或其他智能设备。

传统的解决方案,如使用限制众多的免费穿透工具或配置复杂的VPN,往往体验不佳。而内网穿透技术正是为此而生的完美解决方案,NPS则是其中的佼佼者。

二、 什么是NPS?

NPS是一款使用Go语言开发的轻量级、高性能、功能强大的内网穿透代理服务器。其主要优势包括:

全能协议支持:全面支持TCP、UDP、HTTP(S)、SOCKS5、P2P等多种协议。

友好的Web管理:提供直观的Web控制台,配置简单,无需记忆复杂命令。

真正的跨平台:可在Linux、Windows、macOS乃至群晖NAS上稳定运行。

企业级安全:支持数据加密压缩和身份验证,保障通信安全。

高效性能:资源占用极低,转发效率高。

项目地址:

官方文档:https://ehang-io.github.io/nps/

GitHub:https://github.com/ehang-io/nps

三、 NPS工作原理简介

NPS采用经典的服务端-客户端(C/S)架构:

服务端(NPS):部署在具备公网IP的云服务器上,作为流量中转站,接收来自外部的访问请求。

客户端(NPC):部署在你需要穿透的内网机器上(如公司电脑、家里的NAS),它会主动与服务端建立一个稳定的加密隧道。

流量转发:当外部用户访问服务端的特定端口时,服务端会通过已建立的隧道,将请求转发给内网的客户端,再由客户端将请求送达最终的内网服务,并将响应数据原路返回。

架构示意图:

graph LR

A[公网用户] --> B[云服务器
NPS服务端
端口: 7180, 7080等]

B -- 通过加密隧道 --> C[内网机器
NPC客户端]

C --> D[内网服务
如: 192.168.1.10:8080]

D --> C

C -- 返回响应数据 --> B

B --> A

四、 准备工作

一台云服务器:需要具有公网IP,配置要求不高(1核1G即可),操作系统推荐CentOS或Ubuntu。

一台内网机器:你需要暴露到公网的服务所在的电脑或服务器(如本地开发机)。

NPS程序:从GitHub Releases页面下载对应的服务端(server)和客户端(client)二进制包。

下载地址:https://github.com/ehang-io/nps/releases

软件版本选择示意图:

在下载页面选择与您操作系统架构对应的版本,服务器通常选择 linux_amd64_server.tar.gz。

五、 实战部署:一步步搭建NPS服务

5.1 部署服务端(在云服务器上操作)

步骤 1: 解压与安装

# 进入源码目录,假设安装包已上传至此

cd /usr/local/src

# 创建服务端程序目录

mkdir -p /usr/local/nps_server

# 解压安装包

tar -zxvf linux_amd64_server.tar.gz -C /usr/local/nps_server

# 进入目录并安装

cd /usr/local/nps_server

./nps install

执行install命令后,会将配置文件、静态资源等复制到系统目录(如/etc/nps),并将可执行文件nps复制到/usr/bin,方便直接运行。 安装成功输出示意图:

安装命令会将配置文件复制到 /etc/nps/conf目录。 步骤 2: 关键配置 编辑主配置文件 /etc/nps/conf/nps.conf,重点关注以下几项:

# HTTP(S)代理端口,不启用可留空

http_proxy_ip=0.0.0.0

http_proxy_port=7180 # HTTP代理端口

https_proxy_port=7143 # HTTPS代理端口

# 公共密钥,客户端连接服务端时的校验密码,请修改为强密码

public_vkey=你的超级复杂密码

# Web管理面板配置

web_host=你的服务器IP # 可以是0.0.0.0

web_username=你的管理员用户名 # 自定义

web_password=你的管理员密码 # 自定义强密码

web_port = 7080 # Web管理后台访问端口

步骤 3: 启动与验证

# 启动NPS服务

nps start

# 检查端口是否正常监听

netstat -lnpt | grep nps

如果看到7080、7180、8024等端口处于监听状态,说明服务启动成功。 步骤 4: 访问Web管理后台 打开浏览器,访问 http://你的服务器IP:7080,使用配置的用户名和密码登录。 Web管理登录界面示意图:

通过Web管理界面可以轻松管理所有客户端和隧道。

重要:确保你的云服务器安全组/防火墙已放行以下端口:7080(Web管理)、7180(HTTP代理)、7143(HTTPS代理)、8024(客户端连接)。

5.2 配置客户端

步骤 1: 在Web界面添加客户端登录Web管理后台,进入「客户端」页面,点击「新增」。

备注:填写一个易于识别的名称,如我的办公电脑。

唯一验证密钥:系统会自动生成一个密钥(如pc8jnp6f7mv1ww81),请务必记下,这是客户端连接服务端的凭证。

添加客户端界面示意图:

为客户端设置一个备注名,并保存好自动生成的唯一验证密钥。 步骤 2: 在内网机器上启动客户端(NPC)将客户端程序包上传到内网机器上,然后执行:

# 解压并进入客户端目录

mkdir -p /usr/local/nps_client

tar -zxvf linux_amd64_client.tar.gz -C /usr/local/nps_client

cd /usr/local/nps_client

# 启动客户端,连接服务端

./npc -server=你的云服务器IP:8024 -vkey=刚才生成的唯一验证密钥 &

客户端启动后,在Web管理后台的「客户端」页面,应该能看到该客户端的状态由「离线」变为「在线」。

5.3 创建隧道,实现内网穿透

现在,最关键的一步是建立隧道规则。这里以最常见的TCP隧道为例:

在Web管理台,进入「TCP隧道」页面,点击「新增」。

客户端ID:选择刚刚上线的那个客户端。

服务端端口:填写一个云服务器上未被占用的端口,例如9909。外部用户将通过这个端口访问内网服务。

目标(IP:端口):填写你希望暴露的内网服务地址,例如192.168.1.10:9909(可以是NPC客户端本机,也可以是内网中的其他机器)。

添加TCP隧道界面示意图:

配置项示例值说明

客户端ID

我的办公电脑

选择已上线的客户端

服务端端口

9909

公网访问端口​

目标(IP:端口)

192.168.1.10:9909

内网实际服务地址​

配置说明:此规则意味着,所有发往你云服务器9909端口的流量,都会被NPS转发到内网192.168.1.10机器的9909端口。

六、 测试与总结

现在,你可以进行测试了。让一位朋友或在你的另一台网络不同的电脑上,尝试访问 http://你的云服务器IP:9909,如果一切顺利,请求将会被完美地转发到你的内网服务! 通过本文的详细教程,你已经成功搭建了一套完全由自己掌控的内网穿透系统。相比第三方免费服务,自建NPS在速度、稳定性、安全性和功能性上都有巨大优势,非常适合开发者和运维人员。

相关推荐

北通智能游戏手柄
365根据什么来封号

北通智能游戏手柄

🗓️ 09-24 👁️ 7676
带雕的网名 关于雕的网名大全(精选61个)
365bet真人体育

带雕的网名 关于雕的网名大全(精选61个)

🗓️ 08-13 👁️ 5641
华为手机上,华为帐号起什么作用?
365bet真人体育

华为手机上,华为帐号起什么作用?

🗓️ 08-13 👁️ 984
别再为平胸烦恼!这些“变大”妙招赶紧码住
365根据什么来封号

别再为平胸烦恼!这些“变大”妙招赶紧码住

🗓️ 10-20 👁️ 9079
苏东坡用侍妾换白马,致使身怀有孕的小妾当场自尽,这是真的吗?
最佳娱乐365bet娱乐场下载

苏东坡用侍妾换白马,致使身怀有孕的小妾当场自尽,这是真的吗?

🗓️ 11-05 👁️ 3798
魔兽世界怀旧服死亡毒蝎位置介绍
365根据什么来封号

魔兽世界怀旧服死亡毒蝎位置介绍

🗓️ 06-29 👁️ 1507
卡福盼巴西夺冠消除50年世界杯阴影 尊重其他冠军球队
365bet真人体育

卡福盼巴西夺冠消除50年世界杯阴影 尊重其他冠军球队

🗓️ 10-26 👁️ 8731
动态图的保存方法及应用探究(以怎样保存动态图为主题的技巧与实践分享)
酩的成语
365根据什么来封号

酩的成语

🗓️ 07-06 👁️ 8961
步骤2 - 调试应用程序
365bet真人体育

步骤2 - 调试应用程序

🗓️ 09-01 👁️ 4998
为什么嗨氏最近被骂
365bet真人体育

为什么嗨氏最近被骂

🗓️ 11-07 👁️ 9070
黄金剧场丨《觉醒年代》思想碰撞激烈交锋 勇于挑战快速成长