Skip to content

[Feature Request] 建议增加按目标节点指定传输通道(P2P/中继)的功能 #189

Description

@NANAN-BOY

这个功能请求是否与某个问题相关?请描述。

目前,VNT 通过 --relay-only(或 --use-channel relay)等参数支持全局通道选择,默认则为自动协商。但目前无法针对单个目标节点单独指定传输通道(P2P 直连或中继转发)。

在实际场景中,这种灵活性很有必要:

某个特定节点(如 10.26.0.1)可能位于严格的防火墙后面(出口丢弃UDP包,导致打洞成功但网络几乎无法联通,vnt目前也不会对这种情况检测并切换),只能通过中继服务器访问。

而其他节点(如 10.26.0.2、10.26.0.3)则在同一局域网内,P2P 直连质量很好。

如果全局启用 --relay-only,所有流量都会走中继,这会不必要地增加延迟,并给中继服务器增加额外的负载。反之,如果不启用,则问题节点可能无法连接或连接不稳定。

描述你期望的解决方案

我希望 VNT 能支持客户端为单个目标节点指定首选或强制的传输通道(P2P 或中继)。

可能的实现方式:

命令行按节点参数:例如 --peer-channel <节点IP>=<relay|p2p|auto>

扩展路由表:在现有的路由表(--route)中增加通道类型字段

配置文件支持:在 vnt.yml 或类似配置文件中为每个节点指定通道偏好

示例:
text

vnt-cli --peer-channel 10.26.0.1=relay --peer-channel 10.26.0.2=p2p

描述你考虑过的替代方案

目前的变通方案是使用全局 --relay-only 参数,但这会强制所有流量经过中继服务器,会降低与 P2P 连接良好的节点之间的性能,同时浪费中继服务器的带宽。

另一个替代方案是手动重启客户端并切换参数,但这很不方便,而且会中断现有连接。

补充背景信息

从 --route 命令的输出可以看到,我的设备与不同节点之间同时存在多种连接路径(有些是通过 TCP 中继 tcp@103...11:*****(HongKong),有些是通过 P2P 直连 192.168.5.x:xxxxx)(Mainland)。这说明底层架构已经具备同时管理多个通道的能力,将其扩展为允许用户按节点指定通道偏好,在技术上是可行的。

这个功能将大大增强 VNT 在混合网络环境(如家庭/办公 VPN、物联网部署)中的灵活性,让用户能针对不同节点兼顾稳定性和性能。

感谢开发者

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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