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、物联网部署)中的灵活性,让用户能针对不同节点兼顾稳定性和性能。

感谢开发者

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