Skip to content

v2raya: update to 2.5.13 - #31261

Open
amrfateem wants to merge 2 commits into
openwrt:masterfrom
amrfateem:v2raya-2.5.13-r10
Open

amrfateem wants to merge 2 commits into
openwrt:masterfrom
amrfateem:v2raya-2.5.13-r10

Conversation

@amrfateem

Copy link
Copy Markdown

This updates net/v2raya to 2.5.13 and adds net/v2raya-core. Since 2.5.x
v2rayA runs only its own v2raya_core, so the old xray-core dependency no
longer works.

The service package keeps the OpenWrt defaults that were added for the
2.2.7 package and the ones that matter on a small router:

  • br-lan is not excluded from transparent proxy;
  • DNS hijacking stays off, including the migration default for old
    databases;
  • QUIC sniffing on, so HTTP/3 traffic matches domain rules;
  • warn-level logging and one day of log retention;
  • GOMEMLIMIT=64MiB, GOMAXPROCS=2, a 16384 descriptor ceiling and no core
    dumps.

It also fixes the transparent-proxy stop path. v2rayA 2.5.13 can skip
its cleanup after a process restart, or when no core process is tracked,
leaving the nft table and fwmark rule behind and blackholing traffic.
patches/011-clean-residual-transparent-rules.patch makes the API stop
path clean up unconditionally, and the init script's stop_service removes
any residual state.

It also installs /usr/libexec/v2raya-detect, a read-only helper that the
updated LuCI app uses for its overview page. It only reports installed
cores and services; it never changes anything. The LuCI app degrades
cleanly when the helper is absent.

GeoIP/GeoSite data stays optional. The existing v2ray-geoip and
v2ray-geosite packages install to /usr/share/v2ray, which the init
script uses. The old GeoIP parser patch is removed because 2.5.13 already
contains that fix.

I built both packages in the 25.12.6 ipq40xx SDK and inspected the
resulting packages. The same 2.5.13 source and packaging defaults run on
an OpenWrt 25.12 ipq40xx router: the service and core start and the
transparent proxy passes LAN traffic. The fresh database defaults were
checked for the bridge, DNS, sniffing and memory settings.

Both stop paths were tested from a LAN client: the 2017 panel's stop API
and /etc/init.d/v2raya stop. The client kept direct internet, the nft
table and fwmark rule were gone, and the proxy returned on start. A full
reboot also restored the firewall, NAT and proxy.

The MIPS service path was not run on hardware; it uses CGO because the
SQLite driver needs it there.

I used an AI assistant to help draft the packaging and this description.
I reviewed every line, built both packages, and tested the result on the
router before submitting. I understand the change and take responsibility
for it.

Add the matching v2raya_core binary from the same source tarball. The
service and core must always be installed at the same version.

v2raya_core is MPL-2.0 and is pure Go; CGO stays disabled on every
target. The service keeps CGO for mips and loong64, where its SQLite
driver needs it.

Signed-off-by: Amr Fateem <amr.fateem@yahoo.com>
Update v2rayA to 2.5.13 and switch to the bundled v2raya_core. Since
2.5.x the service no longer works with an external xray-core.

Keep the OpenWrt defaults that matter on a router: the LAN bridge stays
in transparent proxy, DNS hijacking stays off, QUIC sniffing stays on,
and the Go memory, descriptor and logging defaults are sized for 256 MB
devices. Carry those defaults in patches/010-openwrt-defaults.patch so a
changed source file fails the build. Install the small read-only detection
helper used by the LuCI overview.

Clean residual transparent-proxy state on both stop paths. v2rayA can
skip the cleanup after a process restart or when no core process is
tracked, leaving the nft table and fwmark rule behind and blackholing
traffic. Add patches/011-clean-residual-transparent-rules.patch and
clean up in the init script's stop_service.

Drop the GeoIP parser patch; the fix is in 2.5.13. Rule data continues to
come from the existing v2ray-geoip and v2ray-geosite packages.

Signed-off-by: Amr Fateem <amr.fateem@yahoo.com>
@openwrt openwrt Bot added the Add package label Nov 12, 2026
amrfateem added a commit to amrfateem/luci-V2raya-NextGen that referenced this pull request Nov 12, 2026
openwrt/packages#31261 is open and ready for review; openwrt/luci#9243 is open as a draft until the package PR merges. Record the formality results, the stop-path LAN tests and the updated branch names.

Signed-off-by: Amr Fateem <amr.fateem@yahoo.com>
@GeorgeSapkin

Copy link
Copy Markdown
Member

Please don't open multiple PRs for the same change 1, use the PR template, and don't copy-paste a wall of text description.

At a glance the new core package should be a sub package of the existing one.

Footnotes

  1. v2raya: update to 2.5.13 #31203 ↩

@GeorgeSapkin GeorgeSapkin added needs work AI It looks like this is issue or pull request was created by AI or it includes AI comments needs run-testing labels Nov 12, 2026
Comment thread net/v2raya/test.sh

case "$1" in
v2raya)
/usr/bin/v2raya --version | grep -F "$2"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is already what the default version check does, so this is redundant.

@openwrt-ai openwrt-ai left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Commit checks

  • c316a9e "v2raya: update to 2.5.13": the body leaves out several changes in the diff. It does not mention the new +nftables/+ip-full/+kmod-tun dependencies, the switch from the /etc/v2raya/ conffile to /lib/upgrade/keep.d, or the new UCI options (baseurl, core_startup_timeout, gomemlimit, gomaxprocs, gogc, nofile, redirect_respect_bound_device).

Generated by Claude Code

# v2rayA normally removes its tproxy rules on SIGTERM, but a killed
# process or a proxy-only stop can leave them behind. Remove any
# residual state so stopping the service always restores connectivity.
nft delete table inet v2raya 2>/dev/null

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The cleanup leaves out the DNS-interception table that v2rayA installs separately (table inet v2raya_dns at dns_redirect.go:14). If that table is left behind, the router's own port-53 traffic keeps going to a listener that has stopped, so DNS breaks when DNS hijack is enabled.

Suggested change
nft delete table inet v2raya 2>/dev/null
nft delete table inet v2raya 2>/dev/null
nft delete table inet v2raya_dns 2>/dev/null

Generated by Claude Code

# Copyright (C) 2021 Tianling Shen <cnsztl@immortalwrt.org>
# SPDX-License-Identifier: GPL-3.0-only
#
# Copyright (C) 2026 Amr Fateem <amr.fateem@yahoo.com>

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This drops the existing Copyright (C) 2021 Tianling Shen notice. Add your line next to it instead of replacing it, as the Makefile already does.

Suggested change
# Copyright (C) 2026 Amr Fateem <amr.fateem@yahoo.com>
# Copyright (C) 2021 Tianling Shen <cnsztl@immortalwrt.org>
# Copyright (C) 2026 Amr Fateem <amr.fateem@yahoo.com>

Generated by Claude Code

From 8a3f10e0295a1587fd4beef414386290aca89605 Mon Sep 17 00:00:00 2001
From: Amr Fateem <amr.fateem@yahoo.com>
Date: Wed, 11 Nov 2026 21:06:01 +0200
Subject: [PATCH] openwrt: clean residual transparent-proxy rules on stop

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a generic bug fix in v2rayA's process manager and is not specific to OpenWrt. It should therefore be sent upstream. Please add the upstream PR link or an Upstream-Status: line to the patch header.


Generated by Claude Code

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

Labels

Add package AI It looks like this is issue or pull request was created by AI or it includes AI comments needs run-testing needs work

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants