docs: drop frp self-comparison in core references

- go.mod/main.go/config.go/sample/CHANGELOG: 移除 类 frp/去中心化 frp 本体/像 frp 类比
- 保留 ExternalService 中真实的 frp_server 外部穿透服务(客观功能,非自比)
This commit is contained in:
2026-07-15 16:40:07 +08:00
parent 7cbe063ac1
commit ccae5e2d42
5 changed files with 18 additions and 19 deletions
+9 -10
View File
@@ -41,10 +41,9 @@ Gitea 仓库名大小写不敏感:`zkcoi/meshray` 与 `zkcoi/Meshray`core
## 2026-07-15 仓库拆分:core 独立为 `meshray/core`wg-go 集成迁移至 `internal/ctr/corebind` ## 2026-07-15 仓库拆分:core 独立为 `meshray/core`wg-go 集成迁移至 `internal/ctr/corebind`
### 背景(架构决策) ### 背景(架构决策)
core(转发引擎)本质是**去中心化 frp**——9 层传输只转发字节 A↔B不关心载荷是应用流量 core(转发引擎)本质是一个**通用的 P2P 多层传输中继核心**——9 层传输只转发字节 A↔B,
(形态 A:独立 frp 隧道)还是 WG 密文(形态 B:增强传输)。此前 core 直接 `import wg-go` 不关心载荷是应用流量(形态 A:独立隧道)还是 WG 密文(形态 B:增强传输)。此前 core 直接 `import wg-go`
并内置 `EnhancedBind`,导致「集成干扰核心」:核心层被 wg-go / contract 绑架,难以独立演进 并内置 `EnhancedBind`,导致「集成干扰核心」:核心层被 wg-go / contract 绑架,难以独立演进
也无法作为纯粹的去中心化 frp 基地。
故按用户决策: 故按用户决策:
- 项目命名统一为 **meshray**wg-go 集成属于 manager / UI / GUI 范畴,不污染 core。 - 项目命名统一为 **meshray**wg-go 集成属于 manager / UI / GUI 范畴,不污染 core。
@@ -174,13 +173,13 @@ A 发往 `B:51820` 的包到达 B 的 OS 时,B 在 51820 无任何监听 socke
NAT 后的机器仍依赖 TURN/WebRTC 中继/打洞层(需配置 `ice` 服务器),本修复解决的是 NAT 后的机器仍依赖 TURN/WebRTC 中继/打洞层(需配置 `ice` 服务器),本修复解决的是
「直连(独立 IP / 公网 / 同局域网)对称互通」这一基础能力。 「直连(独立 IP / 公网 / 同局域网)对称互通」这一基础能力。
## 2026-07-15 独立 meshray-core 改用 TOML 配置文件(类 frp ## 2026-07-15 独立 meshray-core 改用 TOML 配置文件
### 需求 ### 需求
独立运行(类 frp 风格)希望像 frp 一样使用 TOML 配置文件,而非 JSON。 独立运行希望使用 TOML 配置文件,而非 JSON。
### 改动 ### 改动
- 新增依赖 `github.com/BurntSushi/toml`(与 frp 同款) - 新增依赖 `github.com/BurntSushi/toml`
- `core/cmd/meshray-core/config.go` - `core/cmd/meshray-core/config.go`
- `Config` 各字段增加 `toml` 标签(键名与 JSON 一致,snake_case)。 - `Config` 各字段增加 `toml` 标签(键名与 JSON 一致,snake_case)。
- `loadConfig` 按扩展名自动选解码器:`.toml`/`.conf` → TOML;其它(含 `.json`)→ JSON - `loadConfig` 按扩展名自动选解码器:`.toml`/`.conf` → TOML;其它(含 `.json`)→ JSON
@@ -369,10 +368,10 @@ P2P 劫持转发链路)实际断裂。本次以单元测试钉死缺陷后,
- `docs/` 下仍描述 “relay 按 route_id 查表转发” 的旧文档校正(用户规则禁止新增说明文档, - `docs/` 下仍描述 “relay 按 route_id 查表转发” 的旧文档校正(用户规则禁止新增说明文档,
已通过代码注释反映新路由逻辑)。 已通过代码注释反映新路由逻辑)。
## 2026-07-15 增强 Bind 虚拟桥接 + meshray-core 独立二进制(类 frp ## 2026-07-15 增强 Bind 虚拟桥接 + meshray-core 独立二进制
### 背景 ### 背景
用户希望像 frp 一样直接运行 core 在两台机器上验证收发,而非必须经由管理器。 用户希望直接运行 core 在两台机器上验证收发,而非必须经由管理器。
核查发现旧 `EnhancedBind` 仅是**纯透传**Send 直接转交默认 UDP bind),而 9 层 核查发现旧 `EnhancedBind` 仅是**纯透传**Send 直接转交默认 UDP bind),而 9 层
`relay``localPorts` 在增强模式下从未被注册,导致 9 层传输逻辑根本没接到 WG 收发路径上。 `relay``localPorts` 在增强模式下从未被注册,导致 9 层传输逻辑根本没接到 WG 收发路径上。
本次把 `EnhancedBind` 重写为真正桥接 WG ↔ 引擎 9 层传输,并新增独立可运行二进制。 本次把 `EnhancedBind` 重写为真正桥接 WG ↔ 引擎 9 层传输,并新增独立可运行二进制。
@@ -400,7 +399,7 @@ P2P 劫持转发链路)实际断裂。本次以单元测试钉死缺陷后,
- `NotifyPeerInfo` 在收到候选时自动 `RegisterPeer`,并新增 `EnsureDial`Send 惰性拨号用)。 - `NotifyPeerInfo` 在收到候选时自动 `RegisterPeer`,并新增 `EnsureDial`Send 惰性拨号用)。
### core/cmd/meshray-core(新增独立二进制) ### core/cmd/meshray-core(新增独立二进制)
- `main.go` + `config.go`类 frp 风格,`-c config.json` 启动、`-genkey` 生成私钥。 - `main.go` + `config.go``-c config.json` 启动、`-genkey` 生成私钥。
- 直接以 `core.NewEnhancedBind` 接管 wireguard-go 用户态设备收发;按配置创建 TUN、 - 直接以 `core.NewEnhancedBind` 接管 wireguard-go 用户态设备收发;按配置创建 TUN、
注入对端候选触发 9 层拨号、`Up` 后分配隧道 IPLinux `ip` / Windows `netsh`)。 注入对端候选触发 9 层拨号、`Up` 后分配隧道 IPLinux `ip` / Windows `netsh`)。
- `mode: enhanced` 走 9 层接管;`mode: native` 退化为裸 WG 直连,便于对照测试。 - `mode: enhanced` 走 9 层接管;`mode: native` 退化为裸 WG 直连,便于对照测试。
+4 -4
View File
@@ -10,8 +10,8 @@ import (
"github.com/BurntSushi/toml" "github.com/BurntSushi/toml"
) )
// Config 是 meshray-core 独立运行(类 frp 风格)的配置文件结构。 // Config 是 meshray-core 独立运行的配置文件结构。
// 支持 TOML(默认,类 frp)与 JSON 两种格式,按文件扩展名自动选择解码器。 // 支持 TOML(默认)与 JSON 两种格式,按文件扩展名自动选择解码器。
// //
// TOML 示例: // TOML 示例:
// //
@@ -70,7 +70,7 @@ type ICEConf struct {
} }
// loadConfig 读取并解析配置文件:按扩展名自动选择 TOML 或 JSON 解码器。 // loadConfig 读取并解析配置文件:按扩展名自动选择 TOML 或 JSON 解码器。
// 默认且推荐 TOML(类 frp;旧 .json 配置仍可继续使用。 // 默认且推荐 TOML;旧 .json 配置仍可继续使用。
func loadConfig(path string) (*Config, error) { func loadConfig(path string) (*Config, error) {
data, err := os.ReadFile(path) data, err := os.ReadFile(path)
if err != nil { if err != nil {
@@ -85,7 +85,7 @@ func loadConfig(path string) (*Config, error) {
ext := filepath.Ext(lower) ext := filepath.Ext(lower)
switch ext { switch ext {
case ".toml", ".conf": case ".toml", ".conf":
// TOML与 frp 风格一致 // TOML默认配置格式
if err := toml.Unmarshal(data, cfg); err != nil { if err := toml.Unmarshal(data, cfg); err != nil {
return nil, fmt.Errorf("解析 TOML 配置 %s 失败: %w", path, err) return nil, fmt.Errorf("解析 TOML 配置 %s 失败: %w", path, err)
} }
+3 -3
View File
@@ -1,4 +1,4 @@
// 命令 meshray-coremeshray-core 增强层的独立运行入口(类 frp 风格) // 命令 meshray-coremeshray-core 增强层的独立运行入口。
// //
// 直接以自定义 conn.Bind 接管 WireGuard 收发,使所有隧道密文流量经由本仓 9 层传输 // 直接以自定义 conn.Bind 接管 WireGuard 收发,使所有隧道密文流量经由本仓 9 层传输
// Direct/TURN/WebRTC/...)而非裸 UDP。无需管理器即可在两台机器间建立加密隧道, // Direct/TURN/WebRTC/...)而非裸 UDP。无需管理器即可在两台机器间建立加密隧道,
@@ -7,7 +7,7 @@
// 用法: // 用法:
// //
// meshray-core -genkey # 生成私钥 // meshray-core -genkey # 生成私钥
// meshray-core -c meshray-core.toml # 按配置启动(默认 TOML,类 frp;兼容 .json // meshray-core -c meshray-core.toml # 按配置启动(默认 TOML;兼容 .json)
package main package main
import ( import (
@@ -32,7 +32,7 @@ import (
) )
func main() { func main() {
cfgPath := flag.String("c", "meshray-core.toml", "配置文件路径(默认 TOML,类 frp;也兼容 .json") cfgPath := flag.String("c", "meshray-core.toml", "配置文件路径(默认 TOML;也兼容 .json")
genKey := flag.Bool("genkey", false, "仅生成私钥并打印后退出") genKey := flag.Bool("genkey", false, "仅生成私钥并打印后退出")
flag.Parse() flag.Parse()
+1 -1
View File
@@ -1,4 +1,4 @@
# meshray-core 独立运行配置(类 frp 风格,TOML # meshray-core 独立运行配置(TOML
# 用法: meshray-core -c meshray-core.toml # 用法: meshray-core -c meshray-core.toml
# 也兼容旧 JSON 配置(扩展名 .json 自动按 JSON 解析)。 # 也兼容旧 JSON 配置(扩展名 .json 自动按 JSON 解析)。
+1 -1
View File
@@ -5,7 +5,7 @@ go 1.26.0
// meshray-core module // meshray-core module
replace git.zkcoi.com/zkcoi/meshray-contract => ./pkg/contract replace git.zkcoi.com/zkcoi/meshray-contract => ./pkg/contract
// meshray frp + 9 zkcoi/Meshray wireguard // meshray P2P + 9 zkcoi/Meshray wireguard
// git.zkcoi.com/zkcoi/meshray Meshray Meshray-Manager // git.zkcoi.com/zkcoi/meshray Meshray Meshray-Manager
// replace wg-go corebind // replace wg-go corebind
replace git.zkcoi.com/zkcoi/meshray => ../Meshray replace git.zkcoi.com/zkcoi/meshray => ../Meshray