LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

一篇文章带你了解一款强大的内网穿透工具---NPS

freeflydom
2025年4月9日 15:11 本文热度 301

在实际开发和运维工作中,我们经常需要访问内网资源却苦于没有公网IP。今天我向大家推荐一款国产开源的内网穿透利器——NPS,它比frp更简单易用,比Ngrok更稳定高效,是远程办公、物联网开发、本地调试的完美解决方案!

🔍 NPS是什么?

NPS(Network Penetration System)是一款轻量级、高性能的内网穿透代理服务器,采用Golang开发。它可以帮助你将内网服务安全地暴露到公网,支持TCP/UDP/HTTP/HTTPS等多种协议。

🌟 核心优势

  1. ⚡ 高性能:基于Golang开发,低资源消耗
  2. 🔐 安全性:支持TLS加密传输
  3. 🔄 多协议:TCP/UDP/HTTP(S)/SOCKS5全支持
  4. 🏷️ 多用户:完善的客户端权限管理
  5. 📊 可视化:内置Web管理面板
  6. 🐧 跨平台:Windows/Linux/macOS/ARM全兼容

📊 与主流穿透工具对比

特性NPSFRPNgrokZerotier
部署难度⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
管理界面✔️ 内置❌ 需第三方✔️ 专业版✔️ 云管理
协议支持TCP/UDP/HTTP(S)/SOCKS5TCP/UDP/HTTP(S)HTTP(S)P2P虚拟网络
身份验证客户端ID+密钥Token认证Token认证证书认证
性能表现⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

🛠️ 安装部署指南

1. 服务端安装(公网服务器)

环境要求

  • 公网服务器1台(CentOS/Ubuntu)
  • 开放至少80、443、8024端口

步骤1:下载安装

# 获取最新版本(以0.26.10为例)
wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz
tar -zxvf linux_amd64_server.tar.gz
cd nps
# 安装服务
sudo ./nps install

步骤2:配置服务器

# 编辑conf/nps.conf
appname = nps
# 修改以下关键配置
http_proxy_ip=0.0.0.0
http_proxy_port=80
https_proxy_port=443
bridge_port=8024
public_vkey=your_public_key_here

步骤3:启动服务

# 启动
sudo nps start
# 查看状态
sudo nps status
# 设置开机自启
sudo systemctl enable nps

2. 客户端安装(内网机器)

Windows客户端

  1. 下载windows_amd64_client.tar.gz
  2. 解压后编辑conf/npc.conf:
    [common]
    server_addr=your_server_ip:8024
    conn_type=tcp
    vkey=your_private_key
    auto_reconnection=true
    
  3. 运行npc.exe

Linux客户端

wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_client.tar.gz
tar -zxvf linux_amd64_client.tar.gz
cd npc
# 注册为systemd服务
sudo ./npc install -server=your_server_ip:8024 -vkey=your_private_key
# 启动
sudo npc start

🌐 管理面板使用

访问 http://your_server_ip:8080 (默认用户名密码admin/123)

核心功能模块:

  1. 客户端管理 - 查看/添加/删除客户端
  2. 隧道配置 - 端口映射规则设置
  3. 域名解析 - 自定义域名绑定
  4. 静态文件 - 文件分享功能
  5. 系统设置 - 服务端参数调整

🚀 六大典型应用场景

1. 远程桌面访问(RDP/VNC)

# 隧道配置示例
[rdp]
mode = tcp
server_port = 33389
target_addr = 192.168.1.100
target_port = 3389

访问方式:your_server_ip:33389

2. SSH穿透

[ssh]
mode = tcp
server_port = 2222
target_addr = 192.168.1.101
target_port = 22

连接命令:ssh -p 2222 username@your_server_ip

3. HTTP/HTTPS网站发布

[web]
mode = http
server_port = 80
target_addr = 192.168.1.102
target_port = 8080
host = demo.yourdomain.com

访问:demo.yourdomain.com

4. 数据库远程访问

[mysql]
mode = tcp
server_port = 3306
target_addr = 192.168.1.103
target_port = 3306

连接:mysql -h your_server_ip -u root -p

5. 本地开发调试

[dev-api]
mode = http
server_port = 8899
target_addr = 127.0.0.1
target_port = 3000

前端可直接对接:http://your_server_ip:8899/api

6. 物联网设备穿透(MQTT)

[mqtt]
mode = udp
server_port = 1883
target_addr = 192.168.1.104
target_port = 1883

🔒 安全保障措施

1. 身份验证机制

  • 每个客户端需要唯一验证密钥(vkey)
  • 支持IP白名单限制
  • Web管理面板可设二次验证

2. 传输加密配置

# 生成自签名证书
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout nps.key -out nps.crt
# 配置conf/nps.conf
https_just_proxy=true
https_default_cert_file=conf/nps.crt
https_default_key_file=conf/nps.key

3. 防火墙建议规则

# 仅开放必要端口
iptables -A INPUT -p tcp --dport 8024 -j ACCEPT  # 主连接端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT    # HTTP
iptables -A INPUT -p tcp --dport 443 -j ACCEPT   # HTTPS
iptables -A INPUT -j DROP

⚙️ 高阶配置技巧

1. 负载均衡配置

[web-cluster]
mode = tcp
server_port = 8080
locations = 192.168.1.100:8080,192.168.1.101:8080

2. 流量压缩与加密

[secure-tunnel]
mode = tcp
server_port = 5432
target_addr = 192.168.1.105
target_port = 5432
compress = true
crypt = true

3. 带宽限制

[limited-tunnel]
mode = tcp
server_port = 22222
target_addr = 192.168.1.106
target_port = 22
flow_limit = 1024  # KB/s

🛠️ 性能调优建议

  1. 连接池配置

    # conf/nps.conf
    [server]
    p2p_ip=your_server_ip
    p2p_port=6000
    task_chan_num=100
    
  2. 日志轮转

    # 使用logrotate
    /var/log/nps/*.log {
        daily
        missingok
        rotate 7
        compress
        delaycompress
        notifempty
        create 640 root root
    }
    
  3. 监控指标

    # Prometheus监控配置
    - job_name: 'nps'
      static_configs:
        - targets: ['your_server_ip:8081']
    

🔄 与常见工具集成

1. 结合Docker使用

# Dockerfile示例
FROM alpine:latest
RUN wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_client.tar.gz \
    && tar -zxvf linux_amd64_client.tar.gz \
    && mv npc /usr/local/bin/
CMD ["npc", "-server=your_server_ip:8024", "-vkey=your_vkey"]

2. 与Kubernetes集成

# deployment.yaml示例
apiVersion: apps/v1
kind: Deployment
metadata:
  name: npc-client
spec:
  replicas: 1
  template:
    spec:
      containers:
      - name: npc
        image: your-registry/npc-client:latest
        env:
        - name: NPC_SERVER
          value: "your_server_ip:8024"
        - name: NPC_VKEY
          valueFrom:
            secretKeyRef:
              name: npc-secrets
              key: vkey

🚨 常见问题排查

Q1: 客户端连接失败

  • ✅ 检查服务端8024端口是否开放
  • ✅ 验证vkey是否正确
  • ✅ 查看服务端日志:tail -f /var/log/nps/log.log

Q2: 隧道已连接但无法访问

  • 🔧 确认目标服务在内网可访问
  • 🔧 检查防火墙规则
  • 🔧 测试本地telnet:telnet 目标IP 目标端口

Q3: 管理面板无法登录

  • 🔑 默认密码admin/123
  • 🛠 重置密码:nps stop && nps reset

📈 性能测试数据

测试环境:1核1G云服务器 + 100M带宽

并发连接数平均延迟吞吐量CPU使用率
10028ms12MB/s15%
50045ms48MB/s42%
100083ms85MB/s78%

🎯 适用场景推荐

  1. 远程办公:安全访问公司内网OA/ERP
  2. 物联网开发:调试远程设备
  3. 微信开发:本地调试公众号/小程序
  4. 演示环境:临时展示本地项目
  5. 混合云架构:打通公有云与私有云

📌 总结

NPS作为一款国产开源内网穿透工具,具有以下突出优势:

  • 部署简单:5分钟即可完成基础配置
  • 功能全面:覆盖各类穿透需求
  • 管理便捷:可视化Web面板操作
  • 资源友好:1核1G服务器可支持500+并发

延伸资源

转自https://juejin.cn/post/7490977437674373155


该文章在 2025/4/9 15:26:49 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved