Update : 23/10/2021 > As there’s a official CLI out there, I’m updating the post with instructions for that too.

Cloudflare’s Warp is a great service to re-route DNS query and bypass blocked website. Though it has clients for Windows, Mac, Android, IOS it doesn’t have a Warp client for Linux. Still we can use an unofficial client to get our work done. It has clients for Windows, Mac, Linux, Android, IOS. You can use it in Linux through the official CLI client or with WGCF.

Method 1 : WARP Desktop Client

Head over to this page and follow the instructions to setup repository for your distro.

Installation

  • Ubuntu : sudo apt install cloudflare-warp
  • RHEL/CentOS : sudo yum install cloudflare-warp
  • Arch : yay -Syu cloudflare-warp-bin

Register and Connect

You have to register for the first time

warp-cli register

Now connect to WARP

warp-cli connect

Run curl https://www.cloudflare.com/cdn-cgi/trace/ if the output shows warp=on you’re successfully connected to WARP.

To disconnect from WARP

warp-cli disconnect

Enable Service

You can enable WARP service if you don’t want to enter password after every boot.

systemctl enable --now warp-svc

Always Stay Connected to WARP

You may want to use WARP all the time. To do that run this command.

warp-cli enable-always-on

Or else it’s not necessary.

To check all available commands run warp-cli -h.

Method 2 : WGCF

WGCF is an unofficial, cross-platform CLI for Cloudflare Warp. It works with Wireguard. So before installing WGCF make sure you’ve installed

  • wireguard-tools

  • wireguard-dkms (if you’re using a Linux Kernel older than 5.6)

  • resolvconf (as @fazlerabbi informed me that he couldn’t find resolvconf preinstalled on some operating systems)

Note : You’ve to restart your system if you install wireguard-dkms.

You can install pre-compiled binary file from it’s releases or you can install it from AUR if you’re using Arch derivatives.

Install binary package

Download the package you need from release page. Then rename the file wgcf, make it executable and copy it to /bin directory.

chmod +x wgcf
sudo cp wgcf /bin

Or you can install from AUR if you use Arch

yay -S wgcf

Now we will create a Warp account

wgcf register

And generate a Wireguard configuration using that account information

wgcf generate

We’ve to connect to Warp using that Wireguard configuration. It’d be much easier if you put that configuration file in /etc/wireguard

sudo cp wgcf-profile.conf /etc/wireguard

Let’s connect now

wg-quick up wgcf-profile

If you want to disconnect, run

wg-quick down wgcf-profile

Probably you’d like to run Warp every time when your system boots. You can do that with help of systemd

systemctl enable --now wireguard@wgcf-profile

Troubleshoot

I’m facing some issue frequently. For some unknown reason Wireguard can’t connect through my generated configuration profile multiple times. I’ve found a way out to resolve that. If you face the same issue you’ve to delete the previous profiles and regenerate new one, except your account profile. To do that you can run this :

sudo rm -rf wgcf-profile.conf && wgcf generate && sudo rm -rf /etc/wireguard/wgcf-profile.conf && sudo cp wgcf-profile.conf /etc/wireguard

Now start the service again. If you want, you can set an alias for this or make a bash script for convenient usage.

Getting Warp Plus Data for Free

There’s a python script from alilapro to get free Warp Plus data. We can use that Warp Plus data in Linux also. But we need to get a Device ID to run that. To do that go to wgcf-account.toml and copy the device id. You can use that ID in alilapro script to get free Warp Plus data.

  • Open 1.1.1.1 app. I’m using Android here.

  • From hamburger menu go to Account > Key. Copy the key and save it somewhere else we will need this.

  • Go to Advanced > Diagonistics (optional)

  • Under Client Configuration you’ll see a ID. Copy that and save it. (optional)

Now we’ve to put our license key into wgcf-account.toml. Open the toml file, replace the existing license key with yours and update your configuration profile using wgcf update and repeat the previous process.

wgcf update
sudo cp wgcf-profile.conf /etc/wireguard

Now you can use Device ID which you got from toml file or Configuration ID of your 1.1.1.1 in alilapro script.