github lilendian0x00/xray-knife v11.1.0
Xray-knife v11.1.0

3 hours ago

πŸš€ 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

Don't miss a new xray-knife release

NewReleases is sending notifications on new releases.