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文件夹:
下载地址:
- 官方下载: https://adoptium.net/releases.html?variant=openjdk8
- 国内镜像: https://mirrors.tuna.tsinghua.edu.cn/Adoptium/
解压后确保目录结构正确:
jre/
├── bin/
│ ├── java.exe (Windows) 或 java (Linux/Mac)
│ └── ...
├── lib/
└── ...步骤4:配置客户端
复制配置文件示例并修改:
cp config/frp-client.json.example config/frp-client.json编辑 config/frp-client.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
}
]
}| 配置项 | 说明 |
|---|---|
| serverHost | FRP服务器地址(由平台提供) |
| serverPort | FRP服务器端口,默认7000 |
| authCode | 在平台端获取的授权码 |
| proxies | 代理配置列表 |
步骤5:启动客户端
Windows:双击 start.bat 启动图形界面
Linux/Mac (图形界面):
chmod +x start.sh
./start.shLinux服务器 (无界面):
chmod +x start-headless.sh
./start-headless.sh start # 启动
./start-headless.sh stop # 停止
./start-headless.sh restart # 重启
./start-headless.sh status # 查看状态客户端使用
主界面
启动后显示主界面,包含以下区域:
- 服务器配置:服务器地址、端口、授权码、客户端ID
- 代理配置:代理规则列表,可添加/删除/启用/禁用
- 运行日志:实时显示连接日志
- 状态栏:连接状态、流量统计
连接服务器
- 填写服务器地址、端口、授权码
- 点击"连接"按钮
- 等待认证成功
- 代理状态变为"已连接"
添加代理
- 点击"添加"按钮
- 填写代理信息:
- 代理名称:便于识别的名称(如:erp-api)
- 本地IP:内网服务地址(如:192.168.1.10)
- 本地端口:内网服务端口(如:8080)
- 远程端口:留空或0表示自动分配
- 点击"确定"保存
- 点击"保存配置"持久化
开机自启动(Windows)
- 以管理员权限运行客户端
- 在"开机自启"区域点击"启用自启动"
- 确认后,程序将在用户登录时自动运行
注意
设置开机自启动需要管理员权限。
服务模式
使用 --service 参数可以在后台运行(最小化到托盘):
# 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
// 通过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数据源配置中添加:
magic-api:
datasource:
erp-db:
url: jdbc:mysql://localhost:15002/erp_database?useSSL=false
username: erp_user
password: erp_password在脚本中使用:
// 查询内网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分钟)。如果长时间无法重连,请检查网络连接。
内网服务无法访问
- 确认本地服务地址和端口正确
- 在客户端机器上测试内网服务是否可达:bash
curl http://192.168.1.10:8080/api/health - 检查防火墙设置
安全建议
1. 保护授权码
- 授权码仅限本人使用
- 不要分享给他人
- 如有泄露,联系管理员重置
2. 最小权限原则
- 只暴露必要的内网服务
- 内网数据库使用只读账号
- 定期检查代理配置
3. 内网服务加固
即使通过FRP访问,内网服务仍应有自己的认证机制:
var result = http.post('http://localhost:15001/api/order', {
headers: {
'Authorization': 'Bearer ' + env.get('ERP_TOKEN')
},
body: data
});下一步
- FRP配置详解 - 详细配置说明
- 事件+Magic-API - 结合事件推送同步数据
- Magic-API数据库操作 - 多数据源操作
