Skip to content

Windows 下 faketcp 连接失败,回退逻辑可能有问题 #207

@SeletubbY

Description

@SeletubbY

尝试faketcp协议但是无法运行,于是让codex检查了一下bug,请看如下:

Bug: Windows 下 faketcp 连接失败,回退逻辑把 ip:port 当作网卡名

环境信息

  • 客户端项目: ldoubil/astral
  • 平台: Windows
  • 目标节点: faketcp://<server_ip>:11013
  • 服务端 EasyTier 已正常监听 faketcp(同时也监听 tcp/udp)

问题现象

客户端连接 faketcp 时反复报错:

连接到节点错误。目标: faketcp://<server_ip>:11013, IP版本: V4, 错误: Err(TunnelError(IOError(Custom { kind: NotFound, error: "Network interface '<local_ip>:<ephemeral_port>' not found" })))

预期行为

  • Windows 下 faketcp 应该正常使用 WinDivert 驱动工作。
  • 如果 WinDivert 初始化失败,fallback 逻辑也不应把 ip:port 当作网卡名传入。
  • 错误信息应明确指向驱动/权限/依赖问题,而不是网卡不存在。

实际行为

  • 连接流程出现 WinDivert 初始化失败后 fallback。
  • fallback 传入了 local_addr.to_string()(例如 <local_ip>:<ephemeral_port>)给 PnetTun::new(interface_name, ...)
  • PnetTun 内部按“网卡名”查找接口,最终报 Network interface '<local_ip>:<ephemeral_port>' not found

疑似问题点

  1. Windows 分支 fallback 逻辑(把 local_addr.to_string() 当作 interface_name

文件: rust/easytier/src/tunnel/fake_tcp/netfilter/mod.rs

Ok(Arc::new(pnet::PnetTun::new(
    local_addr.to_string().as_str(),
    pnet::create_packet_filter(None, local_addr),
)?))

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions