常见问题 FAQ
能跑在 ESP32 经典版 / C3 / C6 上吗?
Section titled “能跑在 ESP32 经典版 / C3 / C6 上吗?”当前只在 ESP32-S3-N16R8 验证。其他芯片没有验证证据,不是“明确不支持”。内存与 PSRAM 是关键门槛,移植前先看 支持范围。
需要公网 IP 吗?
Section titled “需要公网 IP 吗?”不需要。ESP32 只主动连接入口,可以连局域网内的节点,也可以连有公网地址的共享节点。需要的是出站 TCP 可达。
能让 ESP32 当 EasyTier 服务器/中继服务器吗?
Section titled “能让 ESP32 当 EasyTier 服务器/中继服务器吗?”不能当入口服务器:组件不监听端口,不能被其他节点主动连入。它可以作为数据中继转发别人的帧,但这不等于服务器角色。
支持 UDP / KCP / QUIC 吗?
Section titled “支持 UDP / KCP / QUIC 吗?”不支持。只实现 TCP 客户端入口。
支持 Noise 安全模式吗?
Section titled “支持 Noise 安全模式吗?”不支持。只实现非安全模式握手(网络名 + SipHash 摘要);数据面可以用 AES-128-GCM。
支持子网代理 / 内网穿透吗?
Section titled “支持子网代理 / 内网穿透吗?”不支持 proxy_network、routes、子网代理与广播/组播。ESP32 只处理虚拟 IP 到虚拟 IP。
网络密钥怎么填?
Section titled “网络密钥怎么填?”在 [network_identity].network_secret 填与所有对端一致的字符串。不要提交真实密钥;main/easytier.toml 已被 .gitignore 忽略。
network_name 可以省略吗?
Section titled “network_name 可以省略吗?”如果写了 [network_identity] 表,network_name 必填。完全不写该表时,缺省网络名是 default。
为什么 ipv4 写错了不报错?
Section titled “为什么 ipv4 写错了不报错?”这是与上游 get_ipv4().parse().ok() 对齐的唯一例外:字符串类型正确但内容无法解析时静默忽略。结果可能是“既没有静态地址也没有 DHCP”,随后结构校验失败。
ipv4 和 dhcp 能同时写吗?
Section titled “ipv4 和 dhcp 能同时写吗?”可以,但静态地址优先,dhcp 被关闭。建议只写一个。
为什么从上游复制的 listeners 没生效?
Section titled “为什么从上游复制的 listeners 没生效?”组件不实现监听,也不解析该字段;不支持的字段统一忽略且不报错。见 能力矩阵。
MTU 能设多大?
Section titled “MTU 能设多大?”576..1380,缺省 1380。超过 1380 会构造失败。
为什么 start() 成功但网络没通?
Section titled “为什么 start() 成功但网络没通?”start() 只创建资源。要等 NetworkReady 或 Status.state == Ready。中间还要 TCP、握手、路由同步、虚拟地址就绪。
为什么 Wi-Fi 重连后不通?
Section titled “为什么 Wi-Fi 重连后不通?”disconnect() 后组件不会自动恢复;Wi-Fi 重新取得 IP 后必须再次 connect()。
为什么 PeerDown 事件不产生?
Section titled “为什么 PeerDown 事件不产生?”它是预留事件,当前实现不产生。用 Status.direct_peer_count 与日志观察连接变化。
运行约 90 秒后路由消失?
Section titled “运行约 90 秒后路由消失?”0.0.2 已修复。先确认组件版本 ≥ 0.0.2;仍复现时记录组件版本、日志与状态快照。
能同时跑多个实例吗?
Section titled “能同时跑多个实例吗?”可以。每个 et::Inst 独占资源;注意内存、socket、虚拟网段与构造串行化。见 线程、回调与多实例。
支持 IPv6 吗?
Section titled “支持 IPv6 吗?”入口 URI 不支持 IPv6;虚拟网络当前是 IPv4。
TCP 传输有 TLS 吗?
Section titled “TCP 传输有 TLS 吗?”没有。传输层是明文 TCP;数据面由 AES-128-GCM 保护。不要在不可信网络上关闭加密。
内存不够怎么办?
Section titled “内存不够怎么办?”开 PSRAM → 降连接槽/队列/RPC 重组槽 → 降栈(先确认高水位)→ 减少实例。见 内存与资源。
为什么构造 Inst 的任务栈要大?
Section titled “为什么构造 Inst 的任务栈要大?”TOML 解析是递归下降,Inst 构造也在调用者栈上完成。建议 ≥ 8 KiB,并用高水位核对。
可以在事件回调里 stop() 吗?
Section titled “可以在事件回调里 stop() 吗?”不可以。回调在控制面任务中同步执行,stop() 会等待该任务退出,导致死锁。析构同理。
宿主构建能跑吗?
Section titled “宿主构建能跑吗?”start()/stop() 在宿主构建返回 ESP_ERR_NOT_SUPPORTED;纯逻辑模块可以在宿主侧编译测试,但当前仓库没有 tests/ 目录。