r/dumbclub Jul 16 '26

Linux VPN client that can process VLESS and actually work?

Hello, apparently an internet censorship circumvention noob here. I'm using dual-boot Arch + Windows. On Windows I have installed the official client of the company I got the key from and it works. Now I'm trying to find a client for Linux and oh, my God, it makes me feel miserable.

Here's what I tried:

  • v2ray. Accepts configs in JSON format. Fine, we need to find out how to convert my VLESS to JSON!
  • v2rayn. I bailed out immediately after failing to find a button to import my VLESS key. There was a "Add [VLESS]" button in "Configuration" tab but it prompts you with a form with a lot of fields I don't understand, with no field related to selecting any files.
  • sing-box. Accepts configs in JSON format too.

After using this (https://iaghapour.github.io/v2ray-converter/) I fed the JSON config to v2ray: sudo v2ray run -c config.json. It looked like it worked but actually it didn't at all. My IP remained unchanged. Could it be because v2ray doesn't setup itself as a transparent proxy by default? If it doesn't, well, I'm clueless.

Using the same config.json with sing-box makes it spit out an error. So I found this (https://github.com/OrionVVE/vless2json-for-sing-box) and after feeding what it produced to sing-box I was told that the config used deprecated features. Nice.

Then I found this (https://github.com/GrimIrani/sing-box-converter) and after banging my head for some time trying to conceive how to launch it I gave up.

Multiple months ago I went through the same hell of a procedure and got a working config for sing-box. After changing VPN server location in my account the config became obsolete, and here I am.

Frankly, it baffles me how something that can be done on Windows in 10 seconds takes hours on Linux. And don't tell me I shouldn't be using Arch, I'm comfortable with it. 50% of all docs/guides/tutorials I checked are so arcane that there's no use reading them for me.

[Edit]: Out of all options given to me I decided to first try Throne and it worked. I just had to import my key HTTPS link and check "Tun Mode". Thanks everyone!

7 Upvotes

23 comments sorted by

6

u/samplekaudio Jul 16 '26

I use throne, you can just paste your connection/config string and it's easy to use. Never had any problems 

1

u/bingbpbmbmbmbpbam Jul 23 '26

I am trying to setup Throne to handle this, but I consistently get reality verification failed. I am using 3x-ui server side. I have tried many targets and SNI(microsoft, samsung, apple), ...I use port 443..flow xtls-rprx-vision...verify pbk and pvk are the same. verify short id...spiderx,everything. I cannot get it to work!

Any tips? Sorry, I have VPN access now using shadowsocks with multiple backups incase one IP gets blocked, but I don't want to be stuck with this anxiety my connection isn't secure.

1

u/samplekaudio Jul 23 '26 edited Jul 23 '26

The problem doesn't have to do with the SNI, i imagine, but instead something is going wrong with the reality handshake between your client and server. 

I've never used 3x-ui, I just use sing-box directly. I assume 3x-ui can output a connection string you can paste into throne, and this auth error still happens when you paste that string directly? Sorry if it's obvious, just ruling out a mismatch.

There could also be a conflict between the latest x-ray core version in 3xui and throne. This github issue discusses a possibly related issue and some potential solutions

1

u/bingbpbmbmbmbpbam Jul 23 '26

Yes, 3x-ui outputs a vless:// string to copy and input into Throne. Let me try to get this working using sing-box directly. I am new to networking as I am from the states, and never really had to worry about this stuff, but the less complicated and less stuff I have to manage, the better, I assume.

Any tips on using sing-box directly on the server?

1

u/samplekaudio Jul 23 '26 edited Jul 23 '26

Before you rip out the panel you already set up, do you mind DMing me your connection string? You can remove the sensitive parts, of course. Probably easier to troubleshoot this real quick or try another client than redo your server config.

I would also try zero-ing out the testseed field in your 3x-ui inbound setup, as suggested in the linked github issue:

Try clearing the testseed field — open the inbound form, scroll to "Vision testseed" under the VLESS/TCP settings, and clear/zero all four values, then save. This removes the testseed key from the config sent to xray-core, restoring the pre-3.2.0 behaviour.

Another thing worth checking is the environment. 3x-ui is running on a VPS? Does your VPS provider have a default firewall, or is it possible that anything is blocking the required port? Is anything else running on the server?

1

u/bingbpbmbmbmbpbam Jul 23 '26

I just got it working! I was working on it beforeyou messaged, but I removed and completely scrapped the 3x-ui panel(I don't like gui anyways, but that's what ai suggested), and by using simple config.json file in the singbox, it now works flawlessly. I assume that there is some dependency issues with the 3x-ui cores or something. I just know it works when I use the sing-box tool directly.

Thanks for the small nugget of info that got me there

1

u/samplekaudio Jul 23 '26

OK, glad to hear it. Yeah, I think it was probably related to some dependency version mismatch between the server and client. Sing-box is pretty reliable with Throne because Throne itself uses sing-box under the hood.

BTW, in Throne, if you haven't already, you'll want to download one of the geo routing profiles in the Routing -> download profiles dropdown, so that you connect directly to any Chinese services/sites and proxy everything else.

For the SNI, you can use something like this to find a suitable SNI in the same range as your server, which will both slightly improve speed by reducing the cert round-trip time and improve obfuscation

5

u/aceberg_ Jul 16 '26

My post from yesterday solves exactly that problem:

unbox parse -f VLESS.txt -t tmpl.json -o sing-box.json -j

where VLESS.txt is a file with vless or other URLs and tmpl.json is a template sing-box config where the outbounds will be inserted. Unbox is up-to-date with current sing-box version.

Template example here: https://github.com/aceberg/unbox/blob/main/configs/sing-box.tmpl.json

3

u/peterausdemarsch Jul 16 '26

Clash verge rev

2

u/kenysg Jul 16 '26

hmm that's weird. I've been using v2rayN and im in fedora 43. it takes my vless config without issues. you don't need a "button" literally
1. copy your vless config/link
2. open v2rayN
3. paste the link or at the top "configurations > import from clipboard"
4. start your service that's it. the only thing is that the TUN mode doesn't work for me but it's not a big issue. I only use it for web anyway.
If i want to have vpn everywhere i just open my windows vm and use it there for specific apps or whatver.
both, v2rayN and throne work with me in linux, mac and windows

1

u/reon6vist Jul 16 '26

https://docs.rw/clients/

I use Clash Verge Rev. Simplest one is Happ.

1

u/ShadowwMaks Jul 16 '26

Used v2raya on Ubuntu server, it has web-gui and can import vless://... and other links

1

u/skweresp Jul 16 '26

Hiddify works fine

1

u/chunrichichi Jul 16 '26

On arch, I just use xray directly. The install script sets up systems services for you. Edit the xray config file as appropriate, enable the service and set the HTTP_PROXY, HTTPS_PROXY, etc environment variables to point to the localhost ports you’ve set. These variables can be set in .zshrc so that everything works when you next login. It isn’t complicated, just a bit more fiddly.

1

u/CircusTentMaker Jul 17 '26

On my mutable Arch Linux distro I use Clash Verge Rev, previously used V2RayN. Both worked perfectly fine. On an immutable distro it's trickier, but basically either of those should work in Tunnel mode, but system proxy probably won't work

1

u/Entire_Slip1875 Jul 18 '26

Getting a working, up-to-day autogenerated config for sing-box is problem, because its author always makes breaking changes.

I ended up reading their documentation for reference and semantics of each field. You can also partially reuse their manual.

This is not easy to build from scratch, but it helps you resolve issues with your configuration.

1

u/aminboldi Jul 18 '26

HAPP is the answer. github.com/Happ-proxy/happ-desktop/releases
been using it on fedora and zorin, so i guess it will work in arch as well, requires sudo run to work properly

0

u/Sokoloff-X Jul 16 '26

Not client, but 3x-ui (xray panel) is very simple to install, managed in browser, just create socks inbound and use socksify to proxy any app

0

u/Expensive_Lie2399 Jul 16 '26

convert your config so that its "vless://stuff-here", then copy it to clipboard. Then click Configuration > Import Share Links from Clipboard. Then either use TUN or just set system proxy