Skip to content

FRP内网穿透

本页面介绍MISEB自研的FRP内网穿透系统,帮助商户将内网的ERP、WMS、数据库等系统安全地接入MISEB平台。

系统概述

MISEB内置了自研的FRP内网穿透服务,商户无需自行搭建FRP服务器,只需下载客户端并使用平台提供的授权码即可快速接入。

核心特性

  • Java客户端:基于Netty的高性能客户端,打包为可执行jar
  • 图形界面:Swing图形界面,操作简单直观
  • 授权码机制:一码一机,安全可控
  • 自动重连:断线自动重连,保证服务稳定性
  • 流量统计:实时显示上下行流量和速率
  • 开机自启:支持Windows开机自动启动

应用场景

场景说明
ERP对接订单同步到内网ERP系统
WMS对接库存同步到内网仓储系统
财务对接数据同步到内网财务系统
数据库访问通过Magic-API访问内网数据库

系统架构

┌─────────────────────────────────────────────────────────────────┐
│                        MISEB云端平台                             │
│  ┌─────────────┐     ┌─────────────┐     ┌─────────────┐       │
│  │ Magic-API   │     │ TunnelServer│     │ ProxyServer │       │
│  │ 业务脚本    │ ──→ │  隧道服务    │ ←── │  代理服务   │       │
│  └─────────────┘     │  端口:7000   │     │ 端口:动态   │       │
│                      └──────┬──────┘     └──────┬──────┘       │
└───────────────────────────────┼────────────────────┼────────────┘
                                │ 隧道连接           │ 数据转发
                                │                    │
┌───────────────────────────────┼────────────────────┼────────────┐
│                        商户内网│                    │            │
│                      ┌────────┴────────┐           │            │
│                      │ MISEB FRP客户端  │←──────────┘            │
│                      │   (Java jar)    │                        │
│                      └────────┬────────┘                        │
│              ┌───────────────┼───────────────┐                 │
│              │               │               │                  │
│       ┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────┐         │
│       │  ERP系统    │ │  WMS系统    │ │  MySQL数据库 │         │
│       │192.168.1.10 │ │192.168.1.20 │ │192.168.1.30 │         │
│       └─────────────┘ └─────────────┘ └─────────────┘         │
└─────────────────────────────────────────────────────────────────┘

快速开始

步骤1:获取授权码

在MISEB平台端获取FRP授权码:

菜单路径:平台管理后台 → 系统设置 → FRP管理 → 授权码管理 → 新增

授权码说明

  • 每个授权码绑定一个商户
  • 首次使用会绑定机器特征码(客户端ID)
  • 授权码有效期由管理员设定
  • 可分配指定端口范围

步骤2:下载客户端

在MISEB平台端下载FRP客户端,或者直接点击下方链接下载:

  • 客户端下载: 点击下载

    https://ivett.oss-cn-beijing.aliyuncs.com/release/miseb-mer-java/miseb-mer-frp-client.zip

菜单路径:平台管理后台 → 系统设置 → FRP管理 → 客户端下载

下载后解压,目录结构如下:

miseb-frp-client/
├── jre/                    # Java运行环境(需下载)
├── config/                 # 配置文件目录
│   └── frp-client.json     # 客户端配置文件
├── logs/                   # 日志文件目录
├── miseb-frp-client.jar    # 客户端主程序
├── start.bat               # Windows启动脚本(图形界面)
├── start.sh                # Linux/Mac启动脚本(图形界面)
└── start-headless.sh       # Linux服务器启动脚本(无界面)

步骤3:准备Java环境

客户端需要Java 8运行环境,请下载JRE并解压到jre文件夹:

下载地址

解压后确保目录结构正确:

jre/
├── bin/
│   ├── java.exe (Windows) 或 java (Linux/Mac)
│   └── ...
├── lib/
└── ...

步骤4:配置客户端

复制配置文件示例并修改:

bash
cp config/frp-client.json.example config/frp-client.json

编辑 config/frp-client.json

json
{
  "serverHost": "frp.your-domain.com",
  "serverPort": 7000,
  "authCode": "YOUR_AUTH_CODE",
  "proxies": [
    {
      "proxyName": "erp-api",
      "localIp": "192.168.1.10",
      "localPort": 8080,
      "remotePort": 0
    }
  ]
}
配置项说明
serverHostFRP服务器地址(由平台提供)
serverPortFRP服务器端口,默认7000
authCode在平台端获取的授权码
proxies代理配置列表

步骤5:启动客户端

Windows:双击 start.bat 启动图形界面

Linux/Mac (图形界面)

bash
chmod +x start.sh
./start.sh

Linux服务器 (无界面)

bash
chmod +x start-headless.sh
./start-headless.sh start    # 启动
./start-headless.sh stop     # 停止
./start-headless.sh restart  # 重启
./start-headless.sh status   # 查看状态

客户端使用

主界面

启动后显示主界面,包含以下区域:

  1. 服务器配置:服务器地址、端口、授权码、客户端ID
  2. 代理配置:代理规则列表,可添加/删除/启用/禁用
  3. 运行日志:实时显示连接日志
  4. 状态栏:连接状态、流量统计

连接服务器

  1. 填写服务器地址、端口、授权码
  2. 点击"连接"按钮
  3. 等待认证成功
  4. 代理状态变为"已连接"

添加代理

  1. 点击"添加"按钮
  2. 填写代理信息:
    • 代理名称:便于识别的名称(如:erp-api)
    • 本地IP:内网服务地址(如:192.168.1.10)
    • 本地端口:内网服务端口(如:8080)
    • 远程端口:留空或0表示自动分配
  3. 点击"确定"保存
  4. 点击"保存配置"持久化

开机自启动(Windows)

  1. 以管理员权限运行客户端
  2. 在"开机自启"区域点击"启用自启动"
  3. 确认后,程序将在用户登录时自动运行

注意

设置开机自启动需要管理员权限。

服务模式

使用 --service 参数可以在后台运行(最小化到托盘):

bash
# Windows
javaw -jar miseb-frp-client.jar --service

# Linux
java -jar miseb-frp-client.jar --service &

在Magic-API中使用

配置FRP代理后,可以在Magic-API中访问内网系统。

访问内网API

假设配置了代理:192.168.1.10:8080 → 远程端口15001

javascript
// 通过FRP访问内网ERP API
var result = http.post('http://localhost:15001/api/order/create', {
    headers: {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer ' + env.get('ERP_TOKEN')
    },
    body: {
        orderNo: order.order_id,
        amount: order.pay_price / 100
    }
});

if (result.code == 0) {
    log.info("ERP同步成功");
}

访问内网数据库

假设配置了代理:192.168.1.30:3306 → 远程端口15002

在Magic-API数据源配置中添加:

yaml
magic-api:
  datasource:
    erp-db:
      url: jdbc:mysql://localhost:15002/erp_database?useSSL=false
      username: erp_user
      password: erp_password

在脚本中使用:

javascript
// 查询内网ERP数据
var erpOrders = db['erp-db'].select(`
    SELECT order_no, status, amount
    FROM erp_orders
    WHERE sync_status = 0
`);

for (order in erpOrders) {
    log.info("处理订单: {}", order.order_no);
}

常见问题

启动时提示"未找到Java运行环境"

请确保已将Java 8 JRE解压到jre文件夹中,且目录结构正确。

认证失败

可能原因:

  • 授权码不正确或已过期
  • 授权码已绑定其他机器(联系管理员重置)
  • 服务器地址或端口不正确

连接断开后不自动重连

客户端默认会自动重连,重连间隔逐步增加(5s → 10s → 30s → 60s → 5分钟)。如果长时间无法重连,请检查网络连接。

内网服务无法访问

  1. 确认本地服务地址和端口正确
  2. 在客户端机器上测试内网服务是否可达:
    bash
    curl http://192.168.1.10:8080/api/health
  3. 检查防火墙设置

安全建议

1. 保护授权码

  • 授权码仅限本人使用
  • 不要分享给他人
  • 如有泄露,联系管理员重置

2. 最小权限原则

  • 只暴露必要的内网服务
  • 内网数据库使用只读账号
  • 定期检查代理配置

3. 内网服务加固

即使通过FRP访问,内网服务仍应有自己的认证机制:

javascript
var result = http.post('http://localhost:15001/api/order', {
    headers: {
        'Authorization': 'Bearer ' + env.get('ERP_TOKEN')
    },
    body: data
});

下一步

成都艾唯特软件有限公司