Skip to content

VLESS xtls-rprx-vision flow conflicts with gRPC when using the same UUID across multiple inbounds #1127

@L3105180447

Description

@L3105180447

Description

There is a configuration conflict when a single user (same UUID) is shared across multiple VLESS inbounds with different transport protocols in the panel.

Specifically, if I want to create two inbounds for the same user (same UUID):

  1. Inbound A: VLESS + TCP + REALITY
  2. Inbound B: VLESS + gRPC + TLS

For Inbound A to work optimally with REALITY, the user's Flow must be set to xtls-rprx-vision.
However, because the Flow setting in the panel is tied to the user level (UUID) rather than the transport level, Inbound B (gRPC) inherits the xtls-rprx-vision flow.

According to Xray-core specifications, xtls-rprx-vision is strictly for TCP and is incompatible with gRPC/WebSocket. This inheritance causes a fatal protocol conflict, breaking the gRPC connection completely.

The Dilemma

Currently, I can only enable or disable xtls-rprx-vision globally for this UUID.

  • If enabled: Inbound A (REALITY) works, but Inbound B (gRPC) breaks.
  • If disabled: Inbound B (gRPC) works, but Inbound A loses the anti-detection benefits of Vision.

Expected Behavior / Suggested Fix

The panel should smartly handle the flow setting to prevent this conflict. Two possible solutions:

  1. Auto-Striping: When generating the Xray config file (or in the UI logic), if the inbound's transport network is set to grpc or ws, the panel should automatically ignore or strip the flow: xtls-rprx-vision setting for the clients within that specific inbound, even if the user has it enabled.
  2. Per-Inbound Flow Override: Allow users to override or disable the flow setting at the inbound level, decoupling it from the global UUID database.

Steps to Reproduce

  1. Create a VLESS + TCP + REALITY inbound. Add a user and enable xtls-rprx-vision.
  2. Create a second inbound using VLESS + gRPC + TLS.
  3. Add the exact same user (same UUID) to the second inbound.
  4. Notice that the gRPC inbound fails to connect because Xray rejects vision flow over gRPC.

Hope this logic can be optimized to allow multi-protocol sharing for the same UUID safely. Thank you for your amazing work!

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingto deployConsiderable for implementation

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions