Skip to content

Xray-knife v11.1.0

Latest

Choose a tag to compare

@lilendian0x00 lilendian0x00 released this 05 Sep 21:51

🚀 Xray-knife v11.1.0 (JOIN THE TELEGRAM CHANNEL)

https://t.me/lilendian0x00

Two annoying bugs squashed and two new things. If your speed tests have been showing 0 since v11, or if go install suddenly stopped compiling, this release is for you. 🛠️

Nothing breaks. No flags moved, no names changed — upgrade and carry on.


📉 Speed test always showed 0

Ran --speedtest on v11 and got this in your CSV? 😤

link,status,delay,download,upload
vless://...,passed,134,0,0

The config passed. The delay was measured. The speed was just… zero. 🙃

Here's what was happening. The test tries to move 10 MB in each direction (--amount) and gives each direction 30 seconds (--speedtest-timeout). v11 treated that clock as a pass/fail deadline — if the transfer didn't finish in time, the whole measurement was thrown away and written as 0.

Do the math: anything slower than ~2.7 Mbps scored a flat zero. Which is exactly the kind of link you most wanted a real number for. 😩

The clock is now a measuring window, not a deadline. Whatever moved inside it gets measured, so slow links report their actual speed:

Link Before Now
1.2 Mbps proxy 0 1.19

Only a transfer that moved nothing at all still counts as a failure — and when that happens, single-config mode now prints the reason instead of leaving you staring at a silent 0. 🔍

Thanks @Jaymz665 for the report (#69). 🙏


🔨 Building from source broke on Go 1.27

If you tried to install from source recently, you got a wall of linker noise ending in this: 💥

# github.com/lilendian0x00/xray-knife/v11
github.com/sagernet/sing-box/transport/v2rayhttp.ResetTransport:
relocation target golang.org/x/net/http2.(*Transport).connPool not defined

Nothing to do with your setup. 🤷 Go 1.27 rebuilt its HTTP/2 library as a thin shim over the standard library, and an internal piece that sing-box borrowed through a linker trick disappeared along with it — so the binary simply refused to link.

Fixed by moving up to sing-box 1.14, which dropped that trick entirely. Compiles cleanly on Go 1.26 and 1.27 again. ✅

go install github.com/lilendian0x00/xray-knife/v11@latest

Thanks @clin1234 for the report (#64). 🙏


🔐 New: certificate pinning (pcs) in share links

Configs that pin their server certificate were silently losing the pin. 🫠 The pcs parameter (pinnedPeerCertSha256 in xray-core) was dropped on parse, so it never reached the TLS handshake — and it vanished from the link if you re-exported it.

Now it's parsed, applied, and kept. Works on vless, trojan and vmess:

xray-knife http -c "vless://uuid@example.com:443?security=tls&sni=example.com&pcs=0123456789abcdef...cdef"
  • 🔗 Multiple pins, comma-separated
  • 🔤 Hex with or without OpenSSL colons (01:23:45:...)
  • ♻️ Preserved when a link is regenerated, and shown in parse output

Thanks @mdjvd for the request (#65). 🙏


🍓 New: 32-bit ARM builds

Running xray-knife on an older router or a Raspberry Pi with a 32-bit OS? There's a build for you now — grab linux-arm32-v7a from the assets below. 📦

Building it yourself works the same way:

./build.sh linux armv7

📦 Install

Grab a prebuilt binary from the assets below, or install with Go:

go install github.com/lilendian0x00/xray-knife/v11@latest

Full Changelog: v11.0.0...v11.1.0