大家好,我是星哥,之前介绍过ngrok、frp的内网穿透工具,今天来介绍一个NPS的开源内网穿透工具。
nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。
本文将详细介绍 NPS 的工作原理,并提供服务端 (nps) 和客户端 (npc) 的详细搭建步骤,帮助您快速上手并使用 NPS 进行内网穿透。
NPS 是一款轻量级、高性能且功能强大的内网穿透代理服务器。它主要用于将内网服务暴露到公网上,使得外部用户可以访问原本只能在局域网内部访问的应用或服务。其核心工作原理可以概括如下:
简而言之,NPS 通过在公网服务器和内网客户端之间建立一条反向连接隧道,巧妙地绕过了 NAT 设备的限制,实现了从外网安全、便捷地访问内网资源的目的。
NPS 服务端通常部署在一台具有公网 IP 的服务器上。以下是一般的搭建步骤,以 Linux 系统为例:
linux_amd64_server.tar.gz
或类似名称的文件。wget
命令直接在服务器上下载:
# 替换为最新的版本链接 wget https://github.com/ehang-io/nps/releases/download/vX.Y.Z/linux_amd64_server.tar.gz 这里选择的v0.26.10 mkdir -p /data/nps cd /data/nps wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz tar
命令解压下载的压缩包:
tar -zxvf linux_amd64_server.tar.gznps
可执行文件和 conf
配置目录的文件夹。conf/nps.conf
配置文件。名称 | 含义 |
---|---|
web_port | web管理端口 |
web_password | web界面管理密码 |
web_username | web界面管理账号 |
web_base_url | web管理主路径,用于将web管理置于代理子路径后面 |
bridge_port | 服务端客户端通信端口 |
https_proxy_port | 域名代理https代理监听端口 |
http_proxy_port | 域名代理http代理监听端口 |
auth_key | web api密钥 |
bridge_type | 客户端与服务端连接方式kcp或tcp |
public_vkey | 客户端以配置文件模式启动时的密钥,设置为空表示关闭客户端配置文件连接模式 |
ip_limit | 是否限制ip访问,true或false或忽略 |
flow_store_interval | 服务端流量数据持久化间隔,单位分钟,忽略表示不持久化 |
log_level | 日志输出级别 |
auth_crypt_key | 获取服务端authKey时的aes加密密钥,16位 |
p2p_ip | 服务端Ip,使用p2p模式必填 |
p2p_port | p2p模式开启的udp端口 |
pprof_ip | debug pprof 服务端ip |
pprof_port | debug pprof 端口 |
disconnect_timeout | 客户端连接超时,单位 5s,默认值 60,即 300s = 5mins |
sudo nps stop
:停止服务sudo nps restart
:重启服务sudo nps status
:查看服务状态sudo nps uninstall
:卸载服务http://你的公网IP:Web管理端口
(例如 http://your_server_ip:8080
)。iptables
、firewalld
或云服务商的安全组)已允许外部访问 NPS 的 Web 管理端口 (默认为 8080) 和桥接端口 (默认为 8024),以及你计划用于穿透服务的其他端口。注意事项:
/var/log/nps.log
或 NPS 安装目录下的 nps.log
)进行排查。NPS 客户端 (NPC) 部署在需要将其服务暴露到公网的内网机器上。以下是一般的搭建步骤,以 Linux 和 Windows 为例:
通用准备工作:
8024
)。linux_amd64_client.tar.gz
或类似名称的文件。wget
命令直接在内网机器上下载:
# 替换为最新的版本链接和对应架构的文件 wget https://github.com/ehang-io/nps/releases/download/vX.Y.Z/linux_amd64_client.tar.gztar
命令解压下载的压缩包:
tar -zxvf linux_amd64_client.tar.gznpc
的可执行文件和一个 npc.conf
的示例配置文件(较新版本可能直接通过命令行参数启动,无需配置文件)。npc
,连接到服务端。这是较新版本推荐的方式,更简洁。
./npc -server=你的服务端IP:桥接端口 -vkey=你的VKey -type=tcp
-server
: 替换为你的 NPS 服务端的实际 IP 地址和桥接端口,例如 123.45.67.89:8024
。-vkey
: 替换为服务端为你生成的唯一验证密钥。-type
: 指定连接类型,通常为 tcp
。根据服务端配置可能有所不同。nohup
或者将其注册为系统服务 (systemd service)。
nohup ./npc -server=你的服务端IP:桥接端口 -vkey=你的VKey -type=tcp &npc.conf
文件(如果解压后没有,可以手动创建一个或从官方文档获取模板)。
# 服务端IP:端口 server_addr=你的服务端IP:桥接端口 # 服务端生成的VKey vkey=你的VKey # 连接类型,tcp或kcp,根据服务端配置 conn_type=tcpnpc.service
文件内容 (/etc/systemd/system/npc.service
):
[Unit] Description=NPC Client Service After=network.target [Service] Type=simple User=your_user # 替换为运行npc的用户名 WorkingDirectory=/path/to/npc # 替换为npc所在的目录 ExecStart=/path/to/npc/npc -server=你的服务端IP:桥接端口 -vkey=你的VKey -type=tcp # 确保路径正确 Restart=on-failure [Install] WantedBy=multi-user.targetwindows_amd64_client.tar.gz
(解压后是 .exe
文件) 或直接是 windows_amd64_client.zip
。C:\nps_client\
。你会得到 npc.exe
文件。npc.exe
所在的目录。npc.exe
在关闭命令提示符窗口后仍然运行,可以使用一些第三方工具(如 NSSM - Non-Sucking Service Manager
)将其注册为 Windows 服务。nssm install NpcService
Path
: 指向你的 npc.exe
文件路径。Startup directory
: 指向 npc.exe
所在的目录。Arguments
: 填写 -server=你的服务端IP:桥接端口 -vkey=你的VKey -type=tcp
。nssm start NpcService
或在服务管理器 (services.msc) 中启动。开机自启 (简单方式)
.bat
批处理文件,然后将该批处理文件的快捷方式放入系统的“启动”文件夹中 (在运行中输入 shell:startup
)。 示例 start_npc.bat
内容:
@echo off C:\path\to\npc.exe -server=你的服务端IP:桥接端口 -vkey=你的VKey -type=tcp获得客户端ID是2
下载windows_amd64_client.tar.gz解压,有文件 npc.exe和conf
修改 conf/npc.conf
[common]
server_addr=XX.XX.XX.XX:8024
conn_type=tcp
vkey=123
auto_reconnection=true
max_conn=1000
flow_limit=1000
rate_limit=1000
basic_username=11
basic_password=3
web_username=admin
web_password=123456
crypt=true
compress=true
#pprof_addr=0.0.0.0:9999
disconnect_timeout=60
[tcp]
mode=tcp
target_addr=127.0.0.1:3389
server_port=8002
把"server_addr=XX.XX.XX.XX:8024 改成你的服务器IP"
把
[tcp]
mode=tcp
target_addr=127.0.0.1:3389 客户端的RDP端口
server_port=8002 远程服务器的端口
运行npc.exe 如下图。
再到web管理后台可以看到客户端成功连接
使用远程连接工具 IP+8002 既可远程穿透。
NPS 作为一款优秀的内网穿透工具,凭借其易用性、高性能和丰富的功能,为开发者和个人用户提供了极大的便利。通过本文的介绍,相信您已经对 NPS 的原理和搭建过程有了清晰的认识。在实际使用中,请务必注意安全配置,例如修改默认密码、使用强 VKey、及时更新版本等,以保障您的服务安全。希望本指南能帮助您成功搭建和使用 NPS,畅享内网穿透带来的便捷体验。
写文不易,如果你都看到了这里,请点个赞和在看,分享给更多的朋友;也别忘了关注星哥玩云!这里有满满的干货分享,还有轻松有趣的技术交流~点个赞、分享给身边的小伙伴,一起成长,一起玩转技术世界吧! 😊
参考链接:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有